Mercurial > mplayer.hg
annotate libvo/aspect.c @ 32074:9031c664ed05
Move v4l2_fd extern declaration to vo_v4l2.h, where it belongs.
author | diego |
---|---|
date | Sat, 11 Sep 2010 14:37:12 +0000 |
parents | ef3b2cf8b2db |
children | 3a6a61ffbb34 |
rev | line source |
---|---|
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
1 /* |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
2 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
7 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
8 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
12 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
13 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
17 */ |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
25917
diff
changeset
|
18 |
2053 | 19 /* Stuff for correct aspect scaling. */ |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
20 #include "aspect.h" |
11125 | 21 #include "geometry.h" |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
18105
diff
changeset
|
22 //#ifndef ASPECT_TEST |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11125
diff
changeset
|
23 #include "mp_msg.h" |
20765 | 24 #include "help_mp.h" |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
18105
diff
changeset
|
25 //#endif |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
26 |
2250 | 27 //#define ASPECT_DEBUG |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
28 |
6087
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
29 #if defined(ASPECT_DEBUG) || defined(ASPECT_TEST) |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
30 #include <stdio.h> |
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
31 #endif |
2053 | 32 |
6307 | 33 int vo_panscan_x = 0; |
34 int vo_panscan_y = 0; | |
35 float vo_panscan_amount = 0; | |
16607 | 36 float vo_panscanrange = 1.0; |
6307 | 37 |
38 #include "video_out.h" | |
39 | |
23876
b38974c30ed6
Use a new variable for user-supplied monitor-aspect so we can overwrite
reimar
parents:
23136
diff
changeset
|
40 float force_monitor_aspect=0; |
23136 | 41 float monitor_aspect=0; |
42 float monitor_pixel_aspect=1; | |
2053 | 43 |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
44 static struct { |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
45 int orgw; // real width |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
46 int orgh; // real height |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
47 int prew; // prescaled width |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
48 int preh; // prescaled height |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
49 int scrw; // horizontal resolution |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
50 int scrh; // vertical resolution |
6307 | 51 float asp; |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
52 } aspdat; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
53 |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
54 void aspect_save_orig(int orgw, int orgh){ |
8936 | 55 #ifdef ASPECT_DEBUG |
56 printf("aspect_save_orig %dx%d \n",orgw,orgh); | |
57 #endif | |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
58 aspdat.orgw = orgw; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
59 aspdat.orgh = orgh; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
60 } |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
61 |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
62 void aspect_save_prescale(int prew, int preh){ |
8936 | 63 #ifdef ASPECT_DEBUG |
64 printf("aspect_save_prescale %dx%d \n",prew,preh); | |
65 #endif | |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
66 aspdat.prew = prew; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
67 aspdat.preh = preh; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
68 } |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
69 |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
70 void aspect_save_screenres(int scrw, int scrh){ |
8936 | 71 #ifdef ASPECT_DEBUG |
72 printf("aspect_save_screenres %dx%d \n",scrw,scrh); | |
73 #endif | |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
74 aspdat.scrw = scrw; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
75 aspdat.scrh = scrh; |
23876
b38974c30ed6
Use a new variable for user-supplied monitor-aspect so we can overwrite
reimar
parents:
23136
diff
changeset
|
76 if (force_monitor_aspect) |
b38974c30ed6
Use a new variable for user-supplied monitor-aspect so we can overwrite
reimar
parents:
23136
diff
changeset
|
77 monitor_aspect = force_monitor_aspect; |
b38974c30ed6
Use a new variable for user-supplied monitor-aspect so we can overwrite
reimar
parents:
23136
diff
changeset
|
78 else |
18105
954eac69b532
new monitorpixelaspect option, esp. useful for xinerama setups with upcoming patch
reimar
parents:
16607
diff
changeset
|
79 monitor_aspect = monitor_pixel_aspect * scrw / scrh; |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
80 } |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
81 |
2053 | 82 /* aspect is called with the source resolution and the |
83 * resolution, that the scaled image should fit into | |
84 */ | |
85 | |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
86 void aspect_fit(int *srcw, int *srch, int fitw, int fith){ |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
87 int tmpw; |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
88 |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
89 #ifdef ASPECT_DEBUG |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
90 printf("aspect(0) fitin: %dx%d screenaspect: %.2f\n",aspdat.scrw,aspdat.scrh, |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
91 monitor_aspect); |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
92 printf("aspect(1) wh: %dx%d (org: %dx%d)\n",*srcw,*srch,aspdat.prew,aspdat.preh); |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
93 #endif |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
94 *srcw = fitw; |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
95 *srch = (int)(((float)fitw / (float)aspdat.prew * (float)aspdat.preh) |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
96 * ((float)aspdat.scrh / ((float)aspdat.scrw / monitor_aspect))); |
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
97 *srch+= *srch%2; // round |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
98 #ifdef ASPECT_DEBUG |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
99 printf("aspect(2) wh: %dx%d (org: %dx%d)\n",*srcw,*srch,aspdat.prew,aspdat.preh); |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
100 #endif |
29516
87897065b7d7
Fix aspect_fit to work correctly when borders need to be added on top and
reimar
parents:
29515
diff
changeset
|
101 if(*srch>fith || *srch<aspdat.orgh){ |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
102 tmpw = (int)(((float)fith / (float)aspdat.preh * (float)aspdat.prew) |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
103 * ((float)aspdat.scrw / ((float)aspdat.scrh / (1.0/monitor_aspect)))); |
6087
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
104 tmpw+= tmpw%2; // round |
29516
87897065b7d7
Fix aspect_fit to work correctly when borders need to be added on top and
reimar
parents:
29515
diff
changeset
|
105 if(tmpw<=fitw /*&& tmpw>=aspdat.orgw*/){ |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
106 *srch = fith; |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
107 *srcw = tmpw; |
6087
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
108 }else{ |
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
109 #ifndef ASPECT_TEST |
20765 | 110 mp_msg(MSGT_VO,MSGL_WARN,MSGTR_LIBVO_ASPECT_NoSuitableNewResFound); |
6087
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
111 #else |
20765 | 112 mp_msg(MSGT_VO,MSGL_WARN,MSGTR_LIBVO_ASPECT_NoNewSizeFoundThatFitsIntoRes); |
6087
8be92a9b30a4
Fix a bug in the aspect coden (roudning at wrong point) and allow donwscaling in second pass.
atmos4
parents:
2250
diff
changeset
|
113 #endif |
2213 | 114 } |
2053 | 115 } |
6307 | 116 aspdat.asp=*srcw / (float)*srch; |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
117 #ifdef ASPECT_DEBUG |
2249
48f0ac1e9d13
Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents:
2213
diff
changeset
|
118 printf("aspect(3) wh: %dx%d (org: %dx%d)\n",*srcw,*srch,aspdat.prew,aspdat.preh); |
2071
7f27b212e07b
Add debug printfs to aspect(), add aspect() usage to vo_sdl.
atmos4
parents:
2058
diff
changeset
|
119 #endif |
2053 | 120 } |
121 | |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
122 static void get_max_dims(int *w, int *h, int zoom) |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
123 { |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
124 *w = zoom ? aspdat.scrw : aspdat.prew; |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
125 *h = zoom ? aspdat.scrh : aspdat.preh; |
29515
d3700065005f
Forgotten changes to aspect code to handle -wid with -fs.
reimar
parents:
28446
diff
changeset
|
126 if (zoom && WinID >= 0) zoom = A_WINZOOM; |
d3700065005f
Forgotten changes to aspect code to handle -wid with -fs.
reimar
parents:
28446
diff
changeset
|
127 if (zoom == A_WINZOOM) { |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
128 *w = vo_dwidth; |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
129 *h = vo_dheight; |
29515
d3700065005f
Forgotten changes to aspect code to handle -wid with -fs.
reimar
parents:
28446
diff
changeset
|
130 } |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
131 } |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
132 |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
133 void aspect(int *srcw, int *srch, int zoom){ |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
134 int fitw; |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
135 int fith; |
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
136 get_max_dims(&fitw, &fith, zoom); |
25917
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
137 if( !zoom && geometry_wh_changed ) { |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
138 #ifdef ASPECT_DEBUG |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
139 printf("aspect(0) no aspect forced!\n"); |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
140 #endif |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
141 return; // the user doesn't want to fix aspect |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
142 } |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
143 aspect_fit(srcw, srch, fitw, fith); |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
144 } |
afd170654f62
Make aspect adjustment calculation simpler and more flexible.
reimar
parents:
25782
diff
changeset
|
145 |
6307 | 146 void panscan_init( void ) |
147 { | |
148 vo_panscan_x=0; | |
149 vo_panscan_y=0; | |
150 vo_panscan_amount=0.0f; | |
151 } | |
152 | |
29524
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
153 static void panscan_calc_internal(int zoom) |
6307 | 154 { |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
155 int fwidth,fheight; |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
156 int vo_panscan_area; |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
157 int max_w, max_h; |
29524
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
158 get_max_dims(&max_w, &max_h, zoom); |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
159 |
16607 | 160 if (vo_panscanrange > 0) { |
29524
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
161 aspect(&fwidth,&fheight,zoom); |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
162 vo_panscan_area = max_h - fheight; |
25782
aac51b420d89
-panscan should also work for right and left borders
reimar
parents:
25781
diff
changeset
|
163 if (!vo_panscan_area) |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
164 vo_panscan_area = max_w - fwidth; |
16607 | 165 vo_panscan_area *= vo_panscanrange; |
166 } else | |
29518
24b40e352024
Make panscan cover the same range in -wid -fs mode as in normal mode.
reimar
parents:
29516
diff
changeset
|
167 vo_panscan_area = -vo_panscanrange * max_h; |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6335
diff
changeset
|
168 |
29524
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
169 vo_panscan_amount = vo_fs || zoom == A_WINZOOM ? vo_panscan : 0; |
6307 | 170 vo_panscan_x = vo_panscan_area * vo_panscan_amount * aspdat.asp; |
171 vo_panscan_y = vo_panscan_area * vo_panscan_amount; | |
172 } | |
173 | |
29524
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
174 void panscan_calc(void) |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
175 { |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
176 panscan_calc_internal(A_ZOOM); |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
177 } |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
178 |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
179 /** |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
180 * vos that set vo_dwidth and v_dheight correctly should call this to update |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
181 * vo_panscan_x and vo_panscan_y |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
182 */ |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
183 void panscan_calc_windowed(void) |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
184 { |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
185 panscan_calc_internal(A_WINZOOM); |
b1a437cdc60d
Add infrastructure and test code to enable aspect scaling and panscan in windowed mode.
reimar
parents:
29518
diff
changeset
|
186 } |