@ -634,6 +634,7 @@ static int dash_write_header(AVFormatContext *s)
ffurl_close ( os - > out ) ;
os - > out = NULL ;
}
av_log ( s , AV_LOG_VERBOSE , " Representation %d init segment written to: %s \n " , i , filename ) ;
s - > streams [ i ] - > time_base = st - > time_base ;
// If the muxer wants to shift timestamps, request to have them shifted
@ -655,6 +656,8 @@ static int dash_write_header(AVFormatContext *s)
ret = AVERROR ( EINVAL ) ;
}
ret = write_manifest ( s , 0 ) ;
if ( ! ret )
av_log ( s , AV_LOG_VERBOSE , " Manifest written to: %s \n " , s - > filename ) ;
fail :
if ( ret )
@ -702,16 +705,13 @@ static void write_styp(AVIOContext *pb)
ffio_wfourcc ( pb , " msix " ) ;
}
static void find_index_range ( AVFormatContext * s , const char * dirname ,
const char * filename , int64_t pos ,
int * index_length )
static void find_index_range ( AVFormatContext * s , const char * full_path ,
int64_t pos , int * index_length )
{
char full_path [ 1024 ] ;
uint8_t buf [ 8 ] ;
URLContext * fd ;
int ret ;
snprintf ( full_path , sizeof ( full_path ) , " %s%s " , dirname , filename ) ;
ret = ffurl_open ( & fd , full_path , AVIO_FLAG_READ , & s - > interrupt_callback , NULL ) ;
if ( ret < 0 )
return ;
@ -765,14 +765,17 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
if ( ret < 0 )
break ;
write_styp ( os - > ctx - > pb ) ;
} else {
snprintf ( full_path , sizeof ( full_path ) , " %s%s " , c - > dirname , os - > initfile ) ;
}
av_write_frame ( os - > ctx , NULL ) ;
avio_flush ( os - > ctx - > pb ) ;
os - > packets_written = 0 ;
range_length = avio_tell ( os - > ctx - > pb ) - start_pos ;
if ( c - > single_file ) {
find_index_range ( s , c - > dirname , os - > initfile , start_pos , & index_length ) ;
find_index_range ( s , full_path , start_pos , & index_length ) ;
} else {
ffurl_close ( os - > out ) ;
os - > out = NULL ;
@ -781,6 +784,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
break ;
}
add_segment ( os , filename , os - > start_dts , os - > end_dts - os - > start_dts , start_pos , range_length , index_length ) ;
av_log ( s , AV_LOG_VERBOSE , " Representation %d media segment %d written to: %s \n " , i , os - > segment_index , full_path ) ;
}
if ( c - > window_size | | ( final & & c - > remove_at_exit ) ) {