Mercurial > mplayer.hg
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 } |