Mercurial > mplayer.hg
annotate libvo/vo_xvidix.c @ 35418:cedb0ba2b5c6
Move the code to set guiInfo's Track, Chapter and Angle start values.
Set them before checking whether there is any media opened, because
with no media opened we clear the counters.
author | ib |
---|---|
date | Thu, 29 Nov 2012 14:11:03 +0000 |
parents | e7f393cb9d0f |
children | 5d3f93051de9 |
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 |
4981 | 113 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
|
114 { |
12582 | 115 aspect(&dwidth, &dheight, A_ZOOM); |
116 drwX = | |
117 (vo_screenwidth - | |
118 (dwidth > vo_screenwidth ? vo_screenwidth : dwidth)) / 2; | |
119 drwcX = drwX; | |
120 drwY = | |
121 (vo_screenheight - | |
122 (dheight > vo_screenheight ? vo_screenheight : dheight)) / 2; | |
123 drwcY = drwY; | |
124 drwWidth = (dwidth > vo_screenwidth ? vo_screenwidth : dwidth); | |
125 drwHeight = | |
126 (dheight > vo_screenheight ? vo_screenheight : dheight); | |
127 mp_msg(MSGT_VO, MSGL_V, | |
128 "[xvidix-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", | |
129 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
|
130 } |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
131 |
12582 | 132 vo_dwidth = drwWidth; |
133 vo_dheight = drwHeight; | |
6307 | 134 |
27748 | 135 update_xinerama_info(); |
136 drwcX -= xinerama_x; | |
137 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
|
138 |
12582 | 139 if (vo_panscan > 0.0f && vo_fs) |
140 { | |
141 drwcX -= vo_panscan_x >> 1; | |
142 drwcY -= vo_panscan_y >> 1; | |
143 drwX -= vo_panscan_x >> 1; | |
144 drwY -= vo_panscan_y >> 1; | |
145 drwWidth += vo_panscan_x; | |
146 drwHeight += vo_panscan_y; | |
147 } | |
6307 | 148 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
149 /* set new values in VIDIX */ |
6299
4446af3c1a75
set_window() fixing detection of changement of the window position
attila
parents:
6095
diff
changeset
|
150 if (force_update || (window_x != drwcX) || (window_y != drwcY) || |
12582 | 151 (window_width != drwWidth) || (window_height != drwHeight)) |
4123 | 152 { |
12582 | 153 // do a backup of window coordinates |
154 window_x = drwcX; | |
155 window_y = drwcY; | |
156 vo_dx = drwcX; | |
157 vo_dy = drwcY; | |
158 window_width = drwWidth; | |
159 window_height = drwHeight; | |
4198
7e2bf04c9a7c
added vidix_start() and vidix_stop() for better runtime-resize support ;)
alex
parents:
4194
diff
changeset
|
160 |
12582 | 161 /* FIXME: implement runtime resize/move if possible, this way is very ugly! */ |
162 vidix_stop(); | |
163 if (vidix_init(image_width, image_height, vo_dx, vo_dy, | |
164 window_width, window_height, image_format, | |
165 vo_depthonscreen, vo_screenwidth, | |
166 vo_screenheight) != 0) | |
4123 | 167 { |
12582 | 168 mp_msg(MSGT_VO, MSGL_FATAL, |
169 "Can't initialize VIDIX driver: %s\n", strerror(errno)); | |
170 abort(); | |
171 } | |
172 vidix_start(); | |
4123 | 173 } |
12582 | 174 |
175 mp_msg(MSGT_VO, MSGL_V, | |
176 "[xvidix] window properties: pos: %dx%d, size: %dx%d\n", vo_dx, | |
177 vo_dy, window_width, window_height); | |
4123 | 178 |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
179 /* mDrawColorKey: */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
180 |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
181 /* fill drawable with specified color */ |
11216 | 182 if (!(vo_colorkey & 0xff000000)) |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
183 { |
12582 | 184 XSetBackground(mDisplay, vo_gc, 0L); |
185 XClearWindow(mDisplay, vo_window); | |
186 XSetForeground(mDisplay, vo_gc, colorkey); | |
187 XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth, | |
188 (vo_fs ? drwHeight - 1 : drwHeight)); | |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
189 } |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
190 /* flush, update drawable */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
191 XFlush(mDisplay); |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
192 |
4123 | 193 return; |
194 } | |
195 | |
196 /* connect to server, create and map window, | |
197 * allocate colors and (shared) memory | |
198 */ | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
199 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
12582 | 200 uint32_t d_height, uint32_t flags, char *title, |
201 uint32_t format) | |
4123 | 202 { |
203 XVisualInfo vinfo; | |
12582 | 204 |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
7931
diff
changeset
|
205 // XSizeHints hint; |
4123 | 206 XSetWindowAttributes xswa; |
207 unsigned long xswamask; | |
208 XWindowAttributes attribs; | |
10988 | 209 int window_depth, r, g, b; |
4125 | 210 |
5738 | 211 title = "MPlayer VIDIX X11 Overlay"; |
4123 | 212 |
213 image_height = height; | |
214 image_width = width; | |
215 image_format = format; | |
4459 | 216 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
217 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
|
218 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
|
219 |
6009 | 220 // vo_fs = flags&0x01; |
221 // if (vo_fs) | |
222 // { vo_old_width=d_width; vo_old_height=d_height; } | |
4123 | 223 |
10988 | 224 r = (vo_colorkey & 0x00ff0000) >> 16; |
225 g = (vo_colorkey & 0x0000ff00) >> 8; | |
226 b = vo_colorkey & 0x000000ff; | |
12582 | 227 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
|
228 { |
12582 | 229 case 32: |
230 colorkey = vo_colorkey; | |
231 break; | |
232 case 24: | |
233 colorkey = vo_colorkey & 0x00ffffff; | |
234 break; | |
235 case 16: | |
236 colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); | |
237 break; | |
238 case 15: | |
239 colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); | |
240 break; | |
241 default: | |
242 mp_msg(MSGT_VO, MSGL_ERR, | |
243 "Sorry, this (%d) color depth is not supported\n", | |
244 vo_depthonscreen); | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
245 } |
13946 | 246 mp_msg(MSGT_VO, MSGL_V, "Using colorkey: %x\n", colorkey); |
4123 | 247 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
248 if ((flags & VOFLAG_FULLSCREEN) || (flags & VOFLAG_SWSCALE)) |
12582 | 249 aspect(&d_width, &d_height, A_ZOOM); |
250 dwidth = d_width; | |
251 dheight = d_height; | |
252 /* Make the window */ | |
253 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), | |
254 &attribs); | |
4123 | 255 |
12582 | 256 /* from vo_x11 */ |
257 window_depth = attribs.depth; | |
258 if ((window_depth != 15) && (window_depth != 16) | |
259 && (window_depth != 24) && (window_depth != 32)) | |
260 window_depth = 24; | |
261 XMatchVisualInfo(mDisplay, mScreen, window_depth, TrueColor, | |
262 &vinfo); | |
4123 | 263 |
12582 | 264 xswa.background_pixel = BlackPixel(mDisplay, mScreen); |
265 xswa.border_pixel = 0; | |
266 xswa.colormap = | |
267 XCreateColormap(mDisplay, RootWindow(mDisplay, mScreen), | |
268 vinfo.visual, AllocNone); | |
27927
6f199f065e15
Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents:
27903
diff
changeset
|
269 xswamask = CWBackPixel | CWBorderPixel | CWColormap; |
4123 | 270 |
23655
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
271 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
|
272 window_width, window_height, flags, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
273 CopyFromParent, "xvidix", title); |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
274 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); |
12582 | 275 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
276 if ((!WinID) && (flags & VOFLAG_FULLSCREEN)) |
12582 | 277 { |
278 vo_dx = 0; | |
279 vo_dy = 0; | |
280 vo_dwidth = vo_screenwidth; | |
281 vo_dheight = vo_screenheight; | |
282 vo_fs = 1; | |
283 } | |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
284 |
4255 | 285 if (vidix_grkey_support()) |
286 { | |
12582 | 287 vidix_grkey_get(&gr_key); |
288 gr_key.key_op = KEYS_PUT; | |
289 if (!(vo_colorkey & 0xff000000)) | |
290 { | |
291 gr_key.ckey.op = CKEY_TRUE; | |
292 gr_key.ckey.red = r; | |
293 gr_key.ckey.green = g; | |
294 gr_key.ckey.blue = b; | |
295 } else | |
296 gr_key.ckey.op = CKEY_FALSE; | |
297 vidix_grkey_set(&gr_key); | |
4255 | 298 } |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
299 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6953
diff
changeset
|
300 set_window(1); |
6755 | 301 |
4805 | 302 XSync(mDisplay, False); |
4123 | 303 |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
304 panscan_calc(); |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
305 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
306 return 0; |
4123 | 307 } |
308 | |
309 static void check_events(void) | |
310 { | |
311 const int event = vo_x11_check_events(mDisplay); | |
4125 | 312 |
32371 | 313 if (event & (VO_EVENT_RESIZE | VO_EVENT_MOVE | VO_EVENT_EXPOSE)) |
12582 | 314 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
|
315 |
4125 | 316 return; |
4123 | 317 } |
318 | |
319 /* draw_osd, flip_page, draw_slice, draw_frame should be | |
320 overwritten with vidix functions (vosub_vidix.c) */ | |
321 static void draw_osd(void) | |
322 { | |
12582 | 323 mp_msg(MSGT_VO, MSGL_FATAL, |
324 "[xvidix] error: didn't used vidix draw_osd!\n"); | |
4123 | 325 return; |
326 } | |
327 | |
328 static void flip_page(void) | |
329 { | |
12582 | 330 mp_msg(MSGT_VO, MSGL_FATAL, |
331 "[xvidix] error: didn't used vidix flip_page!\n"); | |
4123 | 332 return; |
333 } | |
334 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
335 static int draw_slice(uint8_t * src[], int stride[], |
12582 | 336 int w, int h, int x, int y) |
4123 | 337 { |
12582 | 338 mp_msg(MSGT_VO, MSGL_FATAL, |
339 "[xvidix] error: didn't used vidix draw_slice!\n"); | |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
340 return -1; |
4123 | 341 } |
342 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
343 static int draw_frame(uint8_t * src[]) |
4123 | 344 { |
12582 | 345 mp_msg(MSGT_VO, MSGL_FATAL, |
346 "[xvidix] error: didn't used vidix draw_frame!\n"); | |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
347 return -1; |
4123 | 348 } |
349 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
350 static int query_format(uint32_t format) |
4123 | 351 { |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
352 return vidix_query_fourcc(format); |
4123 | 353 } |
354 | |
355 static void uninit(void) | |
356 { | |
12582 | 357 if (!vo_config_count) |
358 return; | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
359 vidix_term(); |
12582 | 360 |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
361 free(vidix_name); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
362 vidix_name = NULL; |
4441
90814d64a840
removed obosolete Terminate_Display_Process. using vo_x11_uninit. support UYVY format
alex
parents:
4434
diff
changeset
|
363 |
6095 | 364 vo_x11_uninit(); |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
365 } |
4352 | 366 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
367 static int preinit(const char *arg) |
4352 | 368 { |
6016 | 369 |
4363 | 370 if (arg) |
371 vidix_name = strdup(arg); | |
372 else | |
373 { | |
12582 | 374 mp_msg(MSGT_VO, MSGL_INFO, |
375 "No vidix driver name provided, probing available ones (-v option for details)!\n"); | |
376 vidix_name = NULL; | |
4363 | 377 } |
378 | |
12582 | 379 if (!vo_init()) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
380 return -1; |
7777 | 381 |
4363 | 382 if (vidix_preinit(vidix_name, &video_out_xvidix) != 0) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
383 return 1; |
4363 | 384 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
385 return 0; |
4352 | 386 } |
387 | |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
33301
diff
changeset
|
388 static int control(uint32_t request, void *data) |
4352 | 389 { |
12582 | 390 switch (request) |
391 { | |
392 case VOCTRL_QUERY_FORMAT: | |
393 return query_format(*((uint32_t *) data)); | |
394 case VOCTRL_GUISUPPORT: | |
395 return VO_TRUE; | |
396 case VOCTRL_GET_PANSCAN: | |
397 if (!vo_config_count || !vo_fs) | |
398 return VO_FALSE; | |
399 return VO_TRUE; | |
400 case VOCTRL_ONTOP: | |
401 vo_x11_ontop(); | |
402 return VO_TRUE; | |
403 case VOCTRL_FULLSCREEN: | |
404 vo_x11_fullscreen(); | |
405 case VOCTRL_SET_PANSCAN: | |
406 if (vo_fs && (vo_panscan != vo_panscan_amount)) | |
407 { | |
408 panscan_calc(); | |
409 set_window(0); | |
410 } | |
411 return VO_TRUE; | |
22232 | 412 case VOCTRL_UPDATE_SCREENINFO: |
413 aspect_save_screenres(vo_screenwidth, vo_screenheight); | |
414 return VO_TRUE; | |
415 | |
12582 | 416 } |
417 return vidix_control(request, data); | |
6531 | 418 // return VO_NOTIMPL; |
4352 | 419 } |