@ -336,7 +336,6 @@ static void sub2video_flush(InputStream *ist)
int process_subtitle ( InputStream * ist , AVSubtitle * subtitle , int * got_output )
int process_subtitle ( InputStream * ist , AVSubtitle * subtitle , int * got_output )
{
{
int ret = 0 ;
int ret = 0 ;
int free_sub = 1 ;
if ( ist - > fix_sub_duration ) {
if ( ist - > fix_sub_duration ) {
int end = 1 ;
int end = 1 ;
@ -361,18 +360,13 @@ int process_subtitle(InputStream *ist, AVSubtitle *subtitle, int *got_output)
if ( ! * got_output )
if ( ! * got_output )
return ret ;
return ret ;
if ( ist - > sub2video . frame ) {
for ( int i = 0 ; i < ist - > nb_filters ; i + + ) {
sub2video_update ( ist , INT64_MIN , subtitle ) ;
ret = ifilter_sub2video ( ist - > filters [ i ] , subtitle ) ;
} else if ( ist - > nb_filters ) {
if ( ret < 0 ) {
if ( ! ist - > sub2video . sub_queue )
av_log ( ist , AV_LOG_ERROR , " Error sending a subtitle for filtering: %s \n " ,
ist - > sub2video . sub_queue = av_fifo_alloc2 ( 8 , sizeof ( AVSubtitle ) , AV_FIFO_FLAG_AUTO_GROW ) ;
av_err2str ( ret ) ) ;
if ( ! ist - > sub2video . sub_queue )
goto out ;
report_and_exit ( AVERROR ( ENOMEM ) ) ;
}
ret = av_fifo_write ( ist - > sub2video . sub_queue , subtitle , 1 ) ;
if ( ret < 0 )
exit_program ( 1 ) ;
free_sub = 0 ;
}
}
if ( ! subtitle - > num_rects )
if ( ! subtitle - > num_rects )
@ -387,8 +381,7 @@ int process_subtitle(InputStream *ist, AVSubtitle *subtitle, int *got_output)
}
}
out :
out :
if ( free_sub )
avsubtitle_free ( subtitle ) ;
avsubtitle_free ( subtitle ) ;
return ret ;
return ret ;
}
}