Merge remote-tracking branch 'qatar/master'
[ffmpeg.git] / libavformat / matroskaenc.c
index aa979ea..b6cf9dd 100644 (file)
@@ -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) {