Browse Source

matroska: Warn when metadata references a non-existent element

Avoid some confusion when the information is not present.

Bug-Id: 902
tags/n3.0
Luca Barbato 9 years ago
parent
commit
a0fa6d06b8
1 changed files with 37 additions and 6 deletions
  1. +37
    -6
      libavformat/matroskadec.c

+ 37
- 6
libavformat/matroskadec.c View File

@@ -1276,24 +1276,55 @@ static void matroska_convert_tags(AVFormatContext *s)
for (i = 0; i < matroska->tags.nb_elem; i++) {
if (tags[i].target.attachuid) {
MatroskaAttachment *attachment = matroska->attachments.elem;
for (j = 0; j < matroska->attachments.nb_elem; j++)
int found = 0;
for (j = 0; j < matroska->attachments.nb_elem; j++) {
if (attachment[j].uid == tags[i].target.attachuid &&
attachment[j].stream)
attachment[j].stream) {
matroska_convert_tag(s, &tags[i].tag,
&attachment[j].stream->metadata, NULL);
found = 1;
}
}
if (!found) {
av_log(NULL, AV_LOG_WARNING,
"The tags at index %d refer to a "
"non-existent attachment %"PRId64".\n",
i, tags[i].target.attachuid);
}
} else if (tags[i].target.chapteruid) {
MatroskaChapter *chapter = matroska->chapters.elem;
for (j = 0; j < matroska->chapters.nb_elem; j++)
int found = 0;
for (j = 0; j < matroska->chapters.nb_elem; j++) {
if (chapter[j].uid == tags[i].target.chapteruid &&
chapter[j].chapter)
chapter[j].chapter) {
matroska_convert_tag(s, &tags[i].tag,
&chapter[j].chapter->metadata, NULL);
found = 1;
}
}
if (!found) {
av_log(NULL, AV_LOG_WARNING,
"The tags at index %d refer to a non-existent chapter "
"%"PRId64".\n",
i, tags[i].target.chapteruid);
}
} else if (tags[i].target.trackuid) {
MatroskaTrack *track = matroska->tracks.elem;
for (j = 0; j < matroska->tracks.nb_elem; j++)
if (track[j].uid == tags[i].target.trackuid && track[j].stream)
int found = 0;
for (j = 0; j < matroska->tracks.nb_elem; j++) {
if (track[j].uid == tags[i].target.trackuid &&
track[j].stream) {
matroska_convert_tag(s, &tags[i].tag,
&track[j].stream->metadata, NULL);
found = 1;
}
}
if (!found) {
av_log(NULL, AV_LOG_WARNING,
"The tags at index %d refer to a non-existent track "
"%"PRId64".\n",
i, tags[i].target.trackuid);
}
} else {
matroska_convert_tag(s, &tags[i].tag, &s->metadata,
tags[i].target.type);


Loading…
Cancel
Save