Merge commit 'a0fa6d06b848f26b16ba12f0a9a4a85b93ab8022'

* commit 'a0fa6d06b848f26b16ba12f0a9a4a85b93ab8022':
  matroska: Warn when metadata references a non-existent element

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This commit is contained in:
Hendrik Leppkes 2015-12-07 14:51:23 +01:00
commit 0ecec7449c
1 changed files with 37 additions and 6 deletions

View File

@ -1405,24 +1405,55 @@ static void matroska_convert_tags(AVFormatContext *s)
for (i = 0; i < matroska->tags.nb_elem; i++) { for (i = 0; i < matroska->tags.nb_elem; i++) {
if (tags[i].target.attachuid) { if (tags[i].target.attachuid) {
MatroskaAttachment *attachment = matroska->attachments.elem; 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 && if (attachment[j].uid == tags[i].target.attachuid &&
attachment[j].stream) attachment[j].stream) {
matroska_convert_tag(s, &tags[i].tag, matroska_convert_tag(s, &tags[i].tag,
&attachment[j].stream->metadata, NULL); &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) { } else if (tags[i].target.chapteruid) {
MatroskaChapter *chapter = matroska->chapters.elem; 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 && if (chapter[j].uid == tags[i].target.chapteruid &&
chapter[j].chapter) chapter[j].chapter) {
matroska_convert_tag(s, &tags[i].tag, matroska_convert_tag(s, &tags[i].tag,
&chapter[j].chapter->metadata, NULL); &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) { } else if (tags[i].target.trackuid) {
MatroskaTrack *track = matroska->tracks.elem; MatroskaTrack *track = matroska->tracks.elem;
for (j = 0; j < matroska->tracks.nb_elem; j++) int found = 0;
if (track[j].uid == tags[i].target.trackuid && track[j].stream) 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, matroska_convert_tag(s, &tags[i].tag,
&track[j].stream->metadata, NULL); &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 { } else {
matroska_convert_tag(s, &tags[i].tag, &s->metadata, matroska_convert_tag(s, &tags[i].tag, &s->metadata,
tags[i].target.type); tags[i].target.type);