@ -1204,14 +1204,28 @@ static void do_video_out(AVFormatContext *s,
ist - > file_index , ist - > index ,
ost - > resample_width , ost - > resample_height , avcodec_get_pix_fmt_name ( ost - > resample_pix_fmt ) ,
dec - > width , dec - > height , avcodec_get_pix_fmt_name ( dec - > pix_fmt ) ) ;
if ( ! ost - > video_resample )
ffmpeg_exit ( 1 ) ;
ost - > resample_width = dec - > width ;
ost - > resample_height = dec - > height ;
ost - > resample_pix_fmt = dec - > pix_fmt ;
}
# if !CONFIG_AVFILTER
ost - > video_resample = dec - > width ! = enc - > width | |
dec - > height ! = enc - > height | |
dec - > pix_fmt ! = enc - > pix_fmt ;
if ( ost - > video_resample ) {
final_picture = & ost - > pict_tmp ;
if ( resample_changed ) {
if ( ! ost - > img_resample_ctx | | resample_changed ) {
/* initialize the destination picture */
if ( ! ost - > pict_tmp . data [ 0 ] ) {
avcodec_get_frame_defaults ( & ost - > pict_tmp ) ;
if ( avpicture_alloc ( ( AVPicture * ) & ost - > pict_tmp , enc - > pix_fmt ,
enc - > width , enc - > height ) ) {
fprintf ( stderr , " Cannot allocate temp picture, check pix fmt \n " ) ;
ffmpeg_exit ( 1 ) ;
}
}
/* initialize a new scaler context */
sws_freeContext ( ost - > img_resample_ctx ) ;
sws_flags = av_get_int ( sws_opts , " sws_flags " , NULL ) ;
@ -2290,27 +2304,6 @@ static int transcode(AVFormatContext **output_files,
codec - > height ! = icodec - > height | |
codec - > pix_fmt ! = icodec - > pix_fmt ;
if ( ost - > video_resample ) {
# if !CONFIG_AVFILTER
avcodec_get_frame_defaults ( & ost - > pict_tmp ) ;
if ( avpicture_alloc ( ( AVPicture * ) & ost - > pict_tmp , codec - > pix_fmt ,
codec - > width , codec - > height ) ) {
fprintf ( stderr , " Cannot allocate temp picture, check pix fmt \n " ) ;
ffmpeg_exit ( 1 ) ;
}
sws_flags = av_get_int ( sws_opts , " sws_flags " , NULL ) ;
ost - > img_resample_ctx = sws_getContext (
icodec - > width ,
icodec - > height ,
icodec - > pix_fmt ,
codec - > width ,
codec - > height ,
codec - > pix_fmt ,
sws_flags , NULL , NULL , NULL ) ;
if ( ost - > img_resample_ctx = = NULL ) {
fprintf ( stderr , " Cannot get resampling context \n " ) ;
ffmpeg_exit ( 1 ) ;
}
# endif
codec - > bits_per_raw_sample = frame_bits_per_raw_sample ;
}
ost - > resample_height = icodec - > height ;