[FFmpeg-devel] [PATCH v2 1/3] avformat/mxfenc: use track count to generate component instance uuid
Tomas Härdin
tjoppen at acc.umu.se
Wed Nov 29 11:36:55 EET 2017
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
>
> // write user comment refs
> if (mxf->store_user_comments) {
> @@ -1402,12 +1401,14 @@ static void mxf_write_package(AVFormatContext *s, MXFPackage *package)
> mxf_write_track(s, mxf->timecode_track, package);
> mxf_write_sequence(s, mxf->timecode_track, package);
> mxf_write_timecode_component(s, mxf->timecode_track, package);
> + mxf->track_uuid_offset++;
>
> for (i = 0; i < s->nb_streams; i++) {
> AVStream *st = s->streams[i];
> mxf_write_track(s, st, package);
> mxf_write_sequence(s, st, package);
> mxf_write_structural_component(s, st, package);
> + mxf->track_uuid_offset++;
>
/Tomas
More information about the ffmpeg-devel
mailing list