X-Git-Url: http://git.videolan.org/gitweb.cgi/vlc.git/?p=vlc.git;p=vlc.git;a=blobdiff_plain;f=src%2Fvideo_output%2Fvout_pictures.c;h=3275aac7d16f0a48e7456fb5593fe81ee2fcbfb7;hp=ffb2c5753d6145d9ba7511ba4c5b45a94891ce91;hb=9885e3480e42d648daef956dd84ce59d7bd4d9bf;hpb=0c52acaeed113f6c2365485a1a7098e194f70b5b;ds=sidebyside diff --git a/src/video_output/vout_pictures.c b/src/video_output/vout_pictures.c index ffb2c5753d..3275aac7d1 100644 --- a/src/video_output/vout_pictures.c +++ b/src/video_output/vout_pictures.c @@ -461,16 +461,30 @@ void vout_PlacePicture( const vout_thread_t *p_vout, return; } - if( p_vout->b_scale ) + bool b_autoscale = p_vout->b_autoscale; + int i_zoom = p_vout->i_zoom; + + /* be realistic, scaling factor confined between .2 and 10. */ + if( i_zoom > 10 * ZOOM_FP_FACTOR || i_zoom < ZOOM_FP_FACTOR / 5 ) + i_zoom = ZOOM_FP_FACTOR; + + if( b_autoscale ) { *pi_width = i_width; *pi_height = i_height; } - else + else if( i_zoom == ZOOM_FP_FACTOR ) /* original size */ { *pi_width = __MIN( i_width, p_vout->fmt_in.i_visible_width ); *pi_height = __MIN( i_height, p_vout->fmt_in.i_visible_height ); } + else + { + *pi_width = + p_vout->fmt_in.i_visible_width * i_zoom / ZOOM_FP_FACTOR; + *pi_height = + p_vout->fmt_in.i_visible_height * i_zoom / ZOOM_FP_FACTOR; + } int64_t i_scaled_width = p_vout->fmt_in.i_visible_width * (int64_t)p_vout->fmt_in.i_sar_num * *pi_height / p_vout->fmt_in.i_visible_height / p_vout->fmt_in.i_sar_den;