Previously, the Matroska tag names were structured like this: [<TargetType>/]<TagName> This lead to an issue when <TargetType> is not available: the different levels tags overwrite each other when they have the same name.
This patch transforms the name prefix into: <TargetTypeValue>[-<TargetType>]/<TagName> As the TargetTypeValue has default value in case it has no data, it prevents from overriding of other levels tags. --- libavformat/matroskadec.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d788232..d7d0e54 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1460,8 +1460,16 @@ static void matroska_convert_tags(AVFormatContext *s) i, tags[i].target.trackuid); } } else { - matroska_convert_tag(s, &tags[i].tag, &s->metadata, - tags[i].target.type); + char *prefix; + if (tags[i].target.type) + prefix = av_asprintf("%"PRIu64"-%s", + tags[i].target.typevalue, + tags[i].target.type); + else + prefix = av_asprintf("%"PRIu64, tags[i].target.typevalue); + + matroska_convert_tag(s, &tags[i].tag, &s->metadata, prefix); + av_free(prefix); } } } -- 2.7.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel