avformat/matroskaenc: also write tags when output is WebM

WebM supports a subset of elements from the Tags master.
See https://www.webmproject.org/docs/container/#tagging

Reviewed-by: Ivan Janatra <janatra@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2017-06-01 23:47:32 -03:00
parent 260ea7a7b3
commit 27b7800ba9
1 changed files with 14 additions and 11 deletions

View File

@ -1681,17 +1681,20 @@ static int mkv_write_tags(AVFormatContext *s)
}
}
for (i = 0; i < s->nb_chapters; i++) {
AVChapter *ch = s->chapters[i];
if (mkv->mode != MODE_WEBM) {
for (i = 0; i < s->nb_chapters; i++) {
AVChapter *ch = s->chapters[i];
if (!mkv_check_tag(ch->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID))
continue;
if (!mkv_check_tag(ch->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID))
continue;
ret = mkv_write_tag(s, ch->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID, ch->id + mkv->chapter_id_offset, &mkv->tags);
if (ret < 0) return ret;
ret = mkv_write_tag(s, ch->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID, ch->id + mkv->chapter_id_offset, &mkv->tags);
if (ret < 0)
return ret;
}
}
if (mkv->have_attachments) {
if (mkv->have_attachments && mkv->mode != MODE_WEBM) {
for (i = 0; i < mkv->attachments->num_entries; i++) {
mkv_attachment *attachment = &mkv->attachments->entries[i];
AVStream *st = s->streams[attachment->stream_idx];
@ -1988,12 +1991,12 @@ static int mkv_write_header(AVFormatContext *s)
ret = mkv_write_attachments(s);
if (ret < 0)
goto fail;
ret = mkv_write_tags(s);
if (ret < 0)
goto fail;
}
ret = mkv_write_tags(s);
if (ret < 0)
goto fail;
if (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL) && !mkv->is_live)
mkv_write_seekhead(pb, mkv);