Mercurial > mplayer.hg
annotate libvo/video_out.c @ 37064:85499766333b
Add decoding support for On2 AVC audio codec.
author | cehoyos |
---|---|
date | Thu, 24 Apr 2014 06:42:02 +0000 |
parents | 95be7d60ca9b |
children |
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; |
36186
3b15983f5e48
Add options to determine where borders will be added when adjusting for aspect.
reimar
parents:
36171
diff
changeset
|
68 float vo_border_pos_x = 0.5; |
3b15983f5e48
Add options to determine where borders will be added when adjusting for aspect.
reimar
parents:
36171
diff
changeset
|
69 float vo_border_pos_y = 0.5; |
36171 | 70 int vo_rotate; |
11542 | 71 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
|
72 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
|
73 int vo_refresh_rate=0; |
12371
c000f4c23efd
keepaspect and nokeepaspect are now useable by all vos
faust3
parents:
12129
diff
changeset
|
74 int vo_keepaspect=1; |
12912
1f6bb2356d18
add var vo_rootwin and -rootwin switch for mac osx
nplourde
parents:
12601
diff
changeset
|
75 int vo_rootwin=0; |
16968
e9d849bf8050
add a switch, slave command, and vo control to toggle borderless window.
joey
parents:
16181
diff
changeset
|
76 int vo_border=1; |
28760
dec2bc0855e8
Make WinID a 64 bit integer, this should avoid issues with valid Window
reimar
parents:
28653
diff
changeset
|
77 int64_t WinID = -1; |
388 | 78 |
2707 | 79 int vo_pts=0; // for hw decoding |
19021 | 80 float vo_fps=0; |
2707 | 81 |
1184 | 82 char *vo_subdevice = NULL; |
5431
013458752947
disabling direct rendering by default (too buggy and conflicts with osd/sub)
arpi
parents:
5296
diff
changeset
|
83 int vo_directrendering=0; |
6781 | 84 |
10988 | 85 int vo_colorkey = 0x0000ff00; // default colorkey is green |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
86 // (0xff000000 means that colorkey has been disabled) |
10988 | 87 |
29862
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
88 // 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
|
89 char *vo_winname; |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
90 // 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
|
91 char *vo_wintitle; |
fbb1f57a313e
Added -name, -title and -use-filename-title options and implementation in X11 vos
ptt
parents:
29527
diff
changeset
|
92 |
1 | 93 // |
94 // Externally visible list of all vo drivers | |
95 // | |
30926
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
96 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
|
97 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
|
98 extern const vo_functions_t video_out_x11; |
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_xvmc; |
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_vdpau; |
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_xv; |
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_gl_nosw; |
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_gl; |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
104 extern const vo_functions_t video_out_gl_tiled; |
30926
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_matrixview; |
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_dga; |
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_sdl; |
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_3dfx; |
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_tdfxfb; |
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_s3fb; |
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_wii; |
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_null; |
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_zr; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
114 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
|
115 extern const vo_functions_t video_out_bl; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
116 extern const vo_functions_t video_out_fbdev2; |
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; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
132 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
|
133 extern const vo_functions_t video_out_dfbmga; |
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_tdfx_vid; |
aff8622cf8a8
Add const to some video_out extern declarations to match their definitions.
reimar
parents:
30719
diff
changeset
|
135 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 extern const vo_functions_t video_out_md5sum; |
33389 | 141 extern const vo_functions_t video_out_mng; |
4124 | 142 |
32229
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
143 /* The following declarations are _not_ const because functions pointers |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
144 * get overloaded during (re)initialization. */ |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
145 extern vo_functions_t video_out_cvidix; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
146 extern vo_functions_t video_out_fbdev; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
147 extern vo_functions_t video_out_svga; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
148 extern vo_functions_t video_out_vesa; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
149 extern vo_functions_t video_out_winvidix; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
150 extern vo_functions_t video_out_xover; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
151 extern vo_functions_t video_out_xvidix; |
e7cd36fc291e
Do not falsely declare some vo_functions_t declarations as const.
diego
parents:
32201
diff
changeset
|
152 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
153 const vo_functions_t* const video_out_drivers[] = |
1 | 154 { |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
155 #ifdef CONFIG_XVR100 |
23984
73c9e15e7341
add XVR-100 vo, patch by Balatoni Denes (dbalatoni interware hu)
reimar
parents:
23905
diff
changeset
|
156 &video_out_xvr100, |
73c9e15e7341
add XVR-100 vo, patch by Balatoni Denes (dbalatoni interware hu)
reimar
parents:
23905
diff
changeset
|
157 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
158 #ifdef CONFIG_TDFX_VID |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
159 &video_out_tdfx_vid, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
160 #endif |
27922
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
161 #ifdef CONFIG_DIRECTX |
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
162 &video_out_directx, |
ea21f6e033ec
100l, the video_out_drivers list must be sorted by priority, not
reimar
parents:
27921
diff
changeset
|
163 #endif |
27921 | 164 #ifdef CONFIG_DIRECT3D |
165 &video_out_direct3d, | |
166 #endif | |
28915
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
167 #ifdef CONFIG_KVA |
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
168 &video_out_kva, |
c2baa796c5e5
KVA vo driver for OS/2, patch by KO Myung-Hun, komh chollian net
diego
parents:
28760
diff
changeset
|
169 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27385
diff
changeset
|
170 #ifdef CONFIG_COREVIDEO |
29210 | 171 &video_out_corevideo, |
15347
18d404eebb28
do not define video_out_macosx if corevideo is not present
nplourde
parents:
15291
diff
changeset
|
172 #endif |
27388
ac03760f7fcc
Rename all preprocessor directives related to Apple / Mac OS X.
diego
parents:
27385
diff
changeset
|
173 #ifdef CONFIG_QUARTZ |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
174 &video_out_quartz, |
12601 | 175 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
176 #ifdef CONFIG_XMGA |
1 | 177 &video_out_xmga, |
178 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
179 #ifdef CONFIG_MGA |
1 | 180 &video_out_mga, |
181 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
182 #ifdef CONFIG_TDFXFB |
17069 | 183 &video_out_tdfxfb, |
184 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
185 #ifdef CONFIG_S3FB |
18535
8e92dd0ff93a
Add YUY2 and back end scaling on S3 Virge chips in combination with fbdev.
gpoirier
parents:
18237
diff
changeset
|
186 &video_out_s3fb, |
8e92dd0ff93a
Add YUY2 and back end scaling on S3 Virge chips in combination with fbdev.
gpoirier
parents:
18237
diff
changeset
|
187 #endif |
27375 | 188 #ifdef CONFIG_WII |
189 &video_out_wii, | |
190 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
191 #ifdef CONFIG_3DFX |
1 | 192 &video_out_3dfx, |
193 #endif | |
29079 | 194 #if CONFIG_VDPAU |
195 &video_out_vdpau, | |
196 #endif | |
28653
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
197 #ifdef CONFIG_XV |
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
198 &video_out_xv, |
9d1869f780c0
100l, place vdpau below xv, it should not normally be preferred for auto-selection (yet).
reimar
parents:
28598
diff
changeset
|
199 #endif |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
200 #ifdef CONFIG_GL |
30719
6f9652891876
Only prefer -vo gl over -vo x11 if hardware acceleration is available.
reimar
parents:
30702
diff
changeset
|
201 &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
|
202 #endif |
36216 | 203 #ifdef CONFIG_X11 |
1 | 204 &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
|
205 &video_out_xover, |
1 | 206 #endif |
31217 | 207 #ifdef CONFIG_SDL |
208 &video_out_sdl, | |
209 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
210 #ifdef CONFIG_GL |
30719
6f9652891876
Only prefer -vo gl over -vo x11 if hardware acceleration is available.
reimar
parents:
30702
diff
changeset
|
211 &video_out_gl, |
34748
f86e300072f0
Small fixes to make it easier to compiler for OpenGL ES
reimar
parents:
33731
diff
changeset
|
212 #endif |
36223
95be7d60ca9b
gl_tiled vo can be compiled and work on OSX as well.
reimar
parents:
36216
diff
changeset
|
213 #if defined(CONFIG_GL_WIN32) || defined(CONFIG_GL_X11) || defined(CONFIG_GL_OSX) |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
214 &video_out_gl_tiled, |
1 | 215 #endif |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
216 #ifdef CONFIG_DGA |
12 | 217 &video_out_dga, |
218 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
219 #ifdef CONFIG_GGI |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
220 &video_out_ggi, |
1235 | 221 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
222 #ifdef CONFIG_FBDEV |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
223 &video_out_fbdev, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
224 &video_out_fbdev2, |
234 | 225 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
226 #ifdef CONFIG_SVGALIB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
227 &video_out_svga, |
286 | 228 #endif |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
229 #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
|
230 &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
|
231 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
232 #ifdef CONFIG_AA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
233 &video_out_aa, |
1511 | 234 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
235 #ifdef CONFIG_CACA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
236 &video_out_caca, |
12129 | 237 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
238 #ifdef CONFIG_DXR2 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
239 &video_out_dxr2, |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
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_DXR3 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
242 &video_out_dxr3, |
2645 | 243 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
244 #ifdef CONFIG_IVTV |
19137
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
245 &video_out_ivtv, |
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
246 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
247 #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
|
248 &video_out_v4l2, |
fb63124c7920
v4l2 audio/video outputs for linux 2.6.22+ kernels (outputs formerly known as ivtv)
ben
parents:
23814
diff
changeset
|
249 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
250 #ifdef CONFIG_ZR |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
251 &video_out_zr, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
252 &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
|
253 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
254 #ifdef CONFIG_BL |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
255 &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
|
256 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
257 #ifdef CONFIG_VESA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
258 &video_out_vesa, |
2244 | 259 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
260 #ifdef CONFIG_DIRECTFB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
261 &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
|
262 &video_out_dfbmga, |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
263 #endif |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
264 #ifdef CONFIG_VIDIX |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
265 #ifdef CONFIG_X11 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
266 &video_out_xvidix, |
4124 | 267 #endif |
27727
48c1ae64255b
Replace preprocessor check for WIN32 with checks for __MINGW32__ and __CYGWIN__.
diego
parents:
27388
diff
changeset
|
268 #if defined(__MINGW32__) || defined(__CYGWIN__) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
269 &video_out_winvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
270 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
271 &video_out_cvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
272 #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
|
273 &video_out_null, |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
274 // should not be auto-selected |
28367
e8bae856d691
Make CONFIG_XVMC a proper FFmpeg-style 0/1 definition.
diego
parents:
28137
diff
changeset
|
275 #if CONFIG_XVMC |
17423
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
276 &video_out_xvmc, |
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
277 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
278 &video_out_mpegpes, |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
279 #ifdef CONFIG_YUV4MPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
280 &video_out_yuv4mpeg, |
27071 | 281 #endif |
32142
4614728cab25
build system: Merge all FFmpeg library checks into a single FFmpeg check.
diego
parents:
32133
diff
changeset
|
282 #ifdef CONFIG_FFMPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
283 &video_out_png, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
284 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
285 #ifdef CONFIG_JPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
286 &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
|
287 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
288 #ifdef CONFIG_GIF |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
289 &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
|
290 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
291 #ifdef CONFIG_TGA |
10689 | 292 &video_out_tga, |
293 #endif | |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
294 #ifdef CONFIG_PNM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
295 &video_out_pnm, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
296 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
297 #ifdef CONFIG_MD5SUM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
298 &video_out_md5sum, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
299 #endif |
33389 | 300 #ifdef CONFIG_MNG |
301 &video_out_mng, | |
302 #endif | |
1 | 303 NULL |
304 }; | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
305 |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17423
diff
changeset
|
306 void list_video_out(void){ |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
307 int i=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
308 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
|
309 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
|
310 while (video_out_drivers[i]) { |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8013
diff
changeset
|
311 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
|
312 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
|
313 } |
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
|
314 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
|
315 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
316 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
317 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
|
318 int i; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
319 // 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
|
320 if(vo_list && vo_list[0]) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
321 while(vo_list[0][0]){ |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
322 char* buffer=strdup(vo_list[0]); |
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
323 char *vo = buffer; |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
324 vo_subdevice=strchr(vo,':'); |
35014
df3b195a810d
Fix detection of -vo pgm/md5 even when suboptions are used.
reimar
parents:
34748
diff
changeset
|
325 if(vo_subdevice){ |
df3b195a810d
Fix detection of -vo pgm/md5 even when suboptions are used.
reimar
parents:
34748
diff
changeset
|
326 vo_subdevice[0]=0; |
df3b195a810d
Fix detection of -vo pgm/md5 even when suboptions are used.
reimar
parents:
34748
diff
changeset
|
327 ++vo_subdevice; |
df3b195a810d
Fix detection of -vo pgm/md5 even when suboptions are used.
reimar
parents:
34748
diff
changeset
|
328 } |
13507
ced94062bbed
Removal of vo_pgm and vo_md5, because they have been replaced by vo_pnm
ivo
parents:
13398
diff
changeset
|
329 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
|
330 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
|
331 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
|
332 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_VO_MD5_HasBeenReplaced); |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
333 if (!strcmp(vo, "gl2")) { |
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
334 mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_VO_GL2_HasBeenRenamed); |
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
335 vo = "gl_tiled"; |
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
336 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
337 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
|
338 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
|
339 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
|
340 if(!strcmp(info->short_name,vo)){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
341 // name matches, try it |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
342 if(!video_driver->preinit(vo_subdevice)) |
10220 | 343 { |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
344 free(buffer); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
345 return video_driver; // success! |
10220 | 346 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
347 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
348 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
349 // continue... |
35015
906125680c06
Rename -vo gl2 to gl_tiled which hopefully is less misleading, since
reimar
parents:
35014
diff
changeset
|
350 free(buffer); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
351 ++vo_list; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
352 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
|
353 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
354 // now try the rest... |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
355 vo_subdevice=NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
356 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
|
357 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
|
358 if(!video_driver->preinit(vo_subdevice)) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
359 return video_driver; // success! |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
360 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
361 return NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
362 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
363 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
364 int config_video_out(const vo_functions_t *vo, uint32_t width, uint32_t height, |
22232 | 365 uint32_t d_width, uint32_t d_height, uint32_t flags, |
366 char *title, uint32_t format) { | |
367 panscan_init(); | |
368 aspect_save_orig(width,height); | |
369 aspect_save_prescale(d_width,d_height); | |
370 | |
22324
475c60dcd459
10, checked for the wrong thing. Do aspect scaling only in config_video_out
reimar
parents:
22249
diff
changeset
|
371 if (vo->control(VOCTRL_UPDATE_SCREENINFO, NULL) == VO_TRUE) { |
31313 | 372 aspect(&d_width,&d_height,A_NOZOOM); |
373 vo_dx = (int)(vo_screenwidth - d_width) / 2; | |
374 vo_dy = (int)(vo_screenheight - d_height) / 2; | |
375 geometry(&vo_dx, &vo_dy, &d_width, &d_height, | |
376 vo_screenwidth, vo_screenheight); | |
377 geometry_xy_changed |= xinerama_screen >= 0; | |
378 vo_dx += xinerama_x; | |
379 vo_dy += xinerama_y; | |
380 vo_dwidth = d_width; | |
381 vo_dheight = d_height; | |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
382 #ifdef CONFIG_GUI |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
383 if (use_gui) { |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
384 // GUI creates and manages window for us |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33725
diff
changeset
|
385 gui(GUI_SETUP_VIDEO_WINDOW, 0); |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
386 } |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
387 #endif |
22249
3000f296fecc
Fix 10 in r22250, do not use screendimensions if not set
reimar
parents:
22246
diff
changeset
|
388 } |
22232 | 389 |
22246 | 390 return vo->config(width, height, d_width, d_height, flags, title, format); |
22232 | 391 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
392 |
28137
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
393 /** |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
394 * \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
|
395 * \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
|
396 * \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
|
397 * if not found. |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
398 */ |
31017 | 399 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
|
400 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
|
401 return map->to; |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
402 } |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
403 |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
404 /** |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
405 * \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
|
406 * 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
|
407 */ |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
408 static void src_dst_split_scaling(int src_size, int dst_size, int scaled_src_size, |
36187 | 409 float bpos, |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
410 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
|
411 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
|
412 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
|
413 // 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
|
414 border = (border / 2 + 1) & ~1; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
415 *src_start = border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
416 *src_end = src_size - border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
417 *dst_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
418 *dst_end = dst_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
419 } else { |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
420 *src_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
421 *src_end = src_size; |
36187 | 422 *dst_start = apply_border_pos(dst_size, scaled_src_size, bpos); |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
423 *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
|
424 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
425 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
426 |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
427 /** |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
428 * 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
|
429 * 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
|
430 * 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
|
431 * |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
432 * \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
|
433 * \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
|
434 * 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
|
435 */ |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
436 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
|
437 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
|
438 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
|
439 int scaled_width = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
440 int scaled_height = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
441 if (!crop) crop = &no_crop; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
442 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
|
443 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
|
444 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
|
445 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
|
446 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
|
447 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
|
448 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
|
449 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
|
450 if (borders) { |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
451 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
|
452 } |
29527
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
453 if (aspect_scaling()) { |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
454 aspect(&scaled_width, &scaled_height, A_WINZOOM); |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
455 panscan_calc_windowed(); |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
456 scaled_width += vo_panscan_x; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
457 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
|
458 if (borders) { |
36187 | 459 borders->left = apply_border_pos(vo_dwidth, scaled_width, vo_border_pos_x); |
460 borders->top = apply_border_pos(vo_dheight, scaled_height, vo_border_pos_y); | |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
461 } |
36187 | 462 src_dst_split_scaling(src_width, vo_dwidth, scaled_width, vo_border_pos_x, |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
463 &src->left, &src->right, &dst->left, &dst->right); |
36187 | 464 src_dst_split_scaling(src_height, vo_dheight, scaled_height, vo_border_pos_y, |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
465 &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
|
466 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
467 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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
474 |
31049
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
475 /** |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
476 * 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
|
477 * to the "main" MPlayer. |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
478 * |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
479 * \param posx new x position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
480 * \param posy new y position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
481 */ |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
482 void vo_mouse_movement(int posx, int posy) { |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
483 char cmd_str[40]; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
484 if (!enable_mouse_movements) |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
485 return; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
486 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
|
487 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
488 } |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
489 |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
490 #if defined(CONFIG_FBDEV) || defined(CONFIG_VESA) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
491 /* Borrowed from vo_fbdev.c |
7069 | 492 Monitor ranges related functions*/ |
493 | |
494 char *monitor_hfreq_str = NULL; | |
495 char *monitor_vfreq_str = NULL; | |
496 char *monitor_dotclock_str = NULL; | |
497 | |
498 float range_max(range_t *r) | |
499 { | |
500 float max = 0; | |
501 | |
502 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
503 if (max < r->max) max = r->max; | |
504 return max; | |
505 } | |
506 | |
507 | |
508 int in_range(range_t *r, float f) | |
509 { | |
510 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
511 if (f >= r->min && f <= r->max) | |
512 return 1; | |
513 return 0; | |
514 } | |
515 | |
516 range_t *str2range(char *s) | |
517 { | |
518 float tmp_min, tmp_max; | |
519 char *endptr = s; // to start the loop | |
520 range_t *r = NULL; | |
521 int i; | |
522 | |
523 if (!s) | |
524 return NULL; | |
525 for (i = 0; *endptr; i++) { | |
526 if (*s == ',') | |
527 goto out_err; | |
30702 | 528 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
|
529 mp_msg(MSGT_GLOBAL, MSGL_WARN,"can't realloc 'r'\n"); |
7069 | 530 return NULL; |
531 } | |
532 tmp_min = strtod(s, &endptr); | |
533 if (*endptr == 'k' || *endptr == 'K') { | |
534 tmp_min *= 1000.0; | |
535 endptr++; | |
536 } else if (*endptr == 'm' || *endptr == 'M') { | |
537 tmp_min *= 1000000.0; | |
538 endptr++; | |
539 } | |
540 if (*endptr == '-') { | |
541 tmp_max = strtod(endptr + 1, &endptr); | |
542 if (*endptr == 'k' || *endptr == 'K') { | |
543 tmp_max *= 1000.0; | |
544 endptr++; | |
545 } else if (*endptr == 'm' || *endptr == 'M') { | |
546 tmp_max *= 1000000.0; | |
547 endptr++; | |
548 } | |
549 if (*endptr != ',' && *endptr) | |
550 goto out_err; | |
551 } else if (*endptr == ',' || !*endptr) { | |
552 tmp_max = tmp_min; | |
553 } else | |
554 goto out_err; | |
555 r[i].min = tmp_min; | |
556 r[i].max = tmp_max; | |
557 if (r[i].min < 0 || r[i].max < 0) | |
558 goto out_err; | |
559 s = endptr + 1; | |
560 } | |
561 r[i].min = r[i].max = -1; | |
562 return r; | |
563 out_err: | |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32229
diff
changeset
|
564 free(r); |
7069 | 565 return NULL; |
566 } | |
567 | |
568 /* Borrowed from vo_fbdev.c END */ | |
569 #endif |