Mercurial > mplayer.hg
annotate libvo/video_out.c @ 7485:d772e0caac7b
put some comemnts into teh generated help_mp.h file
author | arpi |
---|---|
date | Sun, 22 Sep 2002 16:37:08 +0000 |
parents | c7a9bcecba07 |
children | 70c35cd5db1f |
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 | |
15 #include "../linux/shmem.h" | |
16 | |
5074 | 17 //int vo_flags=0; |
4736 | 18 |
388 | 19 // currect resolution/bpp on screen: (should be autodetected by vo_init()) |
20 int vo_depthonscreen=0; | |
21 int vo_screenwidth=0; | |
22 int vo_screenheight=0; | |
23 | |
5511 | 24 int vo_config_count=0; |
25 | |
388 | 26 // 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
|
27 int vo_dx=0; |
38a9cddd9e4d
added vo_dx,vo_dy (used currently only by X based outputs)
alex
parents:
4736
diff
changeset
|
28 int vo_dy=0; |
388 | 29 int vo_dwidth=0; |
30 int vo_dheight=0; | |
31 int vo_dbpp=0; | |
4981 | 32 |
1149
6a0f937b52e6
- new config option -lircconfig (config file for lirc)
acki2
parents:
1130
diff
changeset
|
33 int vo_doublebuffering = 0; |
4667 | 34 int vo_vsync = 0; |
4981 | 35 int vo_fs = 0; |
1269 | 36 int vo_fsmode = 0; |
6304
ee65527096c2
pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents:
6069
diff
changeset
|
37 float vo_panscan = 0.0f; |
388 | 38 |
2707 | 39 int vo_pts=0; // for hw decoding |
3201 | 40 float vo_fps=0; // for mp1e rte |
2707 | 41 |
1184 | 42 char *vo_subdevice = NULL; |
5431
013458752947
disabling direct rendering by default (too buggy and conflicts with osd/sub)
arpi
parents:
5296
diff
changeset
|
43 int vo_directrendering=0; |
6781 | 44 |
1 | 45 // |
46 // Externally visible list of all vo drivers | |
47 // | |
48 extern vo_functions_t video_out_mga; | |
49 extern vo_functions_t video_out_xmga; | |
50 extern vo_functions_t video_out_x11; | |
51 extern vo_functions_t video_out_xv; | |
52 extern vo_functions_t video_out_gl; | |
2124 | 53 extern vo_functions_t video_out_gl2; |
12 | 54 extern vo_functions_t video_out_dga; |
38 | 55 extern vo_functions_t video_out_fsdga; |
1 | 56 extern vo_functions_t video_out_sdl; |
57 extern vo_functions_t video_out_3dfx; | |
1979
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
58 extern vo_functions_t video_out_tdfxfb; |
1 | 59 extern vo_functions_t video_out_null; |
2528 | 60 //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
|
61 extern vo_functions_t video_out_zr; |
7326
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
62 extern vo_functions_t video_out_bl; |
1 | 63 extern vo_functions_t video_out_pgm; |
64 extern vo_functions_t video_out_md5; | |
65 extern vo_functions_t video_out_syncfb; | |
225 | 66 extern vo_functions_t video_out_fbdev; |
286 | 67 extern vo_functions_t video_out_svga; |
528 | 68 extern vo_functions_t video_out_png; |
1130 | 69 extern vo_functions_t video_out_ggi; |
1511 | 70 extern vo_functions_t video_out_aa; |
1871 | 71 extern vo_functions_t video_out_mpegpes; |
4599 | 72 extern vo_functions_t video_out_yuv4mpeg; |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
73 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
74 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
|
75 #endif |
2645 | 76 extern vo_functions_t video_out_dxr3; |
5648 | 77 #ifdef HAVE_JPEG |
78 extern vo_functions_t video_out_jpeg; | |
79 #endif | |
6053 | 80 #ifdef HAVE_GIF |
81 extern vo_functions_t video_out_gif89a; | |
82 #endif | |
4561 | 83 #ifdef HAVE_VESA |
2244 | 84 extern vo_functions_t video_out_vesa; |
85 #endif | |
3275
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
86 extern vo_functions_t video_out_directfb; |
4124 | 87 #ifdef CONFIG_VIDIX |
88 extern vo_functions_t video_out_xvidix; | |
89 #endif | |
90 | |
1 | 91 vo_functions_t* video_out_drivers[] = |
92 { | |
1179 | 93 #ifdef HAVE_XMGA |
1 | 94 &video_out_xmga, |
95 #endif | |
1179 | 96 #ifdef HAVE_MGA |
1 | 97 &video_out_mga, |
98 #endif | |
99 #ifdef HAVE_SYNCFB | |
100 &video_out_syncfb, | |
101 #endif | |
102 #ifdef HAVE_3DFX | |
103 &video_out_3dfx, | |
104 #endif | |
1979
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
105 #ifdef HAVE_TDFXFB |
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
106 &video_out_tdfxfb, |
6278f566cd91
tdfxfb yuv driver by Zeljko Stevanovic <zsteva@ptt.yu>
arpi
parents:
1871
diff
changeset
|
107 #endif |
1 | 108 #ifdef HAVE_XV |
109 &video_out_xv, | |
110 #endif | |
111 #ifdef HAVE_X11 | |
112 &video_out_x11, | |
113 #endif | |
114 #ifdef HAVE_GL | |
115 &video_out_gl, | |
2124 | 116 &video_out_gl2, |
1 | 117 #endif |
12 | 118 #ifdef HAVE_DGA |
119 &video_out_dga, | |
1235 | 120 // &video_out_fsdga, |
12 | 121 #endif |
1 | 122 #ifdef HAVE_SDL |
123 &video_out_sdl, | |
124 #endif | |
1235 | 125 #ifdef HAVE_GGI |
126 &video_out_ggi, | |
127 #endif | |
234 | 128 #ifdef HAVE_FBDEV |
129 &video_out_fbdev, | |
130 #endif | |
286 | 131 #ifdef HAVE_SVGALIB |
132 &video_out_svga, | |
133 #endif | |
1511 | 134 #ifdef HAVE_AA |
135 &video_out_aa, | |
136 #endif | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
137 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
138 &video_out_dxr2, |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
139 #endif |
2645 | 140 #ifdef HAVE_DXR3 |
141 &video_out_dxr3, | |
142 #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
|
143 #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
|
144 &video_out_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
|
145 #endif |
7326
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
146 #ifdef HAVE_BL |
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
147 &video_out_bl, |
ec3e58120e2a
extensible blinkenlights driver, can currently be used for the Arcade http://www.blinkenlights.de/arcade
rik
parents:
7069
diff
changeset
|
148 #endif |
1511 | 149 |
529 | 150 #ifdef HAVE_PNG |
151 &video_out_png, | |
152 #endif | |
5648 | 153 #ifdef HAVE_JPEG |
154 &video_out_jpeg, | |
155 #endif | |
6053 | 156 #ifdef HAVE_GIF |
157 &video_out_gif89a, | |
158 #endif | |
1 | 159 &video_out_null, |
2528 | 160 // &video_out_odivx, |
1 | 161 &video_out_pgm, |
162 &video_out_md5, | |
1871 | 163 &video_out_mpegpes, |
4599 | 164 &video_out_yuv4mpeg, |
4561 | 165 #ifdef HAVE_VESA |
2244 | 166 &video_out_vesa, |
167 #endif | |
3275
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
168 #ifdef HAVE_DIRECTFB |
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
169 &video_out_directfb, |
38344371432f
vo DirectFB support by Jiri Svoboda <Jiri.Svoboda@seznam.cz>
arpi
parents:
3201
diff
changeset
|
170 #endif |
4169
91b50468a1a4
Fix xvidix for non-x11 systems (delayed due netloss)
atmos4
parents:
4124
diff
changeset
|
171 #if defined(CONFIG_VIDIX) && defined(HAVE_X11) |
4124 | 172 &video_out_xvidix, |
173 #endif | |
1 | 174 NULL |
175 }; | |
6069
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
176 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
177 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
178 extern void vo_dxr2_register_options(void*); |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
179 #endif |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
180 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
181 void libvo_register_options(void* cfg) { |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
182 #ifdef HAVE_DXR2 |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
183 vo_dxr2_register_options(cfg); |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
184 #endif |
8e88e92fe331
Initial support for dxr2. Based on patch from Tobias Diedrich <ranma@gmx.at>.
albeu
parents:
6053
diff
changeset
|
185 } |
7069 | 186 #if defined(HAVE_FBDEV)||defined(HAVE_VESA) |
187 /* Borrowed from vo_fbdev.c | |
188 Monitor ranges related functions*/ | |
189 | |
190 char *monitor_hfreq_str = NULL; | |
191 char *monitor_vfreq_str = NULL; | |
192 char *monitor_dotclock_str = NULL; | |
193 | |
194 float range_max(range_t *r) | |
195 { | |
196 float max = 0; | |
197 | |
198 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
199 if (max < r->max) max = r->max; | |
200 return max; | |
201 } | |
202 | |
203 | |
204 int in_range(range_t *r, float f) | |
205 { | |
206 for (/* NOTHING */; (r->min != -1 && r->max != -1); r++) | |
207 if (f >= r->min && f <= r->max) | |
208 return 1; | |
209 return 0; | |
210 } | |
211 | |
212 range_t *str2range(char *s) | |
213 { | |
214 float tmp_min, tmp_max; | |
215 char *endptr = s; // to start the loop | |
216 range_t *r = NULL; | |
217 int i; | |
218 | |
219 if (!s) | |
220 return NULL; | |
221 for (i = 0; *endptr; i++) { | |
222 if (*s == ',') | |
223 goto out_err; | |
224 if (!(r = (range_t *) realloc(r, sizeof(*r) * (i + 2)))) { | |
225 printf("can't realloc 'r'\n"); | |
226 return NULL; | |
227 } | |
228 tmp_min = strtod(s, &endptr); | |
229 if (*endptr == 'k' || *endptr == 'K') { | |
230 tmp_min *= 1000.0; | |
231 endptr++; | |
232 } else if (*endptr == 'm' || *endptr == 'M') { | |
233 tmp_min *= 1000000.0; | |
234 endptr++; | |
235 } | |
236 if (*endptr == '-') { | |
237 tmp_max = strtod(endptr + 1, &endptr); | |
238 if (*endptr == 'k' || *endptr == 'K') { | |
239 tmp_max *= 1000.0; | |
240 endptr++; | |
241 } else if (*endptr == 'm' || *endptr == 'M') { | |
242 tmp_max *= 1000000.0; | |
243 endptr++; | |
244 } | |
245 if (*endptr != ',' && *endptr) | |
246 goto out_err; | |
247 } else if (*endptr == ',' || !*endptr) { | |
248 tmp_max = tmp_min; | |
249 } else | |
250 goto out_err; | |
251 r[i].min = tmp_min; | |
252 r[i].max = tmp_max; | |
253 if (r[i].min < 0 || r[i].max < 0) | |
254 goto out_err; | |
255 s = endptr + 1; | |
256 } | |
257 r[i].min = r[i].max = -1; | |
258 return r; | |
259 out_err: | |
260 if (r) | |
261 free(r); | |
262 return NULL; | |
263 } | |
264 | |
265 /* Borrowed from vo_fbdev.c END */ | |
266 #endif | |
267 |