[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