summaryrefslogtreecommitdiffstats
path: root/libvo/aspect.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-08-27 18:36:51 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-08-27 18:36:51 +0000
commit6765091bfac7782c0ef814f5983f4b92cccc3748 (patch)
treef9bca13607f89086a4a301d3189201ea4a3a0a1c /libvo/aspect.c
parent26d8e6a696bbce015966e7a3c69ebc14aa38f08b (diff)
downloadmpv-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.c21
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);
+}