On Sat, Nov 15, 2014 at 02:04:56AM +0100, Tomas Härdin wrote: > On Wed, 2014-11-12 at 12:15 -0800, Mark Reid wrote: > > --- > > libavformat/mxfdec.c | 36 +++++++++++++++++++++++------------- > > 1 file changed, 23 insertions(+), 13 deletions(-) > > > > diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c > > index b533e2a..87f1e51 100644 > > --- a/libavformat/mxfdec.c > > +++ b/libavformat/mxfdec.c > > @@ -1424,6 +1424,27 @@ static int mxf_add_timecode_metadata(AVDictionary > > **pm, const char *key, AVTimec > > return 0; > > } > > > > +static MXFTimecodeComponent* mxf_resolve_timecode_component(MXFContext > > *mxf, UID *strong_ref) > > +{ > > + MXFStructuralComponent *component = NULL; > > + MXFPulldownComponent *pulldown = NULL; > > + > > + component = mxf_resolve_strong_ref(mxf, strong_ref, AnyType); > > + if (!component) > > + return NULL; > > + > > + switch (component->type) { > > + case TimecodeComponent: > > + return (MXFTimecodeComponent*)component; > > + case PulldownComponent: /* timcode component may be located on a > > pulldown component */ > > + pulldown = (MXFPulldownComponent*)component; > > + return mxf_resolve_strong_ref(mxf, &pulldown->input_segment_ref, > > TimecodeComponent); > > + default: > > + break; > > + } > > + return NULL; > > +} > > + > > static int mxf_parse_physical_source_package(MXFContext *mxf, MXFTrack > > *source_track, AVStream *st) > > { > > MXFPackage *temp_package = NULL; > > @@ -1432,7 +1453,6 @@ static int > > mxf_parse_physical_source_package(MXFContext *mxf, MXFTrack *source_t > > MXFStructuralComponent *component = NULL; > > MXFStructuralComponent *sourceclip = NULL; > > MXFTimecodeComponent *mxf_tc = NULL; > > - MXFPulldownComponent *mxf_pulldown = NULL; > > int i, j, k; > > AVTimecode tc; > > int flags; > > @@ -1475,19 +1495,9 @@ static int > > mxf_parse_physical_source_package(MXFContext *mxf, MXFTrack *source_t > > } > > > > for (k = 0; k < > > physical_track->sequence->structural_components_count; k++) { > > - component = mxf_resolve_strong_ref(mxf, > > &physical_track->sequence->structural_components_refs[k], > > TimecodeComponent); > > - if (!component){ > > - /* timcode component may be located on a pulldown > > component */ > > - component = mxf_resolve_strong_ref(mxf, > > &physical_track->sequence->structural_components_refs[k], > > PulldownComponent); > > - if (!component) > > - continue; > > - mxf_pulldown = (MXFPulldownComponent*)component; > > - component = mxf_resolve_strong_ref(mxf, > > &mxf_pulldown->input_segment_ref, TimecodeComponent); > > - if (!component) > > - continue; > > - } > > + if (!(mxf_tc = mxf_resolve_timecode_component(mxf, > > &physical_track->sequence->structural_components_refs[k]))) > > + continue; > > > > - mxf_tc = (MXFTimecodeComponent*)component; > > flags = mxf_tc->drop_frame == 1 ? > > AV_TIMECODE_FLAG_DROPFRAME : 0; > > /* scale sourceclip start_position to match physical track > > edit rate */ > > start_position = av_rescale_q(sourceclip->start_position, > > Looks simple enough. Good initiative :)
applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB During times of universal deceit, telling the truth becomes a revolutionary act. -- George Orwell
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel