Mercurial > mplayer.hg
annotate libvo/video_out.c @ 32167:41c11d96b5db
Require DirectFB version 0.9.15 instead of 0.9.13.
This simplifies the build system at the cost of requiring a library
version that was released at the end rather than the middle of 2002.
author | diego |
---|---|
date | Wed, 15 Sep 2010 15:58:48 +0000 |
parents | 4614728cab25 |
children | bd74742452c5 |
rev | line source |
---|---|
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
1 /* |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
2 * libvo common functions, variables used by many/all drivers. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
4 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
5 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
6 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
9 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
10 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
11 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
14 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
15 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28367
diff
changeset
|
19 */ |
1 | 20 |
21 #include <stdio.h> | |
22 #include <stdlib.h> | |
23 #include <string.h> | |
24 | |
25 #include <unistd.h> | |
5296 | 26 //#include <sys/mman.h> |
1 | 27 |
28 #include "config.h" | |
29 #include "video_out.h" | |
22232 | 30 #include "aspect.h" |
31 #include "geometry.h" | |
1 | 32 |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
33 #ifdef CONFIG_GUI |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
34 #include "gui/interface.h" |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
35 #endif |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
36 #include "mp_msg.h" |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
37 #include "help_mp.h" |
31059 | 38 #include "input/input.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
13744
diff
changeset
|
39 #include "osdep/shmem.h" |
1 | 40 |
5074 | 41 //int vo_flags=0; |
4736 | 42 |
18116 | 43 int xinerama_screen = -1; |
44 int xinerama_x; | |
45 int xinerama_y; | |
46 | |
388 | 47 // currect resolution/bpp on screen: (should be autodetected by vo_init()) |
48 int vo_depthonscreen=0; | |
49 int vo_screenwidth=0; | |
50 int vo_screenheight=0; | |
51 | |
5511 | 52 int vo_config_count=0; |
53 | |
388 | 54 // requested resolution/bpp: (-x -y -bpp options) |
4811
38a9cddd9e4d
added vo_dx,vo_dy (used currently only by X based outputs)
alex
parents:
4736
diff
changeset
|
55 int vo_dx=0; |
38a9cddd9e4d
added vo_dx,vo_dy (used currently only by X based outputs)
alex
parents:
4736
diff
changeset
|
56 int vo_dy=0; |
388 | 57 int vo_dwidth=0; |
58 int vo_dheight=0; | |
59 int vo_dbpp=0; | |
4981 | 60 |
10785 | 61 int vo_nomouse_input = 0; |
7539
56ea9db91251
-nograbpointer, based on old patch by Christian Ohm <chr.ohm@gmx.net>
arpi
parents:
7536
diff
changeset
|
62 int vo_grabpointer = 1; |
14066
db6de212435b
it's stupid for the default to be something both slower (for xv+dr) and visually incorrect.. use -nodouble if you want old behavior
rfelker
parents:
13787
diff
changeset
|
63 int vo_doublebuffering = 1; |
4667 | 64 int vo_vsync = 0; |
4981 | 65 int vo_fs = 0; |
1269 | 66 int vo_fsmode = 0; |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6069
diff
changeset
|
67 float vo_panscan = 0.0f; |
11542 | 68 int vo_ontop = 0; |
12021
cd33d1e3b709
move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents:
11542
diff
changeset
|
69 int vo_adapter_num=0; |
cd33d1e3b709
move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents:
11542
diff
changeset
|
70 int vo_refresh_rate=0; |
12371
c000f4c23efd
keepaspect and nokeepaspect are now useable by all vos
faust3
parents:
12129
diff
changeset
|
71 int vo_keepaspect=1; |
12912
1f6bb2356d18
add var vo_rootwin and -rootwin switch for mac osx
nplourde
parents:
12601
diff
changeset
|
72 int vo_rootwin=0; |
16968
e9d849bf8050
add a switch, slave command, and vo control to toggle borderless window.
joey
parents:
16181
diff
changeset
|
73 int vo_border=1; |
28760
dec2bc0855e8
Make WinID a 64 bit integer, this should avoid issues with valid Window
reimar
parents:
28653
diff
changeset
|
74 int64_t WinID = -1; |
388 | 75 |
2707 | 76 int vo_pts=0; // for hw decoding |
19021 | 77 float vo_fps=0; |
2707 | 78 |
1184 | 79 char *vo_subdevice = NULL; |
5431
013458752947
disabling direct rendering by default (too buggy and conflicts with osd/sub)
arpi
parents:
5296
diff
changeset
|
80 int vo_directrendering=0; |
6781 | 81 |
10988 | 82 int vo_colorkey = 0x0000ff00; // default colorkey is green |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
83 // (0xff000000 means that colorkey has been disabled) |
10988 | 84 |
29862
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
85 // name to be used instead of the vo's default |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
86 char *vo_winname; |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
87 // title to be applied to movie window |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
88 char *vo_wintitle; |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
89 |
1 | 90 // |
91 // Externally visible list of all vo drivers | |
92 // | |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
93 extern const vo_functions_t video_out_mga; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
94 extern const vo_functions_t video_out_xmga; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
95 extern const vo_functions_t video_out_x11; |
32133
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
96 extern const vo_functions_t video_out_xover; |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
97 extern const vo_functions_t video_out_xvmc; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
98 extern const vo_functions_t video_out_vdpau; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
99 extern const vo_functions_t video_out_xv; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
100 extern const vo_functions_t video_out_gl_nosw; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
101 extern const vo_functions_t video_out_gl; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
102 extern const vo_functions_t video_out_gl2; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
103 extern const vo_functions_t video_out_matrixview; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
104 extern const vo_functions_t video_out_dga; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
105 extern const vo_functions_t video_out_sdl; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
106 extern const vo_functions_t video_out_3dfx; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
107 extern const vo_functions_t video_out_tdfxfb; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
108 extern const vo_functions_t video_out_s3fb; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
109 extern const vo_functions_t video_out_wii; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
110 extern const vo_functions_t video_out_null; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
111 extern const vo_functions_t video_out_zr; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
112 extern const vo_functions_t video_out_zr2; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
113 extern const vo_functions_t video_out_bl; |
32133
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
114 extern const vo_functions_t video_out_fbdev; |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
115 extern const vo_functions_t video_out_fbdev2; |
32133
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
116 extern const vo_functions_t video_out_svga; |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
117 extern const vo_functions_t video_out_png; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
118 extern const vo_functions_t video_out_ggi; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
119 extern const vo_functions_t video_out_aa; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
120 extern const vo_functions_t video_out_caca; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
121 extern const vo_functions_t video_out_mpegpes; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
122 extern const vo_functions_t video_out_yuv4mpeg; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
123 extern const vo_functions_t video_out_direct3d; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
124 extern const vo_functions_t video_out_directx; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
125 extern const vo_functions_t video_out_kva; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
126 extern const vo_functions_t video_out_dxr2; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
127 extern const vo_functions_t video_out_dxr3; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
128 extern const vo_functions_t video_out_ivtv; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
129 extern const vo_functions_t video_out_v4l2; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
130 extern const vo_functions_t video_out_jpeg; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
131 extern const vo_functions_t video_out_gif89a; |
32133
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
132 extern const vo_functions_t video_out_vesa; |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
133 extern const vo_functions_t video_out_directfb; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
134 extern const vo_functions_t video_out_dfbmga; |
32133
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
135 extern const vo_functions_t video_out_xvidix; |
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
136 extern const vo_functions_t video_out_winvidix; |
04071c66eeb1
Mark some vo_functions_t declarations that were not yet const as const.
diego
parents:
31315
diff
changeset
|
137 extern const vo_functions_t video_out_cvidix; |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
138 extern const vo_functions_t video_out_tdfx_vid; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
139 extern const vo_functions_t video_out_xvr100; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
140 extern const vo_functions_t video_out_tga; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
141 extern const vo_functions_t video_out_corevideo; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
142 extern const vo_functions_t video_out_quartz; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
143 extern const vo_functions_t video_out_pnm; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
144 extern const vo_functions_t video_out_md5sum; |
4124 | 145 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
146 const vo_functions_t* const video_out_drivers[] = |
1 | 147 { |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
148 #ifdef CONFIG_XVR100 |
23984
73c9e15e7341
add XVR-100 vo, patch by Balatoni Denes (dbalatoni interware hu)
reimar
parents:
23905
diff
changeset
|
149 &video_out_xvr100, |
73c9e15e7341
add XVR-100 vo, patch by Balatoni Denes (dbalatoni interware hu)
reimar
parents:
23905
diff
changeset
|
150 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
151 #ifdef CONFIG_TDFX_VID |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
152 &video_out_tdfx_vid, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
153 #endif |
27922
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
154 #ifdef CONFIG_DIRECTX |
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
155 &video_out_directx, |
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
156 #endif |
27921 | 157 #ifdef CONFIG_DIRECT3D |
158 &video_out_direct3d, | |
159 #endif | |
28915
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
160 #ifdef CONFIG_KVA |
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
161 &video_out_kva, |
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
162 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27385
diff
changeset
|
163 #ifdef CONFIG_COREVIDEO |
29210 | 164 &video_out_corevideo, |
15347
18d404eebb28
do not define video_out_macosx if corevideo is not present
nplourde
parents:
15291
diff
changeset
|
165 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27385
diff
changeset
|
166 #ifdef CONFIG_QUARTZ |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
167 &video_out_quartz, |
12601 | 168 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
169 #ifdef CONFIG_XMGA |
1 | 170 &video_out_xmga, |
171 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
172 #ifdef CONFIG_MGA |
1 | 173 &video_out_mga, |
174 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
175 #ifdef CONFIG_TDFXFB |
17069 | 176 &video_out_tdfxfb, |
177 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
178 #ifdef CONFIG_S3FB |
18535
8e92dd0ff93a
Add YUY2 and back end scaling on S3 Virge chips in combination with fbdev.
gpoirier
parents:
18237
diff
changeset
|
179 &video_out_s3fb, |
8e92dd0ff93a
Add YUY2 and back end scaling on S3 Virge chips in combination with fbdev.
gpoirier
parents:
18237
diff
changeset
|
180 #endif |
27375 | 181 #ifdef CONFIG_WII |
182 &video_out_wii, | |
183 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
184 #ifdef CONFIG_3DFX |
1 | 185 &video_out_3dfx, |
186 #endif | |
29079 | 187 #if CONFIG_VDPAU |
188 &video_out_vdpau, | |
189 #endif | |
28653
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
190 #ifdef CONFIG_XV |
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
191 &video_out_xv, |
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
192 #endif |
30719
6f9652891876
Only prefer -vo gl over -vo x11 if hardware acceleration is available.
reimar
parents:
30702
diff
changeset
|
193 #ifdef CONFIG_X11 |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
194 #ifdef CONFIG_GL |
30719
6f9652891876
Only prefer -vo gl over -vo x11 if hardware acceleration is available.
reimar
parents:
30702
diff
changeset
|
195 &video_out_gl_nosw, |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
196 #endif |
1 | 197 &video_out_x11, |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
9546
diff
changeset
|
198 &video_out_xover, |
1 | 199 #endif |
31217 | 200 #ifdef CONFIG_SDL |
201 &video_out_sdl, | |
202 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
203 #ifdef CONFIG_GL |
30719
6f9652891876
Only prefer -vo gl over -vo x11 if hardware acceleration is available.
reimar
parents:
30702
diff
changeset
|
204 &video_out_gl, |
2124 | 205 &video_out_gl2, |
1 | 206 #endif |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
207 #ifdef CONFIG_DGA |
12 | 208 &video_out_dga, |
209 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
210 #ifdef CONFIG_GGI |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
211 &video_out_ggi, |
1235 | 212 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
213 #ifdef CONFIG_FBDEV |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
214 &video_out_fbdev, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
215 &video_out_fbdev2, |
234 | 216 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
217 #ifdef CONFIG_SVGALIB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
218 &video_out_svga, |
286 | 219 #endif |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
220 #ifdef CONFIG_MATRIXVIEW |
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
221 &video_out_matrixview, |
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
222 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
223 #ifdef CONFIG_AA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
224 &video_out_aa, |
1511 | 225 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
226 #ifdef CONFIG_CACA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
227 &video_out_caca, |
12129 | 228 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
229 #ifdef CONFIG_DXR2 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
230 &video_out_dxr2, |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
231 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
232 #ifdef CONFIG_DXR3 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
233 &video_out_dxr3, |
2645 | 234 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
235 #ifdef CONFIG_IVTV |
19137
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
236 &video_out_ivtv, |
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
237 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
238 #ifdef CONFIG_V4L2_DECODER |
23905
fb63124c7920
v4l2 audio/video outputs for linux 2.6.22+ kernels (outputs formerly known as ivtv)
ben
parents:
23814
diff
changeset
|
239 &video_out_v4l2, |
fb63124c7920
v4l2 audio/video outputs for linux 2.6.22+ kernels (outputs formerly known as ivtv)
ben
parents:
23814
diff
changeset
|
240 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
241 #ifdef CONFIG_ZR |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
242 &video_out_zr, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
243 &video_out_zr2, |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4169
diff
changeset
|
244 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
245 #ifdef CONFIG_BL |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
246 &video_out_bl, |
7326
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
247 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
248 #ifdef CONFIG_VESA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
249 &video_out_vesa, |
2244 | 250 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
251 #ifdef CONFIG_DIRECTFB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
252 &video_out_directfb, |
8013
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
253 &video_out_dfbmga, |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
254 #endif |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
255 #ifdef CONFIG_VIDIX |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
256 #ifdef CONFIG_X11 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
257 &video_out_xvidix, |
4124 | 258 #endif |
27727
48c1ae64255b
Replace preprocessor check for WIN32 with checks for __MINGW32__ and __CYGWIN__.
diego
parents:
27388
diff
changeset
|
259 #if defined(__MINGW32__) || defined(__CYGWIN__) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
260 &video_out_winvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
261 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
262 &video_out_cvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
263 #endif |
13551
2466b2ee99a8
move the file writers after vo_null so they don't get autoselected - following the same logic as in libao2
alex
parents:
13507
diff
changeset
|
264 &video_out_null, |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
265 // should not be auto-selected |
28367
e8bae856d691
Make CONFIG_XVMC a proper FFmpeg-style 0/1 definition.
diego
parents:
28137
diff
changeset
|
266 #if CONFIG_XVMC |
17423
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
267 &video_out_xvmc, |
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
268 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
269 &video_out_mpegpes, |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
270 #ifdef CONFIG_YUV4MPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
271 &video_out_yuv4mpeg, |
27071 | 272 #endif |
32142
4614728cab25
build system: Merge all FFmpeg library checks into a single FFmpeg check.
diego
parents:
32133
diff
changeset
|
273 #ifdef CONFIG_FFMPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
274 &video_out_png, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
275 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
276 #ifdef CONFIG_JPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
277 &video_out_jpeg, |
13551
2466b2ee99a8
move the file writers after vo_null so they don't get autoselected - following the same logic as in libao2
alex
parents:
13507
diff
changeset
|
278 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
279 #ifdef CONFIG_GIF |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
280 &video_out_gif89a, |
13551
2466b2ee99a8
move the file writers after vo_null so they don't get autoselected - following the same logic as in libao2
alex
parents:
13507
diff
changeset
|
281 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
282 #ifdef CONFIG_TGA |
10689 | 283 &video_out_tga, |
284 #endif | |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
285 #ifdef CONFIG_PNM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
286 &video_out_pnm, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
287 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
288 #ifdef CONFIG_MD5SUM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
289 &video_out_md5sum, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
290 #endif |
1 | 291 NULL |
292 }; | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
293 |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17423
diff
changeset
|
294 void list_video_out(void){ |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
295 int i=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
296 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_AvailableVideoOutputDrivers); |
18237
4231482179b6
Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents:
18234
diff
changeset
|
297 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_OUTPUTS\n"); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
298 while (video_out_drivers[i]) { |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8013
diff
changeset
|
299 const vo_info_t *info = video_out_drivers[i++]->info; |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
300 mp_msg(MSGT_GLOBAL, MSGL_INFO,"\t%s\t%s\n", info->short_name, info->name); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
301 } |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
18116
diff
changeset
|
302 mp_msg(MSGT_GLOBAL, MSGL_INFO,"\n"); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
303 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
304 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
305 const vo_functions_t* init_best_video_out(char** vo_list){ |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
306 int i; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
307 // first try the preferred drivers, with their optional subdevice param: |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
308 if(vo_list && vo_list[0]) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
309 while(vo_list[0][0]){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
310 char* vo=strdup(vo_list[0]); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
311 vo_subdevice=strchr(vo,':'); |
13507
ced94062bbed
Removal of vo_pgm and vo_md5, because they have been replaced by vo_pnm
ivo
parents:
13398
diff
changeset
|
312 if (!strcmp(vo, "pgm")) |
ced94062bbed
Removal of vo_pgm and vo_md5, because they have been replaced by vo_pnm
ivo
parents:
13398
diff
changeset
|
313 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_VO_PGM_HasBeenReplaced); |
ced94062bbed
Removal of vo_pgm and vo_md5, because they have been replaced by vo_pnm
ivo
parents:
13398
diff
changeset
|
314 if (!strcmp(vo, "md5")) |
ced94062bbed
Removal of vo_pgm and vo_md5, because they have been replaced by vo_pnm
ivo
parents:
13398
diff
changeset
|
315 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_VO_MD5_HasBeenReplaced); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
316 if(vo_subdevice){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
317 vo_subdevice[0]=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
318 ++vo_subdevice; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
319 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
320 for(i=0;video_out_drivers[i];i++){ |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
321 const vo_functions_t* video_driver=video_out_drivers[i]; |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8013
diff
changeset
|
322 const vo_info_t *info = video_driver->info; |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
323 if(!strcmp(info->short_name,vo)){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
324 // name matches, try it |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
325 if(!video_driver->preinit(vo_subdevice)) |
10220 | 326 { |
327 free(vo); | |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
328 return video_driver; // success! |
10220 | 329 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
330 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
331 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
332 // continue... |
10220 | 333 free(vo); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
334 ++vo_list; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
335 if(!(vo_list[0])) return NULL; // do NOT fallback to others |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
336 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
337 // now try the rest... |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
338 vo_subdevice=NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
339 for(i=0;video_out_drivers[i];i++){ |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
340 const vo_functions_t* video_driver=video_out_drivers[i]; |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
341 if(!video_driver->preinit(vo_subdevice)) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
342 return video_driver; // success! |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
343 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
344 return NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
345 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
346 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
347 int config_video_out(const vo_functions_t *vo, uint32_t width, uint32_t height, |
22232 | 348 uint32_t d_width, uint32_t d_height, uint32_t flags, |
349 char *title, uint32_t format) { | |
350 panscan_init(); | |
351 aspect_save_orig(width,height); | |
352 aspect_save_prescale(d_width,d_height); | |
353 | |
22324
475c60dcd459
10, checked for the wrong thing. Do aspect scaling only in config_video_out
reimar
parents:
22249
diff
changeset
|
354 if (vo->control(VOCTRL_UPDATE_SCREENINFO, NULL) == VO_TRUE) { |
31313 | 355 aspect(&d_width,&d_height,A_NOZOOM); |
356 vo_dx = (int)(vo_screenwidth - d_width) / 2; | |
357 vo_dy = (int)(vo_screenheight - d_height) / 2; | |
358 geometry(&vo_dx, &vo_dy, &d_width, &d_height, | |
359 vo_screenwidth, vo_screenheight); | |
360 geometry_xy_changed |= xinerama_screen >= 0; | |
361 vo_dx += xinerama_x; | |
362 vo_dy += xinerama_y; | |
363 vo_dwidth = d_width; | |
364 vo_dheight = d_height; | |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
365 #ifdef CONFIG_GUI |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
366 if (use_gui) { |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
367 // GUI creates and manages window for us |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
368 guiGetEvent(guiSetShVideo, 0); |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
369 } |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
370 #endif |
22249
3000f296fecc
Fix 10 in r22250, do not use screendimensions if not set
reimar
parents:
22246
diff
changeset
|
371 } |
22232 | 372 |
22246 | 373 return vo->config(width, height, d_width, d_height, flags, title, format); |
22232 | 374 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
375 |
28137
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
376 /** |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
377 * \brief lookup an integer in a table, table must have 0 as the last key |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
378 * \param key key to search for |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
379 * \result translation corresponding to key or "to" value of last mapping |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
380 * if not found. |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
381 */ |
31017 | 382 int lookup_keymap_table(const struct mp_keymap *map, int key) { |
28137
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
383 while (map->from && map->from != key) map++; |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
384 return map->to; |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
385 } |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
386 |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
387 /** |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
388 * \brief helper function for the kind of panscan-scaling that needs a source |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
389 * and destination rectangle like Direct3D and VDPAU |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
390 */ |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
391 static void src_dst_split_scaling(int src_size, int dst_size, int scaled_src_size, |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
392 int *src_start, int *src_end, int *dst_start, int *dst_end) { |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
393 if (scaled_src_size > dst_size) { |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
394 int border = src_size * (scaled_src_size - dst_size) / scaled_src_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
395 // round to a multiple of 2, this is at least needed for vo_direct3d and ATI cards |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
396 border = (border / 2 + 1) & ~1; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
397 *src_start = border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
398 *src_end = src_size - border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
399 *dst_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
400 *dst_end = dst_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
401 } else { |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
402 *src_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
403 *src_end = src_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
404 *dst_start = (dst_size - scaled_src_size) / 2; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
405 *dst_end = *dst_start + scaled_src_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
406 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
407 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
408 |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
409 /** |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
410 * Calculate the appropriate source and destination rectangle to |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
411 * get a correctly scaled picture, including pan-scan. |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
412 * Can be extended to take future cropping support into account. |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
413 * |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
414 * \param crop specifies the cropping border size in the left, right, top and bottom members, may be NULL |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
415 * \param borders the border values as e.g. EOSD (ASS) and properly placed DVD highlight support requires, |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
416 * may be NULL and only left and top are currently valid. |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
417 */ |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
418 void calc_src_dst_rects(int src_width, int src_height, struct vo_rect *src, struct vo_rect *dst, |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
419 struct vo_rect *borders, const struct vo_rect *crop) { |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
420 static const struct vo_rect no_crop = {0, 0, 0, 0, 0, 0}; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
421 int scaled_width = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
422 int scaled_height = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
423 if (!crop) crop = &no_crop; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
424 src_width -= crop->left + crop->right; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
425 src_height -= crop->top + crop->bottom; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
426 if (src_width < 2) src_width = 2; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
427 if (src_height < 2) src_height = 2; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
428 dst->left = 0; dst->right = vo_dwidth; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
429 dst->top = 0; dst->bottom = vo_dheight; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
430 src->left = 0; src->right = src_width; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
431 src->top = 0; src->bottom = src_height; |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
432 if (borders) { |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
433 borders->left = 0; borders->top = 0; |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
434 } |
29527
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
435 if (aspect_scaling()) { |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
436 aspect(&scaled_width, &scaled_height, A_WINZOOM); |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
437 panscan_calc_windowed(); |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
438 scaled_width += vo_panscan_x; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
439 scaled_height += vo_panscan_y; |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
440 if (borders) { |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
441 borders->left = (vo_dwidth - scaled_width ) / 2; |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
442 borders->top = (vo_dheight - scaled_height) / 2; |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
443 } |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
444 src_dst_split_scaling(src_width, vo_dwidth, scaled_width, |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
445 &src->left, &src->right, &dst->left, &dst->right); |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
446 src_dst_split_scaling(src_height, vo_dheight, scaled_height, |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
447 &src->top, &src->bottom, &dst->top, &dst->bottom); |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
448 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
449 src->left += crop->left; src->right += crop->left; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
450 src->top += crop->top; src->bottom += crop->top; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
451 src->width = src->right - src->left; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
452 src->height = src->bottom - src->top; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
453 dst->width = dst->right - dst->left; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
454 dst->height = dst->bottom - dst->top; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
455 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
456 |
31049
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
457 /** |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
458 * Generates a mouse movement message if those are enable and sends it |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
459 * to the "main" MPlayer. |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
460 * |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
461 * \param posx new x position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
462 * \param posy new y position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
463 */ |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
464 void vo_mouse_movement(int posx, int posy) { |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
465 char cmd_str[40]; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
466 if (!enable_mouse_movements) |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
467 return; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
468 snprintf(cmd_str, sizeof(cmd_str), "set_mouse_pos %i %i", posx, posy); |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
469 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
470 } |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
471 |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
472 #if defined(CONFIG_FBDEV) || defined(CONFIG_VESA) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
473 /* Borrowed from vo_fbdev.c |
7069 | 474 Monitor ranges related functions*/ |
475 | |
476 char *monitor_hfreq_str = NULL; | |
477 char *monitor_vfreq_str = NULL; | |
478 char *monitor_dotclock_str = NULL; | |
479 | |
480 float range_max(range_t *r) | |
481 { | |
482 float max = 0; | |
483 | |
484 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
485 if (max < r->max) max = r->max; | |
486 return max; | |
487 } | |
488 | |
489 | |
490 int in_range(range_t *r, float f) | |
491 { | |
492 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
493 if (f >= r->min && f <= r->max) | |
494 return 1; | |
495 return 0; | |
496 } | |
497 | |
498 range_t *str2range(char *s) | |
499 { | |
500 float tmp_min, tmp_max; | |
501 char *endptr = s; // to start the loop | |
502 range_t *r = NULL; | |
503 int i; | |
504 | |
505 if (!s) | |
506 return NULL; | |
507 for (i = 0; *endptr; i++) { | |
508 if (*s == ',') | |
509 goto out_err; | |
30702 | 510 if (!(r = realloc(r, sizeof(*r) * (i + 2)))) { |
18234
a107276371a8
Part 5 and final of otvos attila's oattila AT chello-hu mp_msg changes, with lots of corrections
reynaldo
parents:
18116
diff
changeset
|
511 mp_msg(MSGT_GLOBAL, MSGL_WARN,"can't realloc 'r'\n"); |
7069 | 512 return NULL; |
513 } | |
514 tmp_min = strtod(s, &endptr); | |
515 if (*endptr == 'k' || *endptr == 'K') { | |
516 tmp_min *= 1000.0; | |
517 endptr++; | |
518 } else if (*endptr == 'm' || *endptr == 'M') { | |
519 tmp_min *= 1000000.0; | |
520 endptr++; | |
521 } | |
522 if (*endptr == '-') { | |
523 tmp_max = strtod(endptr + 1, &endptr); | |
524 if (*endptr == 'k' || *endptr == 'K') { | |
525 tmp_max *= 1000.0; | |
526 endptr++; | |
527 } else if (*endptr == 'm' || *endptr == 'M') { | |
528 tmp_max *= 1000000.0; | |
529 endptr++; | |
530 } | |
531 if (*endptr != ',' && *endptr) | |
532 goto out_err; | |
533 } else if (*endptr == ',' || !*endptr) { | |
534 tmp_max = tmp_min; | |
535 } else | |
536 goto out_err; | |
537 r[i].min = tmp_min; | |
538 r[i].max = tmp_max; | |
539 if (r[i].min < 0 || r[i].max < 0) | |
540 goto out_err; | |
541 s = endptr + 1; | |
542 } | |
543 r[i].min = r[i].max = -1; | |
544 return r; | |
545 out_err: | |
546 if (r) | |
547 free(r); | |
548 return NULL; | |
549 } | |
550 | |
551 /* Borrowed from vo_fbdev.c END */ | |
552 #endif |