diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-08-27 18:36:51 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-08-27 18:36:51 +0000 |
commit | 6765091bfac7782c0ef814f5983f4b92cccc3748 (patch) | |
tree | f9bca13607f89086a4a301d3189201ea4a3a0a1c /libvo/aspect.c | |
parent | 26d8e6a696bbce015966e7a3c69ebc14aa38f08b (diff) | |
download | mpv-6765091bfac7782c0ef814f5983f4b92cccc3748.tar.bz2 mpv-6765091bfac7782c0ef814f5983f4b92cccc3748.tar.xz |
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29566 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/aspect.c')
-rw-r--r-- | libvo/aspect.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/libvo/aspect.c b/libvo/aspect.c index f345d6807c..04229231ac 100644 --- a/libvo/aspect.c +++ b/libvo/aspect.c @@ -151,15 +151,15 @@ void panscan_init( void ) vo_panscan_amount=0.0f; } -void panscan_calc( void ) +static void panscan_calc_internal(int zoom) { int fwidth,fheight; int vo_panscan_area; int max_w, max_h; - get_max_dims(&max_w, &max_h, A_ZOOM); + get_max_dims(&max_w, &max_h, zoom); if (vo_panscanrange > 0) { - aspect(&fwidth,&fheight,A_ZOOM); + aspect(&fwidth,&fheight,zoom); vo_panscan_area = max_h - fheight; if (!vo_panscan_area) vo_panscan_area = max_w - fwidth; @@ -167,8 +167,21 @@ void panscan_calc( void ) } else vo_panscan_area = -vo_panscanrange * max_h; - vo_panscan_amount = vo_fs ? vo_panscan : 0; + vo_panscan_amount = vo_fs || zoom == A_WINZOOM ? vo_panscan : 0; vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp; vo_panscan_y = vo_panscan_area * vo_panscan_amount; } +void panscan_calc(void) +{ + panscan_calc_internal(A_ZOOM); +} + +/** + * vos that set vo_dwidth and v_dheight correctly should call this to update + * vo_panscan_x and vo_panscan_y + */ +void panscan_calc_windowed(void) +{ + panscan_calc_internal(A_WINZOOM); +} |