Mercurial > mplayer.hg
annotate libvo/video_out.c @ 34116:5f7c090e5ae8
Support H264 from QNAP Systems.
author | cehoyos |
---|---|
date | Sat, 15 Oct 2011 16:33:05 +0000 |
parents | 81f71d910333 |
children | f86e300072f0 |
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, |
2124 | 209 &video_out_gl2, |
1 | 210 #endif |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
211 #ifdef CONFIG_DGA |
12 | 212 &video_out_dga, |
213 #endif | |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
214 #ifdef CONFIG_GGI |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
215 &video_out_ggi, |
1235 | 216 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
217 #ifdef CONFIG_FBDEV |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
218 &video_out_fbdev, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
219 &video_out_fbdev2, |
234 | 220 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
221 #ifdef CONFIG_SVGALIB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
222 &video_out_svga, |
286 | 223 #endif |
30699
a8256156fca5
Reorder vos: prioritize -vo gl above -vo x11 and -vo matrixview down with aa, caca etc.
reimar
parents:
30633
diff
changeset
|
224 #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
|
225 &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
|
226 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
227 #ifdef CONFIG_AA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
228 &video_out_aa, |
1511 | 229 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
230 #ifdef CONFIG_CACA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
231 &video_out_caca, |
12129 | 232 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
233 #ifdef CONFIG_DXR2 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
234 &video_out_dxr2, |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
235 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
236 #ifdef CONFIG_DXR3 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
237 &video_out_dxr3, |
2645 | 238 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
239 #ifdef CONFIG_IVTV |
19137
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
240 &video_out_ivtv, |
d9656bb2ae0e
new vo driver for ivtv cards tv-out through internal h/w mpeg decoder
ben
parents:
19082
diff
changeset
|
241 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
242 #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
|
243 &video_out_v4l2, |
fb63124c7920
v4l2 audio/video outputs for linux 2.6.22+ kernels (outputs formerly known as ivtv)
ben
parents:
23814
diff
changeset
|
244 #endif |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27365
diff
changeset
|
245 #ifdef CONFIG_ZR |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
246 &video_out_zr, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
247 &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
|
248 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
249 #ifdef CONFIG_BL |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
250 &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
|
251 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
252 #ifdef CONFIG_VESA |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
253 &video_out_vesa, |
2244 | 254 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
255 #ifdef CONFIG_DIRECTFB |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
256 &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
|
257 &video_out_dfbmga, |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
258 #endif |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
259 #ifdef CONFIG_VIDIX |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27375
diff
changeset
|
260 #ifdef CONFIG_X11 |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
261 &video_out_xvidix, |
4124 | 262 #endif |
27727
48c1ae64255b
Replace preprocessor check for WIN32 with checks for __MINGW32__ and __CYGWIN__.
diego
parents:
27388
diff
changeset
|
263 #if defined(__MINGW32__) || defined(__CYGWIN__) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
264 &video_out_winvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
265 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
266 &video_out_cvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
267 #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
|
268 &video_out_null, |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
269 // should not be auto-selected |
28367
e8bae856d691
Make CONFIG_XVMC a proper FFmpeg-style 0/1 definition.
diego
parents:
28137
diff
changeset
|
270 #if CONFIG_XVMC |
17423
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
271 &video_out_xvmc, |
076ab46c63bd
prevent xvmc from been loaded before xv, and generally before any autoprobed output
iive
parents:
17069
diff
changeset
|
272 #endif |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
273 &video_out_mpegpes, |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
274 #ifdef CONFIG_YUV4MPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
275 &video_out_yuv4mpeg, |
27071 | 276 #endif |
32142
4614728cab25
build system: Merge all FFmpeg library checks into a single FFmpeg check.
diego
parents:
32133
diff
changeset
|
277 #ifdef CONFIG_FFMPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
278 &video_out_png, |
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
279 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
280 #ifdef CONFIG_JPEG |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
281 &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
|
282 #endif |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
283 #ifdef CONFIG_GIF |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
284 &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
|
285 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
286 #ifdef CONFIG_TGA |
10689 | 287 &video_out_tga, |
288 #endif | |
27385
2113bd9c6bd9
Rename preprocessor directives related to image libraries.
diego
parents:
27377
diff
changeset
|
289 #ifdef CONFIG_PNM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
290 &video_out_pnm, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
291 #endif |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
292 #ifdef CONFIG_MD5SUM |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
293 &video_out_md5sum, |
13744
d66e3d5865b8
Add --enable and --disable options for vo_pnm and vo_md5sum to configure.
ivo
parents:
13551
diff
changeset
|
294 #endif |
33389 | 295 #ifdef CONFIG_MNG |
296 &video_out_mng, | |
297 #endif | |
1 | 298 NULL |
299 }; | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
300 |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
17423
diff
changeset
|
301 void list_video_out(void){ |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
302 int i=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
303 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
|
304 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
|
305 while (video_out_drivers[i]) { |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8013
diff
changeset
|
306 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
|
307 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
|
308 } |
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
|
309 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
|
310 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
311 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
312 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
|
313 int i; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
314 // 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
|
315 if(vo_list && vo_list[0]) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
316 while(vo_list[0][0]){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
317 char* vo=strdup(vo_list[0]); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 if(vo_subdevice){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
324 vo_subdevice[0]=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
325 ++vo_subdevice; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
326 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
327 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
|
328 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
|
329 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
|
330 if(!strcmp(info->short_name,vo)){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
331 // name matches, try it |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
332 if(!video_driver->preinit(vo_subdevice)) |
10220 | 333 { |
334 free(vo); | |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
335 return video_driver; // success! |
10220 | 336 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
337 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
338 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
339 // continue... |
10220 | 340 free(vo); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
341 ++vo_list; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
342 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
|
343 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
344 // now try the rest... |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
345 vo_subdevice=NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
346 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
|
347 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
|
348 if(!video_driver->preinit(vo_subdevice)) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
349 return video_driver; // success! |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
350 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
351 return NULL; |
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 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
24270
diff
changeset
|
354 int config_video_out(const vo_functions_t *vo, uint32_t width, uint32_t height, |
22232 | 355 uint32_t d_width, uint32_t d_height, uint32_t flags, |
356 char *title, uint32_t format) { | |
357 panscan_init(); | |
358 aspect_save_orig(width,height); | |
359 aspect_save_prescale(d_width,d_height); | |
360 | |
22324
475c60dcd459
10, checked for the wrong thing. Do aspect scaling only in config_video_out
reimar
parents:
22249
diff
changeset
|
361 if (vo->control(VOCTRL_UPDATE_SCREENINFO, NULL) == VO_TRUE) { |
31313 | 362 aspect(&d_width,&d_height,A_NOZOOM); |
363 vo_dx = (int)(vo_screenwidth - d_width) / 2; | |
364 vo_dy = (int)(vo_screenheight - d_height) / 2; | |
365 geometry(&vo_dx, &vo_dy, &d_width, &d_height, | |
366 vo_screenwidth, vo_screenheight); | |
367 geometry_xy_changed |= xinerama_screen >= 0; | |
368 vo_dx += xinerama_x; | |
369 vo_dy += xinerama_y; | |
370 vo_dwidth = d_width; | |
371 vo_dheight = d_height; | |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
372 #ifdef CONFIG_GUI |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
373 if (use_gui) { |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
374 // GUI creates and manages window for us |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33725
diff
changeset
|
375 gui(GUI_SETUP_VIDEO_WINDOW, 0); |
31315
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
376 } |
ad274a5b093b
For vos that support the new libvo API (provide UPDATE_SCREENINFO),
reimar
parents:
31313
diff
changeset
|
377 #endif |
22249
3000f296fecc
Fix 10 in r22250, do not use screendimensions if not set
reimar
parents:
22246
diff
changeset
|
378 } |
22232 | 379 |
22246 | 380 return vo->config(width, height, d_width, d_height, flags, title, format); |
22232 | 381 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
382 |
28137
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
383 /** |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
384 * \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
|
385 * \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
|
386 * \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
|
387 * if not found. |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
388 */ |
31017 | 389 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
|
390 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
|
391 return map->to; |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
392 } |
28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
reimar
parents:
28136
diff
changeset
|
393 |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
394 /** |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
395 * \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
|
396 * 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
|
397 */ |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
398 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
|
399 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
|
400 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
|
401 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
|
402 // 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
|
403 border = (border / 2 + 1) & ~1; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
404 *src_start = border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
405 *src_end = src_size - border; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
406 *dst_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
407 *dst_end = dst_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
408 } else { |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
409 *src_start = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
410 *src_end = src_size; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
411 *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
|
412 *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
|
413 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
414 } |
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 * 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
|
418 * 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
|
419 * 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
|
420 * |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
421 * \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
|
422 * \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
|
423 * 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
|
424 */ |
28598
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
425 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
|
426 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
|
427 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
|
428 int scaled_width = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
429 int scaled_height = 0; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
430 if (!crop) crop = &no_crop; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
431 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
|
432 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
|
433 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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
439 if (borders) { |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
440 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
|
441 } |
29527
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
442 if (aspect_scaling()) { |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
443 aspect(&scaled_width, &scaled_height, A_WINZOOM); |
9ea49bcf3abc
Enable calc_src_dst_rects for windowed aspect and panscan.
reimar
parents:
29210
diff
changeset
|
444 panscan_calc_windowed(); |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
445 scaled_width += vo_panscan_x; |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
446 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
|
447 if (borders) { |
4172d83194f2
Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents:
28591
diff
changeset
|
448 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
|
449 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
|
450 } |
28511
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
451 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
|
452 &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
|
453 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
|
454 &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
|
455 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
456 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
|
457 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
|
458 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
|
459 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
|
460 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
|
461 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
|
462 } |
db19e31a2c7c
Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents:
28446
diff
changeset
|
463 |
31049
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
464 /** |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
465 * 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
|
466 * to the "main" MPlayer. |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
467 * |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
468 * \param posx new x position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
469 * \param posy new y position of mouse |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
470 */ |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
471 void vo_mouse_movement(int posx, int posy) { |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
472 char cmd_str[40]; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
473 if (!enable_mouse_movements) |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
474 return; |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
475 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
|
476 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
477 } |
b40e41324173
Avoid duplicating mouse-movement command-generation code.
reimar
parents:
31017
diff
changeset
|
478 |
27365
13c920fdf7f5
Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents:
27071
diff
changeset
|
479 #if defined(CONFIG_FBDEV) || defined(CONFIG_VESA) |
28136
a805c65b7665
Cosmetics: get rid of some tabs and trailing whitespace.
reimar
parents:
28119
diff
changeset
|
480 /* Borrowed from vo_fbdev.c |
7069 | 481 Monitor ranges related functions*/ |
482 | |
483 char *monitor_hfreq_str = NULL; | |
484 char *monitor_vfreq_str = NULL; | |
485 char *monitor_dotclock_str = NULL; | |
486 | |
487 float range_max(range_t *r) | |
488 { | |
489 float max = 0; | |
490 | |
491 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
492 if (max < r->max) max = r->max; | |
493 return max; | |
494 } | |
495 | |
496 | |
497 int in_range(range_t *r, float f) | |
498 { | |
499 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
500 if (f >= r->min && f <= r->max) | |
501 return 1; | |
502 return 0; | |
503 } | |
504 | |
505 range_t *str2range(char *s) | |
506 { | |
507 float tmp_min, tmp_max; | |
508 char *endptr = s; // to start the loop | |
509 range_t *r = NULL; | |
510 int i; | |
511 | |
512 if (!s) | |
513 return NULL; | |
514 for (i = 0; *endptr; i++) { | |
515 if (*s == ',') | |
516 goto out_err; | |
30702 | 517 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
|
518 mp_msg(MSGT_GLOBAL, MSGL_WARN,"can't realloc 'r'\n"); |
7069 | 519 return NULL; |
520 } | |
521 tmp_min = strtod(s, &endptr); | |
522 if (*endptr == 'k' || *endptr == 'K') { | |
523 tmp_min *= 1000.0; | |
524 endptr++; | |
525 } else if (*endptr == 'm' || *endptr == 'M') { | |
526 tmp_min *= 1000000.0; | |
527 endptr++; | |
528 } | |
529 if (*endptr == '-') { | |
530 tmp_max = strtod(endptr + 1, &endptr); | |
531 if (*endptr == 'k' || *endptr == 'K') { | |
532 tmp_max *= 1000.0; | |
533 endptr++; | |
534 } else if (*endptr == 'm' || *endptr == 'M') { | |
535 tmp_max *= 1000000.0; | |
536 endptr++; | |
537 } | |
538 if (*endptr != ',' && *endptr) | |
539 goto out_err; | |
540 } else if (*endptr == ',' || !*endptr) { | |
541 tmp_max = tmp_min; | |
542 } else | |
543 goto out_err; | |
544 r[i].min = tmp_min; | |
545 r[i].max = tmp_max; | |
546 if (r[i].min < 0 || r[i].max < 0) | |
547 goto out_err; | |
548 s = endptr + 1; | |
549 } | |
550 r[i].min = r[i].max = -1; | |
551 return r; | |
552 out_err: | |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32229
diff
changeset
|
553 free(r); |
7069 | 554 return NULL; |
555 } | |
556 | |
557 /* Borrowed from vo_fbdev.c END */ | |
558 #endif |