comparison 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
comparison
equal deleted inserted replaced
29523:00f8d4ca123f 29524:b1a437cdc60d
149 vo_panscan_x=0; 149 vo_panscan_x=0;
150 vo_panscan_y=0; 150 vo_panscan_y=0;
151 vo_panscan_amount=0.0f; 151 vo_panscan_amount=0.0f;
152 } 152 }
153 153
154 void panscan_calc( void ) 154 static void panscan_calc_internal(int zoom)
155 { 155 {
156 int fwidth,fheight; 156 int fwidth,fheight;
157 int vo_panscan_area; 157 int vo_panscan_area;
158 int max_w, max_h; 158 int max_w, max_h;
159 get_max_dims(&max_w, &max_h, A_ZOOM); 159 get_max_dims(&max_w, &max_h, zoom);
160 160
161 if (vo_panscanrange > 0) { 161 if (vo_panscanrange > 0) {
162 aspect(&fwidth,&fheight,A_ZOOM); 162 aspect(&fwidth,&fheight,zoom);
163 vo_panscan_area = max_h - fheight; 163 vo_panscan_area = max_h - fheight;
164 if (!vo_panscan_area) 164 if (!vo_panscan_area)
165 vo_panscan_area = max_w - fwidth; 165 vo_panscan_area = max_w - fwidth;
166 vo_panscan_area *= vo_panscanrange; 166 vo_panscan_area *= vo_panscanrange;
167 } else 167 } else
168 vo_panscan_area = -vo_panscanrange * max_h; 168 vo_panscan_area = -vo_panscanrange * max_h;
169 169
170 vo_panscan_amount = vo_fs ? vo_panscan : 0; 170 vo_panscan_amount = vo_fs || zoom == A_WINZOOM ? vo_panscan : 0;
171 vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp; 171 vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp;
172 vo_panscan_y = vo_panscan_area * vo_panscan_amount; 172 vo_panscan_y = vo_panscan_area * vo_panscan_amount;
173 } 173 }
174 174
175 void panscan_calc(void)
176 {
177 panscan_calc_internal(A_ZOOM);
178 }
179
180 /**
181 * vos that set vo_dwidth and v_dheight correctly should call this to update
182 * vo_panscan_x and vo_panscan_y
183 */
184 void panscan_calc_windowed(void)
185 {
186 panscan_calc_internal(A_WINZOOM);
187 }