[FFmpeg-devel] [PATCH v2 1/3] avformat/mxfenc: use track count to generate component instance uuid
Tomas Härdin
tjoppen at acc.umu.se
Thu Nov 30 19:01:12 EET 2017
On Wed, 2017-11-29 at 20:18 -0800, Mark Reid wrote:
> On Wed, Nov 29, 2017 at 1:36 AM, Tomas Härdin <tjoppen at acc.umu.se>
> wrote:
>
> > On 2017-11-29 05:11, Mark Reid wrote:
> >
> > > @@ -980,7 +980,7 @@ static void
> > > mxf_write_structural_component(AVFormatContext
> > > *s, AVStream *st, MXF
> > > // write uid
> > > mxf_write_local_tag(pb, 16, 0x3C0A);
> > > - mxf_write_uuid(pb, package->type == MaterialPackage ?
> > > SourceClip:
> > > SourceClip + TypeBottom, st->index);
> > > + mxf_write_uuid(pb, SourceClip, mxf->track_uuid_offset);
> > > PRINT_KEY(s, "structural component uid", pb->buf_ptr -
> > > 16);
> > > mxf_write_common_fields(s, st);
> > > @@ -1357,7 +1357,7 @@ static void
> > > mxf_write_package(AVFormatContext *s,
> > > MXFPackage *package)
> > > // write package umid
> > > mxf_write_local_tag(pb, 32, 0x4401);
> > > - mxf_write_umid(s, package->type == SourcePackage);
> > > + mxf_write_umid(s, package->instance);
> > > PRINT_KEY(s, "package umid second part", pb->buf_ptr - 16);
> > > // package name
> > > @@ -1375,10 +1375,9 @@ static void
> > > mxf_write_package(AVFormatContext *s,
> > > MXFPackage *package)
> > > // write track refs
> > > mxf_write_local_tag(pb, track_count*16 + 8, 0x4403);
> > > mxf_write_refs_count(pb, track_count);
> > > - mxf_write_uuid(pb, package->type == MaterialPackage ? Track
> > > :
> > > - Track + TypeBottom, -1); // timecode track
> > > + mxf_write_uuid(pb, Track, mxf->track_uuid_offset); //
> > > timecode track
> > > for (i = 0; i < s->nb_streams; i++)
> > > - mxf_write_uuid(pb, package->type == MaterialPackage ?
> > > Track :
> > > Track + TypeBottom, i);
> > > + mxf_write_uuid(pb, Track, mxf->track_uuid_offset + i +
> > > 1);
> > >
> >
> > Do these refer to tracks that are about to be written? Seems so as
> > best I
> > can tell, so I guess it works. I'd be happier if the referencing
> > was done
> > more explicitly rather than implicitly
>
>
> yes they refer to the tracks about to be written. Those uuids need to
> match
> the uuid instance tag (0x3C0A) on a track written in mxf_write_track.
> then
> the uuid ref on the track needs to match the one on the sequence, and
> then
> the one the sequence needs to match the one on the component.
>
> would you rather the instance id be a argument to each of the write
> functions? for example:
> mxf_write_package(AVFormatContext *s, MXFPackage *package, int
> track_uuid_offset)
> mxf_write_track(AVFormatContext *s, AVStream *st, MXFPackage
> *package, int
> instance_id)
> would that be more explicit?
I'm not quite sure tbh. It's been a few years since I worked with MXF,
so it's harder to say. Maybe a comment would be enough
/Tomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20171130/89bc53b9/attachment.sig>
More information about the ffmpeg-devel
mailing list