@ -59,6 +59,7 @@ typedef struct OutputStream {
int nb_segments , segments_size , segment_index ;
int nb_segments , segments_size , segment_index ;
Segment * * segments ;
Segment * * segments ;
int64_t first_dts , start_dts , end_dts ;
int64_t first_dts , start_dts , end_dts ;
char bandwidth_str [ 64 ] ;
char codec_str [ 100 ] ;
char codec_str [ 100 ] ;
} OutputStream ;
} OutputStream ;
@ -368,7 +369,7 @@ static int write_manifest(AVFormatContext *s, int final)
OutputStream * os = & c - > streams [ i ] ;
OutputStream * os = & c - > streams [ i ] ;
if ( s - > streams [ i ] - > codec - > codec_type ! = AVMEDIA_TYPE_VIDEO )
if ( s - > streams [ i ] - > codec - > codec_type ! = AVMEDIA_TYPE_VIDEO )
continue ;
continue ;
avio_printf ( out , " \t \t \t <Representation id= \" %d \" mimeType= \" video/mp4 \" codecs= \" %s \" bandwidth= \" %d \" width= \" %d \" height= \" %d \" > \n " , i , os - > codec_str , st - > codec - > bit_rate , st - > codec - > width , st - > codec - > height ) ;
avio_printf ( out , " \t \t \t <Representation id= \" %d \" mimeType= \" video/mp4 \" codecs= \" %s \" %s width= \" %d \" height= \" %d \" > \n " , i , os - > codec_str , os - > bandw id th _st r , st - > codec - > width , st - > codec - > height ) ;
output_segment_list ( & c - > streams [ i ] , out , c ) ;
output_segment_list ( & c - > streams [ i ] , out , c ) ;
avio_printf ( out , " \t \t \t </Representation> \n " ) ;
avio_printf ( out , " \t \t \t </Representation> \n " ) ;
}
}
@ -381,7 +382,7 @@ static int write_manifest(AVFormatContext *s, int final)
OutputStream * os = & c - > streams [ i ] ;
OutputStream * os = & c - > streams [ i ] ;
if ( s - > streams [ i ] - > codec - > codec_type ! = AVMEDIA_TYPE_AUDIO )
if ( s - > streams [ i ] - > codec - > codec_type ! = AVMEDIA_TYPE_AUDIO )
continue ;
continue ;
avio_printf ( out , " \t \t \t <Representation id= \" %d \" mimeType= \" audio/mp4 \" codecs= \" %s \" bandwidth= \" %d \" audioSamplingRate= \" %d \" > \n " , i , os - > codec_str , st - > codec - > bit_rate , st - > codec - > sample_rate ) ;
avio_printf ( out , " \t \t \t <Representation id= \" %d \" mimeType= \" audio/mp4 \" codecs= \" %s \" %s audioSamplingRate= \" %d \" > \n " , i , os - > codec_str , os - > bandw id th _st r , st - > codec - > sample_rate ) ;
avio_printf ( out , " \t \t \t \t <AudioChannelConfiguration schemeIdUri= \" urn:mpeg:dash:23003:3:audio_channel_configuration:2011 \" value= \" %d \" /> \n " , st - > codec - > channels ) ;
avio_printf ( out , " \t \t \t \t <AudioChannelConfiguration schemeIdUri= \" urn:mpeg:dash:23003:3:audio_channel_configuration:2011 \" value= \" %d \" /> \n " , st - > codec - > channels ) ;
output_segment_list ( & c - > streams [ i ] , out , c ) ;
output_segment_list ( & c - > streams [ i ] , out , c ) ;
avio_printf ( out , " \t \t \t </Representation> \n " ) ;
avio_printf ( out , " \t \t \t </Representation> \n " ) ;
@ -439,10 +440,15 @@ static int dash_write_header(AVFormatContext *s)
AVDictionary * opts = NULL ;
AVDictionary * opts = NULL ;
char filename [ 1024 ] ;
char filename [ 1024 ] ;
if ( ! s - > streams [ i ] - > codec - > bit_rate ) {
int bit_rate = s - > streams [ i ] - > codec - > bit_rate ?
av_log ( s , AV_LOG_ERROR , " No bit rate set for stream %d \n " , i ) ;
s - > streams [ i ] - > codec - > bit_rate :
ret = AVERROR ( EINVAL ) ;
s - > streams [ i ] - > codec - > rc_max_rate ;
goto fail ;
if ( bit_rate ) {
snprintf ( os - > bandwidth_str , sizeof ( os - > bandwidth_str ) ,
" bandwidth= \" %i \" " , bit_rate ) ;
} else {
av_log ( s , AV_LOG_WARNING , " No bit rate set for stream %d \n " , i ) ;
os - > bandwidth_str [ 0 ] = 0 ;
}
}
ctx = avformat_alloc_context ( ) ;
ctx = avformat_alloc_context ( ) ;