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);
+}