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