|
|
|
@@ -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) { |
|
|
|
|