@ -128,7 +128,7 @@ typedef struct MatroskaMuxContext {
AVPacket cur_audio_pkt ;
int have _attachments;
unsigned nb _attachments;
int have_video ;
int reserve_cues_space ;
@ -1113,7 +1113,6 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv,
AVDictionaryEntry * tag ;
if ( par - > codec_type = = AVMEDIA_TYPE_ATTACHMENT ) {
mkv - > have_attachments = 1 ;
return 0 ;
}
@ -1370,6 +1369,9 @@ static int mkv_write_tracks(AVFormatContext *s)
AVIOContext * pb = s - > pb ;
int i , ret , default_stream_exists = 0 ;
if ( mkv - > nb_attachments = = s - > nb_streams )
return 0 ;
mkv_add_seekhead_entry ( mkv , MATROSKA_ID_TRACKS , avio_tell ( pb ) ) ;
ret = start_ebml_master_crc32 ( & mkv - > tracks_bc , mkv ) ;
@ -1619,7 +1621,7 @@ static int mkv_write_tags(AVFormatContext *s)
}
}
if ( mkv - > have _attachments & & mkv - > mode ! = MODE_WEBM ) {
if ( mkv - > nb _attachments & & mkv - > mode ! = MODE_WEBM ) {
for ( i = 0 ; i < s - > nb_streams ; i + + ) {
mkv_track * track = & mkv - > tracks [ i ] ;
AVStream * st = s - > streams [ i ] ;
@ -1653,7 +1655,7 @@ static int mkv_write_attachments(AVFormatContext *s)
AVIOContext * dyn_cp = NULL , * pb = s - > pb ;
int i , ret ;
if ( ! mkv - > have _attachments)
if ( ! mkv - > nb _attachments)
return 0 ;
mkv_add_seekhead_entry ( mkv , MATROSKA_ID_ATTACHMENTS , avio_tell ( pb ) ) ;
@ -2499,9 +2501,12 @@ static int mkv_write_trailer(AVFormatContext *s)
put_ebml_float ( mkv - > info_bc , MATROSKA_ID_DURATION , mkv - > duration ) ;
end_ebml_master_crc32 ( pb , & mkv - > info_bc , mkv , MATROSKA_ID_INFO , 0 , 0 ) ;
// write tracks master
avio_seek ( pb , mkv - > tracks_pos , SEEK_SET ) ;
end_ebml_master_crc32 ( pb , & mkv - > tracks_bc , mkv , MATROSKA_ID_TRACKS , 0 , 0 ) ;
if ( mkv - > tracks_bc ) {
// write Tracks master
avio_seek ( pb , mkv - > tracks_pos , SEEK_SET ) ;
end_ebml_master_crc32 ( pb , & mkv - > tracks_bc , mkv ,
MATROSKA_ID_TRACKS , 0 , 0 ) ;
}
// update stream durations
if ( mkv - > tags_bc ) {
@ -2649,6 +2654,7 @@ static int mkv_init(struct AVFormatContext *s)
av_log ( s , AV_LOG_WARNING , " Stream %d will be ignored "
" as WebM doesn't support attachments. \n " , i ) ;
}
mkv - > nb_attachments + + ;
continue ;
}