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