summaryrefslogtreecommitdiff
path: root/libavformat/matroskaenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-09-05 13:34:37 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-09-05 13:34:37 +0200
commit2230d85cebee829ad773e6bf0873fca98d7bc410 (patch)
treeb0ee28074d4f16621b6024631bcffe979a96a4f7 /libavformat/matroskaenc.c
parentb042712a875cbbaece4652aa572501a8cbc20051 (diff)
parent26b241c0791bfeb9df7b873da4dc74cce0c06be3 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: matroskaenc: Allow chapters to be written in trailer Conflicts: libavformat/matroskaenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r--libavformat/matroskaenc.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index aa979eab6e..b6cf9dd262 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -109,6 +109,7 @@ typedef struct MatroskaMuxContext {
int64_t cluster_time_limit;
uint32_t chapter_id_offset;
+ int wrote_chapters;
} MatroskaMuxContext;
@@ -790,7 +791,7 @@ static int mkv_write_chapters(AVFormatContext *s)
AVRational scale = {1, 1E9};
int i, ret;
- if (!s->nb_chapters)
+ if (!s->nb_chapters || mkv->wrote_chapters)
return 0;
ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_CHAPTERS, avio_tell(pb));
@@ -823,6 +824,8 @@ static int mkv_write_chapters(AVFormatContext *s)
}
end_ebml_master(pb, editionentry);
end_ebml_master(pb, chapters);
+
+ mkv->wrote_chapters = 1;
return 0;
}
@@ -1610,6 +1613,11 @@ static int mkv_write_trailer(AVFormatContext *s)
end_ebml_master(pb, mkv->cluster);
}
+ if (mkv->mode != MODE_WEBM) {
+ ret = mkv_write_chapters(s);
+ if (ret < 0) return ret;
+ }
+
if (pb->seekable) {
if (mkv->cues->num_entries) {
if (mkv->reserve_cues_space) {