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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d788232..ba3c4e1 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1460,8 +1460,14 @@ static void matroska_convert_tags(AVFormatContext *s) i, tags[i].target.trackuid); } } else { + char prefix[1024]; + sprintf(prefix, "%" PRIu64, tags[i].target.typevalue); + if (tags[i].target.type) { + strncat(prefix, "-", sizeof(char)); + av_strlcat(prefix, tags[i].target.type, strlen(tags[i].target.type) - 22); + } matroska_convert_tag(s, &tags[i].tag, &s->metadata, - tags[i].target.type); + prefix); } } } -- 2.7.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel