Index: libavformat/matroskadec.c =================================================================== --- libavformat/matroskadec.c (revision 19123) +++ libavformat/matroskadec.c (working copy) @@ -991,12 +991,19 @@ char key[1024]; int i; +// if(list->nb_elem > 0) +// printf("\nmatroska_convert_tag() # of elements: %u\n", list->nb_elem); + for (i=0; i < list->nb_elem; i++) { const char *lang = strcmp(tags[i].lang, "und") ? tags[i].lang : NULL; - if (prefix) snprintf(key, sizeof(key), "%s/%s", prefix, tags[i].name); - else av_strlcpy(key, tags[i].name, sizeof(key)); + if (prefix) { + snprintf(key, sizeof(key), "%s/%s", prefix, tags[i].name); + } else { + av_strlcpy(key, tags[i].name, sizeof(key)); + } + if (tags[i].def || !lang) { - av_metadata_set(metadata, key, tags[i].string); + av_metadata_set(metadata, key, tags[i].string); if (tags[i].sub.nb_elem) matroska_convert_tag(s, &tags[i].sub, metadata, key); } @@ -1016,6 +1023,7 @@ MatroskaTags *tags = matroska->tags.elem; int i, j; +// printf("matroska_convert_tags() total num. elements: %i\n", matroska->tags.nb_elem); for (i=0; i < matroska->tags.nb_elem; i++) { if (tags[i].target.attachuid) { MatroskaAttachement *attachment = matroska->attachments.elem; @@ -1037,6 +1045,9 @@ &track[j].stream->metadata, NULL); } else { matroska_convert_tag(s, &tags[i].tag, &s->metadata, NULL); + if(tags[i].target.typevalue && tags[i].target.type) { + matroska_convert_tag(s, &tags[i].tag, &s->metadata, tags[i].target.type); + } } } }