Mercurial > mplayer.hg
diff libvo/aspect.c @ 29524:b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
author | reimar |
---|---|
date | Thu, 27 Aug 2009 18:36:51 +0000 |
parents | 24b40e352024 |
children | ef3b2cf8b2db |
line wrap: on
line diff
--- a/libvo/aspect.c Thu Aug 27 14:12:38 2009 +0000 +++ b/libvo/aspect.c Thu Aug 27 18:36:51 2009 +0000 @@ -151,15 +151,15 @@ 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 @@ } 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); +}