mån 2020-07-20 klockan 08:15 +0200 skrev Andreas Rheinhardt:
> --- a/libavformat/mxfdec.c
> +++ b/libavformat/mxfdec.c
> @@ -2714,6 +2714,7 @@ static const MXFMetadataReadTableEntry
> mxf_metadata_read_table[] = {
>
> static int mxf_metadataset_init(MXFMetadataSet *ctx, enum MXFMetadataSetType
> type)
> {
> + ctx->type = type;
> switch (type){
> case MultipleDescriptor:
> case Descriptor:
> @@ -2734,7 +2735,8 @@ static int mxf_read_local_tags(MXFContext *mxf,
> KLVPacket *klv, MXFMetadataReadF
>
> if (!ctx)
> return AVERROR(ENOMEM);
> - mxf_metadataset_init(ctx, type);
> + if (ctx_size)
> + mxf_metadataset_init(ctx, type);
> while (avio_tell(pb) + 4 < klv_end && !avio_feof(pb)) {
> int ret;
> int tag = avio_rb16(pb);
> @@ -2770,7 +2772,6 @@ static int mxf_read_local_tags(MXFContext *mxf,
> KLVPacket *klv, MXFMetadataReadF
> * it extending past the end of the KLV though (zzuf5.mxf). */
> if (avio_tell(pb) > klv_end) {
> if (ctx_size) {
> - ctx->type = type;
> mxf_free_metadataset(&ctx, 1);
> }
>
> @@ -2781,7 +2782,6 @@ static int mxf_read_local_tags(MXFContext *mxf,
> KLVPacket *klv, MXFMetadataReadF
> } else if (avio_tell(pb) <= next) /* only seek forward, else this
> can loop for a long time */
> avio_seek(pb, next, SEEK_SET);
> }
> - if (ctx_size) ctx->type = type;
Looks OK as far as I can tell. It's been a while since I dug into
mxfdec's type system.
/Tomas
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".