@ -280,6 +280,23 @@ static void skip_gops(int n)
skip_write = 0 ;
}
static void signal_init_ts ( void )
{
AVPacket pkt ;
av_init_packet ( & pkt ) ;
pkt . size = 0 ;
pkt . data = NULL ;
pkt . stream_index = 0 ;
pkt . dts = video_dts ;
pkt . pts = 0 ;
av_write_frame ( ctx , & pkt ) ;
pkt . stream_index = 1 ;
pkt . dts = pkt . pts = audio_dts ;
av_write_frame ( ctx , & pkt ) ;
}
static void finish ( void )
{
av_write_trailer ( ctx ) ;
@ -576,6 +593,40 @@ int main(int argc, char **argv)
finish ( ) ;
// Test discontinously written fragments with b-frames and audio preroll,
// properly signaled.
av_dict_set ( & opts , " movflags " , " frag_custom+delay_moov+dash " , 0 ) ;
init ( 1 , 1 ) ;
mux_gops ( 1 ) ;
init_out ( " delay-moov-elst-signal-init " ) ;
av_write_frame ( ctx , NULL ) ; // Output the moov
close_out ( ) ;
memcpy ( header , hash , HASH_SIZE ) ;
av_write_frame ( ctx , NULL ) ; // Output the first fragment
init_out ( " delay-moov-elst-signal-second-frag " ) ;
mux_gops ( 1 ) ;
av_write_frame ( ctx , NULL ) ; // Output the second fragment
close_out ( ) ;
memcpy ( content , hash , HASH_SIZE ) ;
finish ( ) ;
av_dict_set ( & opts , " movflags " , " frag_custom+delay_moov+dash+frag_discont " , 0 ) ;
av_dict_set ( & opts , " fragment_index " , " 2 " , 0 ) ;
init ( 1 , 1 ) ;
signal_init_ts ( ) ;
skip_gops ( 1 ) ;
mux_gops ( 1 ) ; // Write the second fragment
init_out ( " delay-moov-elst-signal-init-discont " ) ;
av_write_frame ( ctx , NULL ) ; // Output the moov
close_out ( ) ;
check ( ! memcmp ( hash , header , HASH_SIZE ) , " discontinuously written header differs " ) ;
init_out ( " delay-moov-elst-signal-second-frag-discont " ) ;
av_write_frame ( ctx , NULL ) ; // Output the second fragment
close_out ( ) ;
check ( ! memcmp ( hash , content , HASH_SIZE ) , " discontinuously written fragment differs " ) ;
finish ( ) ;
// Test VFR content, with sidx atoms (which declare the pts duration
// of a fragment, forcing overriding the start pts of the next one).
// Here, the fragment duration in pts is significantly different from