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