Mercurial > mplayer.hg
annotate libvo/vo_xvidix.c @ 33273:8c4a81b0bd5f
Update Doxyfile from doxygen 1.3.7 to 1.5.6.
The latter is the version available in Debian oldstable and should thus be a
suitable baseline that can be expected to be available on all systems.
The update makes new Doxygen features available in the configuration file
and avoids several deprecation warnings when using newer doxygen versions.
author | diego |
---|---|
date | Wed, 04 May 2011 14:27:35 +0000 |
parents | 8fa2f43cb760 |
children | 899d817e56fc |
rev | line source |
---|---|
4123 | 1 /* |
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
2 * VIDIX-accelerated overlay in an X window |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
4 * copyright (C) Alex Beregszaszi & Zoltan Ponekker & Nick Kurshev |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
5 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
6 * WS window manager by Pontscho/Fresh! |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
7 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
8 * based on vo_gl.c and vo_vesa.c and vo_xmga.c (.so mastah! ;)) |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
9 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
10 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
11 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
12 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
13 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
14 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
15 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
16 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
17 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
20 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
21 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
22 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
23 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
25 */ |
4123 | 26 |
27 #include <stdio.h> | |
28 #include <stdlib.h> | |
29 #include <string.h> | |
30 #include <math.h> | |
31 #include <errno.h> | |
32 | |
33 #include "config.h" | |
34 #include "video_out.h" | |
35 #include "video_out_internal.h" | |
36 | |
37 #include <X11/Xlib.h> | |
38 #include <X11/Xutil.h> | |
39 //#include <X11/keysym.h> | |
40 | |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27343
diff
changeset
|
41 #ifdef CONFIG_XINERAMA |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
42 #include <X11/extensions/Xinerama.h> |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
43 #endif |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
44 |
4123 | 45 #include "x11_common.h" |
46 #include "aspect.h" | |
47 #include "mp_msg.h" | |
48 | |
49 #include "vosub_vidix.h" | |
27079 | 50 #include "vidix/vidix.h" |
4123 | 51 |
25216 | 52 static const vo_info_t info = { |
4123 | 53 "X11 (VIDIX)", |
54 "xvidix", | |
55 "Alex Beregszaszi", | |
56 "" | |
57 }; | |
58 | |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8123
diff
changeset
|
59 LIBVO_EXTERN(xvidix) |
32336
09dd92639e7b
Remove UNUSED macros used to shut up unused function parameter warnings.
diego
parents:
31315
diff
changeset
|
60 |
4123 | 61 /* X11 related variables */ |
4363 | 62 /* Colorkey handling */ |
10988 | 63 static int colorkey; |
4363 | 64 static vidix_grkey_t gr_key; |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
65 |
4363 | 66 /* VIDIX related */ |
67 static char *vidix_name; | |
4123 | 68 |
69 /* Image parameters */ | |
70 static uint32_t image_width; | |
71 static uint32_t image_height; | |
72 static uint32_t image_format; | |
73 | |
74 /* Window parameters */ | |
6299
4446af3c1a75
set_window() fixing detection of changement of the window position
attila
parents:
6095
diff
changeset
|
75 static uint32_t window_x, window_y; |
4123 | 76 static uint32_t window_width, window_height; |
77 | |
4363 | 78 /* used by XGetGeometry & XTranslateCoordinates for moving/resizing window */ |
4123 | 79 static uint32_t drwX, drwY, drwWidth, drwHeight, drwBorderWidth, |
4981 | 80 drwDepth, drwcX, drwcY, dwidth, dheight; |
4123 | 81 |
28051 | 82 void set_video_eq(int cap); |
6755 | 83 |
8991 | 84 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6953
diff
changeset
|
85 static void set_window(int force_update) |
4123 | 86 { |
6095 | 87 Window mRoot; |
12582 | 88 |
89 if (WinID) | |
90 { | |
91 XGetGeometry(mDisplay, vo_window, &mRoot, &drwX, &drwY, &drwWidth, | |
92 &drwHeight, &drwBorderWidth, &drwDepth); | |
93 drwX = drwY = 0; | |
6307 | 94 |
12582 | 95 XTranslateCoordinates(mDisplay, vo_window, mRoot, 0, 0, |
96 &drwcX, &drwcY, &mRoot); | |
97 aspect(&dwidth, &dheight, A_NOZOOM); | |
98 if (!vo_fs) | |
99 mp_msg(MSGT_VO, MSGL_V, | |
100 "[xvidix] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", | |
101 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); | |
4123 | 102 |
12582 | 103 /* following stuff copied from vo_xmga.c */ |
104 } else | |
105 { | |
106 aspect(&dwidth, &dheight, A_NOZOOM); | |
107 drwcX = drwX = vo_dx; | |
108 drwcY = drwY = vo_dy; | |
109 drwWidth = vo_dwidth; | |
110 drwHeight = vo_dheight; | |
111 } | |
6043 | 112 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
113 #if X11_FULLSCREEN |
4981 | 114 if (vo_fs) |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
115 { |
12582 | 116 aspect(&dwidth, &dheight, A_ZOOM); |
117 drwX = | |
118 (vo_screenwidth - | |
119 (dwidth > vo_screenwidth ? vo_screenwidth : dwidth)) / 2; | |
120 drwcX = drwX; | |
121 drwY = | |
122 (vo_screenheight - | |
123 (dheight > vo_screenheight ? vo_screenheight : dheight)) / 2; | |
124 drwcY = drwY; | |
125 drwWidth = (dwidth > vo_screenwidth ? vo_screenwidth : dwidth); | |
126 drwHeight = | |
127 (dheight > vo_screenheight ? vo_screenheight : dheight); | |
128 mp_msg(MSGT_VO, MSGL_V, | |
129 "[xvidix-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", | |
130 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
131 } |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
132 #endif |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
133 |
12582 | 134 vo_dwidth = drwWidth; |
135 vo_dheight = drwHeight; | |
6307 | 136 |
27748 | 137 update_xinerama_info(); |
138 drwcX -= xinerama_x; | |
139 drwcY -= xinerama_y; | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
140 |
12582 | 141 if (vo_panscan > 0.0f && vo_fs) |
142 { | |
143 drwcX -= vo_panscan_x >> 1; | |
144 drwcY -= vo_panscan_y >> 1; | |
145 drwX -= vo_panscan_x >> 1; | |
146 drwY -= vo_panscan_y >> 1; | |
147 drwWidth += vo_panscan_x; | |
148 drwHeight += vo_panscan_y; | |
149 } | |
6307 | 150 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
151 /* set new values in VIDIX */ |
6299
4446af3c1a75
set_window() fixing detection of changement of the window position
attila
parents:
6095
diff
changeset
|
152 if (force_update || (window_x != drwcX) || (window_y != drwcY) || |
12582 | 153 (window_width != drwWidth) || (window_height != drwHeight)) |
4123 | 154 { |
12582 | 155 // do a backup of window coordinates |
156 window_x = drwcX; | |
157 window_y = drwcY; | |
158 vo_dx = drwcX; | |
159 vo_dy = drwcY; | |
160 window_width = drwWidth; | |
161 window_height = drwHeight; | |
4198
7e2bf04c9a7c
added vidix_start() and vidix_stop() for better runtime-resize support ;)
alex
parents:
4194
diff
changeset
|
162 |
12582 | 163 /* FIXME: implement runtime resize/move if possible, this way is very ugly! */ |
164 vidix_stop(); | |
165 if (vidix_init(image_width, image_height, vo_dx, vo_dy, | |
166 window_width, window_height, image_format, | |
167 vo_depthonscreen, vo_screenwidth, | |
168 vo_screenheight) != 0) | |
4123 | 169 { |
12582 | 170 mp_msg(MSGT_VO, MSGL_FATAL, |
171 "Can't initialize VIDIX driver: %s\n", strerror(errno)); | |
172 abort(); | |
173 } | |
174 vidix_start(); | |
4123 | 175 } |
12582 | 176 |
177 mp_msg(MSGT_VO, MSGL_V, | |
178 "[xvidix] window properties: pos: %dx%d, size: %dx%d\n", vo_dx, | |
179 vo_dy, window_width, window_height); | |
4123 | 180 |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
181 /* mDrawColorKey: */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
182 |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
183 /* fill drawable with specified color */ |
11216 | 184 if (!(vo_colorkey & 0xff000000)) |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
185 { |
12582 | 186 XSetBackground(mDisplay, vo_gc, 0L); |
187 XClearWindow(mDisplay, vo_window); | |
188 XSetForeground(mDisplay, vo_gc, colorkey); | |
189 XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth, | |
190 (vo_fs ? drwHeight - 1 : drwHeight)); | |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
191 } |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
192 /* flush, update drawable */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
193 XFlush(mDisplay); |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
194 |
4123 | 195 return; |
196 } | |
197 | |
198 /* connect to server, create and map window, | |
199 * allocate colors and (shared) memory | |
200 */ | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
201 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
12582 | 202 uint32_t d_height, uint32_t flags, char *title, |
203 uint32_t format) | |
4123 | 204 { |
205 XVisualInfo vinfo; | |
12582 | 206 |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
7931
diff
changeset
|
207 // XSizeHints hint; |
4123 | 208 XSetWindowAttributes xswa; |
209 unsigned long xswamask; | |
210 XWindowAttributes attribs; | |
10988 | 211 int window_depth, r, g, b; |
4125 | 212 |
5738 | 213 title = "MPlayer VIDIX X11 Overlay"; |
4123 | 214 |
215 image_height = height; | |
216 image_width = width; | |
217 image_format = format; | |
4459 | 218 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
219 window_width = d_width; |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
220 window_height = d_height; |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
221 |
6009 | 222 // vo_fs = flags&0x01; |
223 // if (vo_fs) | |
224 // { vo_old_width=d_width; vo_old_height=d_height; } | |
4123 | 225 |
10988 | 226 r = (vo_colorkey & 0x00ff0000) >> 16; |
227 g = (vo_colorkey & 0x0000ff00) >> 8; | |
228 b = vo_colorkey & 0x000000ff; | |
12582 | 229 switch (vo_depthonscreen) |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
230 { |
12582 | 231 case 32: |
232 colorkey = vo_colorkey; | |
233 break; | |
234 case 24: | |
235 colorkey = vo_colorkey & 0x00ffffff; | |
236 break; | |
237 case 16: | |
238 colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); | |
239 break; | |
240 case 15: | |
241 colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); | |
242 break; | |
243 default: | |
244 mp_msg(MSGT_VO, MSGL_ERR, | |
245 "Sorry, this (%d) color depth is not supported\n", | |
246 vo_depthonscreen); | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
247 } |
13946 | 248 mp_msg(MSGT_VO, MSGL_V, "Using colorkey: %x\n", colorkey); |
4123 | 249 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
250 #ifdef X11_FULLSCREEN |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
251 if ((flags & VOFLAG_FULLSCREEN) || (flags & VOFLAG_SWSCALE)) |
12582 | 252 aspect(&d_width, &d_height, A_ZOOM); |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
253 #endif |
12582 | 254 dwidth = d_width; |
255 dheight = d_height; | |
256 /* Make the window */ | |
257 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), | |
258 &attribs); | |
4123 | 259 |
12582 | 260 /* from vo_x11 */ |
261 window_depth = attribs.depth; | |
262 if ((window_depth != 15) && (window_depth != 16) | |
263 && (window_depth != 24) && (window_depth != 32)) | |
264 window_depth = 24; | |
265 XMatchVisualInfo(mDisplay, mScreen, window_depth, TrueColor, | |
266 &vinfo); | |
4123 | 267 |
12582 | 268 xswa.background_pixel = BlackPixel(mDisplay, mScreen); |
269 xswa.border_pixel = 0; | |
270 xswa.colormap = | |
271 XCreateColormap(mDisplay, RootWindow(mDisplay, mScreen), | |
272 vinfo.visual, AllocNone); | |
27927
6f199f065e15
Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents:
27903
diff
changeset
|
273 xswamask = CWBackPixel | CWBorderPixel | CWColormap; |
4123 | 274 |
23655
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
275 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
276 window_width, window_height, flags, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
277 CopyFromParent, "xvidix", title); |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
278 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); |
12582 | 279 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
280 if ((!WinID) && (flags & VOFLAG_FULLSCREEN)) |
12582 | 281 { |
282 vo_dx = 0; | |
283 vo_dy = 0; | |
284 vo_dwidth = vo_screenwidth; | |
285 vo_dheight = vo_screenheight; | |
286 vo_fs = 1; | |
287 } | |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
288 |
4255 | 289 if (vidix_grkey_support()) |
290 { | |
12582 | 291 vidix_grkey_get(&gr_key); |
292 gr_key.key_op = KEYS_PUT; | |
293 if (!(vo_colorkey & 0xff000000)) | |
294 { | |
295 gr_key.ckey.op = CKEY_TRUE; | |
296 gr_key.ckey.red = r; | |
297 gr_key.ckey.green = g; | |
298 gr_key.ckey.blue = b; | |
299 } else | |
300 gr_key.ckey.op = CKEY_FALSE; | |
301 vidix_grkey_set(&gr_key); | |
4255 | 302 } |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
303 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6953
diff
changeset
|
304 set_window(1); |
6755 | 305 |
4805 | 306 XSync(mDisplay, False); |
4123 | 307 |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
308 panscan_calc(); |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
309 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
310 return 0; |
4123 | 311 } |
312 | |
313 static void check_events(void) | |
314 { | |
315 const int event = vo_x11_check_events(mDisplay); | |
4125 | 316 |
32371 | 317 if (event & (VO_EVENT_RESIZE | VO_EVENT_MOVE | VO_EVENT_EXPOSE)) |
12582 | 318 set_window(0); |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
319 |
4125 | 320 return; |
4123 | 321 } |
322 | |
323 /* draw_osd, flip_page, draw_slice, draw_frame should be | |
324 overwritten with vidix functions (vosub_vidix.c) */ | |
325 static void draw_osd(void) | |
326 { | |
12582 | 327 mp_msg(MSGT_VO, MSGL_FATAL, |
328 "[xvidix] error: didn't used vidix draw_osd!\n"); | |
4123 | 329 return; |
330 } | |
331 | |
332 static void flip_page(void) | |
333 { | |
12582 | 334 mp_msg(MSGT_VO, MSGL_FATAL, |
335 "[xvidix] error: didn't used vidix flip_page!\n"); | |
4123 | 336 return; |
337 } | |
338 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
339 static int draw_slice(uint8_t * src[], int stride[], |
12582 | 340 int w, int h, int x, int y) |
4123 | 341 { |
12582 | 342 mp_msg(MSGT_VO, MSGL_FATAL, |
343 "[xvidix] error: didn't used vidix draw_slice!\n"); | |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
344 return -1; |
4123 | 345 } |
346 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
347 static int draw_frame(uint8_t * src[]) |
4123 | 348 { |
12582 | 349 mp_msg(MSGT_VO, MSGL_FATAL, |
350 "[xvidix] error: didn't used vidix draw_frame!\n"); | |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
351 return -1; |
4123 | 352 } |
353 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
354 static int query_format(uint32_t format) |
4123 | 355 { |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
356 return vidix_query_fourcc(format); |
4123 | 357 } |
358 | |
359 static void uninit(void) | |
360 { | |
12582 | 361 if (!vo_config_count) |
362 return; | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
363 vidix_term(); |
12582 | 364 |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
365 free(vidix_name); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
366 vidix_name = NULL; |
4441
90814d64a840
removed obosolete Terminate_Display_Process. using vo_x11_uninit. support UYVY format
alex
parents:
4434
diff
changeset
|
367 |
6095 | 368 vo_x11_uninit(); |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
369 } |
4352 | 370 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
371 static int preinit(const char *arg) |
4352 | 372 { |
6016 | 373 |
4363 | 374 if (arg) |
375 vidix_name = strdup(arg); | |
376 else | |
377 { | |
12582 | 378 mp_msg(MSGT_VO, MSGL_INFO, |
379 "No vidix driver name provided, probing available ones (-v option for details)!\n"); | |
380 vidix_name = NULL; | |
4363 | 381 } |
382 | |
12582 | 383 if (!vo_init()) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
384 return -1; |
7777 | 385 |
4363 | 386 if (vidix_preinit(vidix_name, &video_out_xvidix) != 0) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
387 return 1; |
4363 | 388 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
389 return 0; |
4352 | 390 } |
391 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
392 static int control(uint32_t request, void *data, ...) |
4352 | 393 { |
12582 | 394 switch (request) |
395 { | |
396 case VOCTRL_QUERY_FORMAT: | |
397 return query_format(*((uint32_t *) data)); | |
398 case VOCTRL_GUISUPPORT: | |
399 return VO_TRUE; | |
400 case VOCTRL_GET_PANSCAN: | |
401 if (!vo_config_count || !vo_fs) | |
402 return VO_FALSE; | |
403 return VO_TRUE; | |
404 case VOCTRL_ONTOP: | |
405 vo_x11_ontop(); | |
406 return VO_TRUE; | |
407 case VOCTRL_FULLSCREEN: | |
408 vo_x11_fullscreen(); | |
409 case VOCTRL_SET_PANSCAN: | |
410 if (vo_fs && (vo_panscan != vo_panscan_amount)) | |
411 { | |
412 panscan_calc(); | |
413 set_window(0); | |
414 } | |
415 return VO_TRUE; | |
416 case VOCTRL_SET_EQUALIZER: | |
417 { | |
418 va_list ap; | |
419 int value; | |
6786 | 420 |
12582 | 421 va_start(ap, data); |
422 value = va_arg(ap, int); | |
423 | |
424 va_end(ap); | |
6786 | 425 |
20110 | 426 return vidix_control(request, data, value); |
12582 | 427 } |
428 case VOCTRL_GET_EQUALIZER: | |
429 { | |
430 va_list ap; | |
431 int *value; | |
432 | |
433 va_start(ap, data); | |
434 value = va_arg(ap, int *); | |
435 | |
436 va_end(ap); | |
437 | |
438 return vidix_control(request, data, value); | |
439 } | |
22232 | 440 case VOCTRL_UPDATE_SCREENINFO: |
441 aspect_save_screenres(vo_screenwidth, vo_screenheight); | |
442 return VO_TRUE; | |
443 | |
12582 | 444 } |
445 return vidix_control(request, data); | |
6531 | 446 // return VO_NOTIMPL; |
4352 | 447 } |