@ -317,21 +317,18 @@ static int hds_write_header(AVFormatContext *s)
ff_const59 AVOutputFormat * oformat ;
if ( mkdir ( s - > url , 0777 ) = = - 1 & & errno ! = EEXIST ) {
ret = AVERROR ( errno ) ;
av_log ( s , AV_LOG_ERROR , " Failed to create directory %s \n " , s - > url ) ;
goto fail ;
return AVERROR ( errno ) ;
}
oformat = av_guess_format ( " flv " , NULL , NULL ) ;
if ( ! oformat ) {
ret = AVERROR_MUXER_NOT_FOUND ;
goto fail ;
return AVERROR_MUXER_NOT_FOUND ;
}
c - > streams = av_mallocz_array ( s - > nb_streams , sizeof ( * c - > streams ) ) ;
if ( ! c - > streams ) {
ret = AVERROR ( ENOMEM ) ;
goto fail ;
return AVERROR ( ENOMEM ) ;
}
for ( i = 0 ; i < s - > nb_streams ; i + + ) {
@ -341,8 +338,7 @@ static int hds_write_header(AVFormatContext *s)
if ( ! st - > codecpar - > bit_rate ) {
av_log ( s , AV_LOG_ERROR , " No bit rate set for stream %d \n " , i ) ;
ret = AVERROR ( EINVAL ) ;
goto fail ;
return AVERROR ( EINVAL ) ;
}
if ( st - > codecpar - > codec_type = = AVMEDIA_TYPE_VIDEO ) {
if ( os - > has_video ) {
@ -358,8 +354,7 @@ static int hds_write_header(AVFormatContext *s)
os - > has_audio = 1 ;
} else {
av_log ( s , AV_LOG_ERROR , " Unsupported stream type in stream %d \n " , i ) ;
ret = AVERROR ( EINVAL ) ;
goto fail ;
return AVERROR ( EINVAL ) ;
}
os - > bitrate + = s - > streams [ i ] - > codecpar - > bit_rate ;
@ -367,8 +362,7 @@ static int hds_write_header(AVFormatContext *s)
os - > first_stream = i ;
ctx = avformat_alloc_context ( ) ;
if ( ! ctx ) {
ret = AVERROR ( ENOMEM ) ;
goto fail ;
return AVERROR ( ENOMEM ) ;
}
os - > ctx = ctx ;
ctx - > oformat = oformat ;
@ -379,8 +373,7 @@ static int hds_write_header(AVFormatContext *s)
AVIO_FLAG_WRITE , os ,
NULL , hds_write , NULL ) ;
if ( ! ctx - > pb ) {
ret = AVERROR ( ENOMEM ) ;
goto fail ;
return AVERROR ( ENOMEM ) ;
}
} else {
ctx = os - > ctx ;
@ -388,8 +381,7 @@ static int hds_write_header(AVFormatContext *s)
s - > streams [ i ] - > id = c - > nb_streams ;
if ( ! ( st = avformat_new_stream ( ctx , NULL ) ) ) {
ret = AVERROR ( ENOMEM ) ;
goto fail ;
return AVERROR ( ENOMEM ) ;
}
avcodec_parameters_copy ( st - > codecpar , s - > streams [ i ] - > codecpar ) ;
st - > codecpar - > codec_tag = 0 ;
@ -403,7 +395,7 @@ static int hds_write_header(AVFormatContext *s)
OutputStream * os = & c - > streams [ i ] ;
int j ;
if ( ( ret = avformat_write_header ( os - > ctx , NULL ) ) < 0 ) {
goto fail ;
return ret ;
}
os - > ctx_inited = 1 ;
avio_flush ( os - > ctx - > pb ) ;
@ -414,7 +406,7 @@ static int hds_write_header(AVFormatContext *s)
" %s/stream%d_temp " , s - > url , i ) ;
ret = init_file ( s , os , 0 ) ;
if ( ret < 0 )
goto fail ;
return ret ;
if ( ! os - > has_video & & c - > min_frag_duration < = 0 ) {
av_log ( s , AV_LOG_WARNING ,
@ -425,9 +417,6 @@ static int hds_write_header(AVFormatContext *s)
}
ret = write_manifest ( s , 0 ) ;
fail :
if ( ret )
hds_free ( s ) ;
return ret ;
}
@ -557,7 +546,6 @@ static int hds_write_trailer(AVFormatContext *s)
rmdir ( s - > url ) ;
}
hds_free ( s ) ;
return 0 ;
}
@ -588,5 +576,6 @@ AVOutputFormat ff_hds_muxer = {
. write_header = hds_write_header ,
. write_packet = hds_write_packet ,
. write_trailer = hds_write_trailer ,
. deinit = hds_free ,
. priv_class = & hds_class ,
} ;