Mercurial > mplayer.hg
annotate libvo/video_out.c @ 12321:a7221e8a5a76
English messages removed, comments summarized.
author | diego |
---|---|
date | Tue, 27 Apr 2004 16:24:31 +0000 |
parents | c1aff21286dd |
children | c000f4c23efd |
rev | line source |
---|---|
7338
598c69a1480d
cosmetics - copyright msg removed, this file has nothing with mpeg2dec or
arpi
parents:
7326
diff
changeset
|
1 |
598c69a1480d
cosmetics - copyright msg removed, this file has nothing with mpeg2dec or
arpi
parents:
7326
diff
changeset
|
2 /* this file contains libvo's common functions, variables used by |
598c69a1480d
cosmetics - copyright msg removed, this file has nothing with mpeg2dec or
arpi
parents:
7326
diff
changeset
|
3 many/all drivers. */ |
1 | 4 |
5 #include <stdio.h> | |
6 #include <stdlib.h> | |
7 #include <string.h> | |
8 | |
9 #include <unistd.h> | |
5296 | 10 //#include <sys/mman.h> |
1 | 11 |
12 #include "config.h" | |
13 #include "video_out.h" | |
14 | |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
15 #include "mp_msg.h" |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
16 #include "help_mp.h" |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
17 |
9380 | 18 #include "../osdep/shmem.h" |
1 | 19 |
5074 | 20 //int vo_flags=0; |
4736 | 21 |
388 | 22 // currect resolution/bpp on screen: (should be autodetected by vo_init()) |
23 int vo_depthonscreen=0; | |
24 int vo_screenwidth=0; | |
25 int vo_screenheight=0; | |
26 | |
5511 | 27 int vo_config_count=0; |
28 | |
388 | 29 // 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
|
30 int vo_dx=0; |
38a9cddd9e4d
added vo_dx,vo_dy (used currently only by X based outputs)
alex
parents:
4736
diff
changeset
|
31 int vo_dy=0; |
388 | 32 int vo_dwidth=0; |
33 int vo_dheight=0; | |
34 int vo_dbpp=0; | |
4981 | 35 |
10785 | 36 int vo_nomouse_input = 0; |
7539
56ea9db91251
-nograbpointer, based on old patch by Christian Ohm <chr.ohm@gmx.net>
arpi
parents:
7536
diff
changeset
|
37 int vo_grabpointer = 1; |
1149
6a0f937b52e6
- new config option -lircconfig (config file for lirc)
acki2
parents:
1130
diff
changeset
|
38 int vo_doublebuffering = 0; |
4667 | 39 int vo_vsync = 0; |
4981 | 40 int vo_fs = 0; |
1269 | 41 int vo_fsmode = 0; |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6069
diff
changeset
|
42 float vo_panscan = 0.0f; |
11542 | 43 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
|
44 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
|
45 int vo_refresh_rate=0; |
388 | 46 |
2707 | 47 int vo_pts=0; // for hw decoding |
3201 | 48 float vo_fps=0; // for mp1e rte |
2707 | 49 |
1184 | 50 char *vo_subdevice = NULL; |
5431
013458752947
disabling direct rendering by default (too buggy and conflicts with osd/sub)
arpi
parents:
5296
diff
changeset
|
51 int vo_directrendering=0; |
6781 | 52 |
10988 | 53 int vo_colorkey = 0x0000ff00; // default colorkey is green |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
11017
diff
changeset
|
54 // (0xff000000 means that colorkey has been disabled) |
10988 | 55 |
1 | 56 // |
57 // Externally visible list of all vo drivers | |
58 // | |
59 extern vo_functions_t video_out_mga; | |
60 extern vo_functions_t video_out_xmga; | |
61 extern vo_functions_t 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
|
62 extern vo_functions_t video_out_xover; |
10316 | 63 extern vo_functions_t video_out_xvmc; |
1 | 64 extern vo_functions_t video_out_xv; |
65 extern vo_functions_t video_out_gl; | |
2124 | 66 extern vo_functions_t video_out_gl2; |
12 | 67 extern vo_functions_t video_out_dga; |
38 | 68 extern vo_functions_t video_out_fsdga; |
1 | 69 extern vo_functions_t video_out_sdl; |
70 extern vo_functions_t video_out_3dfx; | |
1979
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
71 extern vo_functions_t video_out_tdfxfb; |
1 | 72 extern vo_functions_t video_out_null; |
2528 | 73 //extern vo_functions_t video_out_odivx; |
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
|
74 extern vo_functions_t video_out_zr; |
11390
32eb3dfe44c9
new zoran driver as discussed on the CVS list. Hardware passthrough is
rik
parents:
11158
diff
changeset
|
75 extern vo_functions_t video_out_zr2; |
7326
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
76 extern vo_functions_t video_out_bl; |
1 | 77 extern vo_functions_t video_out_pgm; |
78 extern vo_functions_t video_out_md5; | |
79 extern vo_functions_t video_out_syncfb; | |
225 | 80 extern vo_functions_t video_out_fbdev; |
10763
7436a53876b0
vo_fbdev2 written by Joey Parrish with some minor modifications
alex
parents:
10689
diff
changeset
|
81 extern vo_functions_t video_out_fbdev2; |
286 | 82 extern vo_functions_t video_out_svga; |
528 | 83 extern vo_functions_t video_out_png; |
1130 | 84 extern vo_functions_t video_out_ggi; |
1511 | 85 extern vo_functions_t video_out_aa; |
12129 | 86 extern vo_functions_t video_out_caca; |
1871 | 87 extern vo_functions_t video_out_mpegpes; |
4599 | 88 extern vo_functions_t video_out_yuv4mpeg; |
7536
70c35cd5db1f
-vo directx driver by Sascha Sommer <saschasommer@freenet.de>
arpi
parents:
7435
diff
changeset
|
89 #ifdef HAVE_DIRECTX |
70c35cd5db1f
-vo directx driver by Sascha Sommer <saschasommer@freenet.de>
arpi
parents:
7435
diff
changeset
|
90 extern vo_functions_t video_out_directx; |
70c35cd5db1f
-vo directx driver by Sascha Sommer <saschasommer@freenet.de>
arpi
parents:
7435
diff
changeset
|
91 #endif |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
92 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
93 extern vo_functions_t video_out_dxr2; |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
94 #endif |
2645 | 95 extern vo_functions_t video_out_dxr3; |
5648 | 96 #ifdef HAVE_JPEG |
97 extern vo_functions_t video_out_jpeg; | |
98 #endif | |
6053 | 99 #ifdef HAVE_GIF |
100 extern vo_functions_t video_out_gif89a; | |
101 #endif | |
4561 | 102 #ifdef HAVE_VESA |
2244 | 103 extern vo_functions_t video_out_vesa; |
104 #endif | |
8013
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
105 #ifdef HAVE_DIRECTFB |
3275
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
106 extern vo_functions_t video_out_directfb; |
10047 | 107 #if DIRECTFBVERSION >= 915 |
8013
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
108 extern vo_functions_t video_out_dfbmga; |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
109 #endif |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
110 #endif |
4124 | 111 #ifdef CONFIG_VIDIX |
112 extern vo_functions_t video_out_xvidix; | |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
113 extern vo_functions_t video_out_winvidix; |
11017 | 114 extern vo_functions_t video_out_cvidix; |
4124 | 115 #endif |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
116 #ifdef HAVE_TDFX_VID |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
117 extern vo_functions_t video_out_tdfx_vid; |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
118 #endif |
10689 | 119 #ifdef HAVE_TGA |
120 extern vo_functions_t video_out_tga; | |
121 #endif | |
12120
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
122 #ifdef MACOSX |
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
123 extern vo_functions_t video_out_quartz; |
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
124 #endif |
4124 | 125 |
1 | 126 vo_functions_t* video_out_drivers[] = |
127 { | |
9546
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
128 #ifdef HAVE_TDFX_VID |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
129 &video_out_tdfx_vid, |
8feb4bb5b334
vo tdfx vid, even faster than tdfxfb and that's just the beginning ;)
albeu
parents:
9380
diff
changeset
|
130 #endif |
8729
561aa9c850f7
Rearrange the vo and ao driver order to prefer the native drivers and give
diego
parents:
8148
diff
changeset
|
131 #ifdef HAVE_DIRECTX |
561aa9c850f7
Rearrange the vo and ao driver order to prefer the native drivers and give
diego
parents:
8148
diff
changeset
|
132 &video_out_directx, |
561aa9c850f7
Rearrange the vo and ao driver order to prefer the native drivers and give
diego
parents:
8148
diff
changeset
|
133 #endif |
1179 | 134 #ifdef HAVE_XMGA |
1 | 135 &video_out_xmga, |
136 #endif | |
1179 | 137 #ifdef HAVE_MGA |
1 | 138 &video_out_mga, |
139 #endif | |
140 #ifdef HAVE_SYNCFB | |
141 &video_out_syncfb, | |
142 #endif | |
143 #ifdef HAVE_3DFX | |
144 &video_out_3dfx, | |
145 #endif | |
1979
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
146 #ifdef HAVE_TDFXFB |
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
147 &video_out_tdfxfb, |
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
148 #endif |
10316 | 149 #ifdef HAVE_XVMC |
150 &video_out_xvmc, | |
151 #endif | |
1 | 152 #ifdef HAVE_XV |
153 &video_out_xv, | |
154 #endif | |
155 #ifdef HAVE_X11 | |
156 &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
|
157 &video_out_xover, |
1 | 158 #endif |
159 #ifdef HAVE_GL | |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
10785
diff
changeset
|
160 #ifndef GL_WIN32 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
10785
diff
changeset
|
161 &video_out_gl, |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
10785
diff
changeset
|
162 #endif |
2124 | 163 &video_out_gl2, |
1 | 164 #endif |
12 | 165 #ifdef HAVE_DGA |
166 &video_out_dga, | |
1235 | 167 // &video_out_fsdga, |
12 | 168 #endif |
1 | 169 #ifdef HAVE_SDL |
170 &video_out_sdl, | |
171 #endif | |
1235 | 172 #ifdef HAVE_GGI |
173 &video_out_ggi, | |
174 #endif | |
234 | 175 #ifdef HAVE_FBDEV |
176 &video_out_fbdev, | |
10763
7436a53876b0
vo_fbdev2 written by Joey Parrish with some minor modifications
alex
parents:
10689
diff
changeset
|
177 &video_out_fbdev2, |
234 | 178 #endif |
286 | 179 #ifdef HAVE_SVGALIB |
180 &video_out_svga, | |
181 #endif | |
1511 | 182 #ifdef HAVE_AA |
183 &video_out_aa, | |
184 #endif | |
12129 | 185 #ifdef HAVE_CACA |
186 &video_out_caca, | |
187 #endif | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
188 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
189 &video_out_dxr2, |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
190 #endif |
2645 | 191 #ifdef HAVE_DXR3 |
192 &video_out_dxr3, | |
193 #endif | |
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
|
194 #ifdef HAVE_ZR |
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
|
195 &video_out_zr, |
11390
32eb3dfe44c9
new zoran driver as discussed on the CVS list. Hardware passthrough is
rik
parents:
11158
diff
changeset
|
196 &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
|
197 #endif |
7326
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
198 #ifdef HAVE_BL |
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
199 &video_out_bl, |
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
200 #endif |
1511 | 201 |
529 | 202 #ifdef HAVE_PNG |
203 &video_out_png, | |
204 #endif | |
5648 | 205 #ifdef HAVE_JPEG |
206 &video_out_jpeg, | |
207 #endif | |
6053 | 208 #ifdef HAVE_GIF |
209 &video_out_gif89a, | |
210 #endif | |
1 | 211 &video_out_null, |
2528 | 212 // &video_out_odivx, |
1 | 213 &video_out_pgm, |
214 &video_out_md5, | |
1871 | 215 &video_out_mpegpes, |
4599 | 216 &video_out_yuv4mpeg, |
4561 | 217 #ifdef HAVE_VESA |
2244 | 218 &video_out_vesa, |
219 #endif | |
3275
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
220 #ifdef HAVE_DIRECTFB |
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
221 &video_out_directfb, |
10047 | 222 #if DIRECTFBVERSION >= 915 |
8013
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
223 &video_out_dfbmga, |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
224 #endif |
bd100a3d486f
Here's a new vo plugin that uses DirectFB. It's meant for Matrox G400
arpi
parents:
7867
diff
changeset
|
225 #endif |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
226 #ifdef CONFIG_VIDIX |
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
227 #ifdef HAVE_X11 |
4124 | 228 &video_out_xvidix, |
229 #endif | |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
230 #ifdef WIN32 |
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
231 &video_out_winvidix, |
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
232 #endif |
11017 | 233 &video_out_cvidix, |
10979
ea4426db0db5
new vidix vo modules for textmode console and windows
faust3
parents:
10880
diff
changeset
|
234 #endif |
10689 | 235 #ifdef HAVE_TGA |
236 &video_out_tga, | |
237 #endif | |
12120
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
238 #ifdef MACOSX |
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
239 &video_out_quartz, |
56e4423f16be
Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
12021
diff
changeset
|
240 #endif |
1 | 241 NULL |
242 }; | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
243 |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
244 void list_video_out(){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
245 int i=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
246 mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_AvailableVideoOutputDrivers); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
247 while (video_out_drivers[i]) { |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8013
diff
changeset
|
248 const vo_info_t *info = video_out_drivers[i++]->info; |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
249 printf("\t%s\t%s\n", info->short_name, info->name); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
250 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
251 printf("\n"); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
252 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
253 |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
254 vo_functions_t* init_best_video_out(char** vo_list){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
255 int i; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
256 // 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
|
257 if(vo_list && vo_list[0]) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
258 while(vo_list[0][0]){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
259 char* vo=strdup(vo_list[0]); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
260 vo_subdevice=strchr(vo,':'); |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
261 if(vo_subdevice){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
262 vo_subdevice[0]=0; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
263 ++vo_subdevice; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
264 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
265 for(i=0;video_out_drivers[i];i++){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
266 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
|
267 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
|
268 if(!strcmp(info->short_name,vo)){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
269 // name matches, try it |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
270 if(!video_driver->preinit(vo_subdevice)) |
10220 | 271 { |
272 free(vo); | |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
273 return video_driver; // success! |
10220 | 274 } |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
275 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
276 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
277 // continue... |
10220 | 278 free(vo); |
7562
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
279 ++vo_list; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
280 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
|
281 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
282 // now try the rest... |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
283 vo_subdevice=NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
284 for(i=0;video_out_drivers[i];i++){ |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
285 vo_functions_t* video_driver=video_out_drivers[i]; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
286 if(!video_driver->preinit(vo_subdevice)) |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
287 return video_driver; // success! |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
288 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
289 return NULL; |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
290 } |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
291 |
92188b57a062
video out driver list support (like -vc, example: -vo xmga,xv,x11,)
arpi
parents:
7539
diff
changeset
|
292 |
7069 | 293 #if defined(HAVE_FBDEV)||defined(HAVE_VESA) |
294 /* Borrowed from vo_fbdev.c | |
295 Monitor ranges related functions*/ | |
296 | |
297 char *monitor_hfreq_str = NULL; | |
298 char *monitor_vfreq_str = NULL; | |
299 char *monitor_dotclock_str = NULL; | |
300 | |
301 float range_max(range_t *r) | |
302 { | |
303 float max = 0; | |
304 | |
305 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
306 if (max < r->max) max = r->max; | |
307 return max; | |
308 } | |
309 | |
310 | |
311 int in_range(range_t *r, float f) | |
312 { | |
313 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
314 if (f >= r->min && f <= r->max) | |
315 return 1; | |
316 return 0; | |
317 } | |
318 | |
319 range_t *str2range(char *s) | |
320 { | |
321 float tmp_min, tmp_max; | |
322 char *endptr = s; // to start the loop | |
323 range_t *r = NULL; | |
324 int i; | |
325 | |
326 if (!s) | |
327 return NULL; | |
328 for (i = 0; *endptr; i++) { | |
329 if (*s == ',') | |
330 goto out_err; | |
331 if (!(r = (range_t *) realloc(r, sizeof(*r) * (i + 2)))) { | |
332 printf("can't realloc 'r'\n"); | |
333 return NULL; | |
334 } | |
335 tmp_min = strtod(s, &endptr); | |
336 if (*endptr == 'k' || *endptr == 'K') { | |
337 tmp_min *= 1000.0; | |
338 endptr++; | |
339 } else if (*endptr == 'm' || *endptr == 'M') { | |
340 tmp_min *= 1000000.0; | |
341 endptr++; | |
342 } | |
343 if (*endptr == '-') { | |
344 tmp_max = strtod(endptr + 1, &endptr); | |
345 if (*endptr == 'k' || *endptr == 'K') { | |
346 tmp_max *= 1000.0; | |
347 endptr++; | |
348 } else if (*endptr == 'm' || *endptr == 'M') { | |
349 tmp_max *= 1000000.0; | |
350 endptr++; | |
351 } | |
352 if (*endptr != ',' && *endptr) | |
353 goto out_err; | |
354 } else if (*endptr == ',' || !*endptr) { | |
355 tmp_max = tmp_min; | |
356 } else | |
357 goto out_err; | |
358 r[i].min = tmp_min; | |
359 r[i].max = tmp_max; | |
360 if (r[i].min < 0 || r[i].max < 0) | |
361 goto out_err; | |
362 s = endptr + 1; | |
363 } | |
364 r[i].min = r[i].max = -1; | |
365 return r; | |
366 out_err: | |
367 if (r) | |
368 free(r); | |
369 return NULL; | |
370 } | |
371 | |
372 /* Borrowed from vo_fbdev.c END */ | |
373 #endif | |
374 |