comparison libvo/aspect.c @ 29518:24b40e352024

Make panscan cover the same range in -wid -fs mode as in normal mode.
author reimar
date Thu, 27 Aug 2009 13:31:12 +0000
parents 87897065b7d7
children b1a437cdc60d
comparison
equal deleted inserted replaced
29517:a2617c70b295 29518:24b40e352024
118 #ifdef ASPECT_DEBUG 118 #ifdef ASPECT_DEBUG
119 printf("aspect(3) wh: %dx%d (org: %dx%d)\n",*srcw,*srch,aspdat.prew,aspdat.preh); 119 printf("aspect(3) wh: %dx%d (org: %dx%d)\n",*srcw,*srch,aspdat.prew,aspdat.preh);
120 #endif 120 #endif
121 } 121 }
122 122
123 void aspect(int *srcw, int *srch, int zoom){ 123 static void get_max_dims(int *w, int *h, int zoom)
124 int fitw = zoom ? aspdat.scrw : aspdat.prew; 124 {
125 int fith = zoom ? aspdat.scrh : aspdat.preh; 125 *w = zoom ? aspdat.scrw : aspdat.prew;
126 *h = zoom ? aspdat.scrh : aspdat.preh;
126 if (zoom && WinID >= 0) zoom = A_WINZOOM; 127 if (zoom && WinID >= 0) zoom = A_WINZOOM;
127 if (zoom == A_WINZOOM) { 128 if (zoom == A_WINZOOM) {
128 fitw = vo_dwidth; 129 *w = vo_dwidth;
129 fith = vo_dheight; 130 *h = vo_dheight;
130 } 131 }
132 }
133
134 void aspect(int *srcw, int *srch, int zoom){
135 int fitw;
136 int fith;
137 get_max_dims(&fitw, &fith, zoom);
131 if( !zoom && geometry_wh_changed ) { 138 if( !zoom && geometry_wh_changed ) {
132 #ifdef ASPECT_DEBUG 139 #ifdef ASPECT_DEBUG
133 printf("aspect(0) no aspect forced!\n"); 140 printf("aspect(0) no aspect forced!\n");
134 #endif 141 #endif
135 return; // the user doesn't want to fix aspect 142 return; // the user doesn't want to fix aspect
146 153
147 void panscan_calc( void ) 154 void panscan_calc( void )
148 { 155 {
149 int fwidth,fheight; 156 int fwidth,fheight;
150 int vo_panscan_area; 157 int vo_panscan_area;
158 int max_w, max_h;
159 get_max_dims(&max_w, &max_h, A_ZOOM);
151 160
152 if (vo_panscanrange > 0) { 161 if (vo_panscanrange > 0) {
153 aspect(&fwidth,&fheight,A_ZOOM); 162 aspect(&fwidth,&fheight,A_ZOOM);
154 vo_panscan_area = (aspdat.scrh-fheight); 163 vo_panscan_area = max_h - fheight;
155 if (!vo_panscan_area) 164 if (!vo_panscan_area)
156 vo_panscan_area = aspdat.scrw - fwidth; 165 vo_panscan_area = max_w - fwidth;
157 vo_panscan_area *= vo_panscanrange; 166 vo_panscan_area *= vo_panscanrange;
158 } else 167 } else
159 vo_panscan_area = -vo_panscanrange * aspdat.scrh; 168 vo_panscan_area = -vo_panscanrange * max_h;
160 169
161 vo_panscan_amount = vo_fs ? vo_panscan : 0; 170 vo_panscan_amount = vo_fs ? vo_panscan : 0;
162 vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp; 171 vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp;
163 vo_panscan_y = vo_panscan_area * vo_panscan_amount; 172 vo_panscan_y = vo_panscan_area * vo_panscan_amount;
164 } 173 }