annotate libvo/vo_x11.c @ 28992:947ef23ba798

Test if create_vdp_decoder() might succeed by calling it from config() with a small value for max_reference_frames. This does not make automatic recovery by using software decoder possible, but lets MPlayer fail more graciously on - actually existing - buggy hardware that does not support certain H264 widths when using hardware accelerated decoding (784, 864, 944, 1024, 1808, 1888 pixels on NVIDIA G98) and if the user tries to hardware-decode more samples at the same time than supported. Might break playback of H264 Intra-Only samples on hardware with very little video memory.
author cehoyos
date Sat, 21 Mar 2009 20:11:05 +0000
parents 7681eab10aea
children 6a0a30aa2b4a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
1 /*
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
2 * This file is part of MPlayer.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
3 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
5 * it under the terms of the GNU General Public License as published by
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
7 * (at your option) any later version.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
8 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
12 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
13 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
14 * You should have received a copy of the GNU General Public License along
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28149
diff changeset
17 */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 #include "config.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 #include "video_out_internal.h"
27972
f7b92cea7436 Use aspect.c code in vo_x11.c. Removes some inconsistencies in -wid handling.
reimar
parents: 27943
diff changeset
26 #include "aspect.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 #include <X11/Xutil.h>
4036
76ea6f97ebb7 added rgb24to32 instead of c converter
alex
parents: 4017
diff changeset
31
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
34 #include "x11_common.h"
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
35
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
36 #ifdef HAVE_SHM
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
37 #include <sys/ipc.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
38 #include <sys/shm.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
39 #include <X11/extensions/XShm.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
40
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
41 static int Shmem_Flag;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
42
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25626
diff changeset
43 //static int Quiet_Flag; Here also what is this for. It's used but isn't initialized?
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
44 static XShmSegmentInfo Shminfo[1];
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
45 static int gXErrorFlag;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
46 static int CompletionType = -1;
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
47 #endif
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
48
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
49 #include "sub.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 326
diff changeset
50
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents: 18746
diff changeset
51 #include "libswscale/swscale.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13056
diff changeset
52 #include "libmpcodecs/vf_scale.h"
18746
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
53 #define MODE_RGB 0x1
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
54 #define MODE_BGR 0x2
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
55
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13056
diff changeset
56 #include "mp_msg.h"
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
57 #include "help_mp.h"
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
58
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 26755
diff changeset
59 #ifdef CONFIG_GUI
23077
17bf4f4b0715 Gui --> gui
diego
parents: 22886
diff changeset
60 #include "gui/interface.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13056
diff changeset
61 #include "mplayer.h"
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
62 #endif
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
63
25216
3aee342be929 Make vo info structs const
reimar
parents: 24045
diff changeset
64 static const vo_info_t info = {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
65 "X11 ( XImage/Shm )",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
66 "x11",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
67 "Aaron Holtzman <aholtzma@ess.engr.uvic.ca>",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
68 ""
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
71 const LIBVO_EXTERN(x11)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 /* private prototypes */
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
73 static void (*draw_alpha_fnc) (int x0, int y0, int w, int h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
74 unsigned char *src, unsigned char *srca,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
75 int stride);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 /* local data */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 static unsigned char *ImageData;
21585
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
79 //! original unaligned pointer for free
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
80 static unsigned char *ImageDataOrig;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 /* X11 related variables */
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
83 static XImage *myximage = NULL;
23381
300e9b7c499f Remove some unused variables, patch by timwoj ieee org.
diego
parents: 23376
diff changeset
84 static int depth, bpp;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 static XWindowAttributes attribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
87 static int int_pause;
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
88
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
89 static int Flip_Flag;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
90 static int zoomFlag;
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
91
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93 static uint32_t image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 static uint32_t image_height;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
95 static uint32_t in_format;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
96 static uint32_t out_format = 0;
21586
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
97 static int out_offset;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
98 static int srcW = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
99 static int srcH = -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
101 static int old_vo_dwidth = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
102 static int old_vo_dheight = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
103
22886
71b3e04d0555 "()" to "(void)" function param list fixes
uau
parents: 22232
diff changeset
104 static void check_events(void)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
105 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
106 int ret = vo_x11_check_events(mDisplay);
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
107
27977
452231ce45b9 Clear the whole window on resize in vo_x11 since we do not
reimar
parents: 27976
diff changeset
108 if (ret & VO_EVENT_RESIZE)
452231ce45b9 Clear the whole window on resize in vo_x11 since we do not
reimar
parents: 27976
diff changeset
109 vo_x11_clearwindow(mDisplay, vo_window);
452231ce45b9 Clear the whole window on resize in vo_x11 since we do not
reimar
parents: 27976
diff changeset
110 else if (ret & VO_EVENT_EXPOSE)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
111 vo_x11_clearwindow_part(mDisplay, vo_window, myximage->width,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
112 myximage->height, 0);
27976
3f4990a693c2 Simplify vo_x11 check_events function
reimar
parents: 27975
diff changeset
113 if (ret & VO_EVENT_EXPOSE && int_pause)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
114 flip_page();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
115 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
116
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
117 static void draw_alpha_32(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
118 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
119 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
120 vo_draw_alpha_rgb32(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
121 ImageData + 4 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
122 4 * image_width);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
124
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
125 static void draw_alpha_24(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
126 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
127 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
128 vo_draw_alpha_rgb24(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
129 ImageData + 3 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
130 3 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
131 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
132
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
133 static void draw_alpha_16(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
134 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
135 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
136 vo_draw_alpha_rgb16(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
137 ImageData + 2 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
138 2 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
139 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
140
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
141 static void draw_alpha_15(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
142 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
143 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
144 vo_draw_alpha_rgb15(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
145 ImageData + 2 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
146 2 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
147 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
148
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
149 static void draw_alpha_null(int x0, int y0, int w, int h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
150 unsigned char *src, unsigned char *srca,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
151 int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
152 {
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
153 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
154
18746
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
155 static struct SwsContext *swsContext = NULL;
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
156 static int dst_width;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
157 extern int sws_flags;
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
158
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
159 static XVisualInfo vinfo;
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
160
17566
f580a7755ac5 Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents: 16171
diff changeset
161 static void getMyXImage(void)
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
162 {
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
163 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
164 if (mLocalDisplay && XShmQueryExtension(mDisplay))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
165 Shmem_Flag = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
166 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
167 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
168 Shmem_Flag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
169 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
170 "Shared memory not supported\nReverting to normal Xlib\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
171 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
172 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
173 CompletionType = XShmGetEventBase(mDisplay) + ShmCompletion;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
174
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
175 if (Shmem_Flag)
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
176 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
177 myximage =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
178 XShmCreateImage(mDisplay, vinfo.visual, depth, ZPixmap, NULL,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
179 &Shminfo[0], image_width, image_height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
180 if (myximage == NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
181 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
182 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
183 "Shared memory error,disabling ( Ximage error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
184 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
185 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
186 Shminfo[0].shmid = shmget(IPC_PRIVATE,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
187 myximage->bytes_per_line *
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
188 myximage->height, IPC_CREAT | 0777);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
189 if (Shminfo[0].shmid < 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
190 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
191 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
192 mp_msg(MSGT_VO, MSGL_V, "%s\n", strerror(errno));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
193 //perror( strerror( errno ) );
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
194 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
195 "Shared memory error,disabling ( seg id error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
196 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
197 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
198 Shminfo[0].shmaddr = (char *) shmat(Shminfo[0].shmid, 0, 0);
3209
0b172eb639f1 swscaler cleanup
michael
parents: 3003
diff changeset
199
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
200 if (Shminfo[0].shmaddr == ((char *) -1))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
201 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
202 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
203 if (Shminfo[0].shmaddr != ((char *) -1))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
204 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
205 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
206 "Shared memory error,disabling ( address error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
207 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
208 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
209 myximage->data = Shminfo[0].shmaddr;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
210 ImageData = (unsigned char *) myximage->data;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
211 Shminfo[0].readOnly = False;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
212 XShmAttach(mDisplay, &Shminfo[0]);
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
213
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
214 XSync(mDisplay, False);
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
215
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
216 if (gXErrorFlag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
217 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
218 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
219 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
220 mp_msg(MSGT_VO, MSGL_WARN, "Shared memory error,disabling.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
221 gXErrorFlag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
222 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
223 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
224 shmctl(Shminfo[0].shmid, IPC_RMID, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
225
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
226 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
227 static int firstTime = 1;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
228
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
229 if (firstTime)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
230 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
231 mp_msg(MSGT_VO, MSGL_V, "Sharing memory.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
232 firstTime = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
233 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
234 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
235 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
236 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
237 shmemerror:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
238 Shmem_Flag = 0;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
239 #endif
21584
3ddf91e141a3 Use XCreateImage instead of XGetImage, this is not only more correct and
reimar
parents: 20399
diff changeset
240 myximage = XCreateImage(mDisplay, vinfo.visual, depth, ZPixmap,
3ddf91e141a3 Use XCreateImage instead of XGetImage, this is not only more correct and
reimar
parents: 20399
diff changeset
241 0, NULL, image_width, image_height, 8, 0);
21585
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
242 ImageDataOrig = malloc(myximage->bytes_per_line * image_height + 32);
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
243 myximage->data = ImageDataOrig + 16 - ((long)ImageDataOrig & 15);
21584
3ddf91e141a3 Use XCreateImage instead of XGetImage, this is not only more correct and
reimar
parents: 20399
diff changeset
244 memset(myximage->data, 0, myximage->bytes_per_line * image_height);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
245 ImageData = myximage->data;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
246 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
247 }
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
248 #endif
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
249 }
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
250
17566
f580a7755ac5 Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents: 16171
diff changeset
251 static void freeMyXImage(void)
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
252 {
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
253 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
254 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
255 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
256 XShmDetach(mDisplay, &Shminfo[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
257 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
258 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
259 } else
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
260 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
261 {
21585
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
262 myximage->data = ImageDataOrig;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
263 XDestroyImage(myximage);
21585
e54f539c9b5d Align image data pointer, this is also in preparation of an upcoming patch
reimar
parents: 21584
diff changeset
264 ImageDataOrig = NULL;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
265 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
266 myximage = NULL;
21584
3ddf91e141a3 Use XCreateImage instead of XGetImage, this is not only more correct and
reimar
parents: 20399
diff changeset
267 ImageData = NULL;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
268 }
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
269
20399
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
270 #ifdef WORDS_BIGENDIAN
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
271 #define BO_NATIVE MSBFirst
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
272 #define BO_NONNATIVE LSBFirst
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
273 #else
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
274 #define BO_NATIVE LSBFirst
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
275 #define BO_NONNATIVE MSBFirst
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
276 #endif
25239
c1b3a06a3c6e Format mapping table should be const
reimar
parents: 25220
diff changeset
277 const struct fmt2Xfmtentry_s {
20399
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
278 uint32_t mpfmt;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
279 int byte_order;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
280 unsigned red_mask;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
281 unsigned green_mask;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
282 unsigned blue_mask;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
283 } fmt2Xfmt[] = {
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
284 {IMGFMT_RGB8, BO_NATIVE, 0x00000007, 0x00000038, 0x000000C0},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
285 {IMGFMT_RGB8, BO_NONNATIVE, 0x00000007, 0x00000038, 0x000000C0},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
286 {IMGFMT_BGR8, BO_NATIVE, 0x000000E0, 0x0000001C, 0x00000003},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
287 {IMGFMT_BGR8, BO_NONNATIVE, 0x000000E0, 0x0000001C, 0x00000003},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
288 {IMGFMT_RGB15, BO_NATIVE, 0x0000001F, 0x000003E0, 0x00007C00},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
289 {IMGFMT_BGR15, BO_NATIVE, 0x00007C00, 0x000003E0, 0x0000001F},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
290 {IMGFMT_RGB16, BO_NATIVE, 0x0000001F, 0x000007E0, 0x0000F800},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
291 {IMGFMT_BGR16, BO_NATIVE, 0x0000F800, 0x000007E0, 0x0000001F},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
292 {IMGFMT_RGB24, MSBFirst, 0x00FF0000, 0x0000FF00, 0x000000FF},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
293 {IMGFMT_RGB24, LSBFirst, 0x000000FF, 0x0000FF00, 0x00FF0000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
294 {IMGFMT_BGR24, MSBFirst, 0x000000FF, 0x0000FF00, 0x00FF0000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
295 {IMGFMT_BGR24, LSBFirst, 0x00FF0000, 0x0000FF00, 0x000000FF},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
296 {IMGFMT_RGB32, BO_NATIVE, 0x000000FF, 0x0000FF00, 0x00FF0000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
297 {IMGFMT_RGB32, BO_NONNATIVE, 0xFF000000, 0x00FF0000, 0x0000FF00},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
298 {IMGFMT_BGR32, BO_NATIVE, 0x00FF0000, 0x0000FF00, 0x000000FF},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
299 {IMGFMT_BGR32, BO_NONNATIVE, 0x0000FF00, 0x00FF0000, 0xFF000000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
300 {IMGFMT_ARGB, MSBFirst, 0x00FF0000, 0x0000FF00, 0x000000FF},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
301 {IMGFMT_ARGB, LSBFirst, 0x0000FF00, 0x00FF0000, 0xFF000000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
302 {IMGFMT_ABGR, MSBFirst, 0x000000FF, 0x0000FF00, 0x00FF0000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
303 {IMGFMT_ABGR, LSBFirst, 0xFF000000, 0x00FF0000, 0x0000FF00},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
304 {IMGFMT_RGBA, MSBFirst, 0xFF000000, 0x00FF0000, 0x0000FF00},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
305 {IMGFMT_RGBA, LSBFirst, 0x000000FF, 0x0000FF00, 0x00FF0000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
306 {IMGFMT_BGRA, MSBFirst, 0x0000FF00, 0x00FF0000, 0xFF000000},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
307 {IMGFMT_BGRA, LSBFirst, 0x00FF0000, 0x0000FF00, 0x000000FF},
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
308 {0, 0, 0, 0, 0}
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
309 };
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
310
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
311 static int config(uint32_t width, uint32_t height, uint32_t d_width,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
312 uint32_t d_height, uint32_t flags, char *title,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
313 uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314 {
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
315 // int screen;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
316
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
317 // int interval, prefer_blank, allow_exp, nothing;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
318 unsigned int fg, bg;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
319 Colormap theCmap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
320 XSetWindowAttributes xswa;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
321 unsigned long xswamask;
25239
c1b3a06a3c6e Format mapping table should be const
reimar
parents: 25220
diff changeset
322 const struct fmt2Xfmtentry_s *fmte = fmt2Xfmt;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
323
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
324 #ifdef CONFIG_XF86VM
27943
c25cbf15a51c Simplify handling of "flags" parameter
reimar
parents: 27942
diff changeset
325 int vm = flags & VOFLAG_MODESWITCHING;
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
326 #endif
27943
c25cbf15a51c Simplify handling of "flags" parameter
reimar
parents: 27942
diff changeset
327 Flip_Flag = flags & VOFLAG_FLIPPING;
c25cbf15a51c Simplify handling of "flags" parameter
reimar
parents: 27942
diff changeset
328 zoomFlag = flags & VOFLAG_SWSCALE;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
329
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
330 old_vo_dwidth = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
331 old_vo_dheight = -1;
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
332
27880
a28ca0971d9a Cosmetic changes to vo_x11 to reduce diff to vo_xv for future refactoring.
reimar
parents: 27879
diff changeset
333 int_pause = 0;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
334 if (!title)
17787
6eb3a513abb9 remove useless and memleak-causing strdup
reimar
parents: 17566
diff changeset
335 title = "MPlayer X11 (XImage/Shm) render";
4813
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
336
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
337 in_format = format;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
338 srcW = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
339 srcH = height;
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
340
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
341 XGetWindowAttributes(mDisplay, mRootWin, &attribs);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
342 depth = attribs.depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
343
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
344 if (depth != 15 && depth != 16 && depth != 24 && depth != 32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
345 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
346 Visual *visual;
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
347
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
348 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
349 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
350 if (!XMatchVisualInfo(mDisplay, mScreen, depth, DirectColor, &vinfo) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
351 (WinID > 0
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
352 && vinfo.visualid != XVisualIDFromVisual(attribs.visual)))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
353 XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo);
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
354
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
355 /* set image size (which is indeed neither the input nor output size),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
356 if zoom is on it will be changed during draw_slice anyway so we don't duplicate the aspect code here
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
357 */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
358 image_width = (width + 7) & (~7);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
359 image_height = height;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
360
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 26755
diff changeset
361 #ifdef CONFIG_GUI
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
362 if (use_gui)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
363 guiGetEvent(guiSetShVideo, 0); // the GUI will set up / resize the window
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
364 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
365 #endif
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
366 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
367 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
368 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
369 {
27890
a4e2700e9381 Simplify vo_vm_switch and vo_vm_close, everyone was using the (almost) same
reimar
parents: 27889
diff changeset
370 vo_vm_switch();
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
371 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
372 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
373 bg = WhitePixel(mDisplay, mScreen);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
374 fg = BlackPixel(mDisplay, mScreen);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
375
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
376 theCmap = vo_x11_create_colormap(&vinfo);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
377
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
378 xswa.background_pixel = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
379 xswa.border_pixel = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
380 xswa.colormap = theCmap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
381 xswamask = CWBackPixel | CWBorderPixel | CWColormap;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
382
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
383 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
384 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
385 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
386 xswa.override_redirect = True;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
387 xswamask |= CWOverrideRedirect;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
388 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
389 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
390
27891
8742bcad99b5 Use vo_dwidth/vo_dheight for creating the windows instead of d_width/d_height.
reimar
parents: 27890
diff changeset
391 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, vo_dwidth, vo_dheight,
23655
00aa61cde84a Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents: 23381
diff changeset
392 flags, theCmap, "x11", title);
27927
6f199f065e15 Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents: 27903
diff changeset
393 if (WinID > 0)
6f199f065e15 Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents: 27903
diff changeset
394 depth = vo_x11_update_geometry();
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
395
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
396 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
397 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
398 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
399 /* Grab the mouse pointer in our window */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
400 if (vo_grabpointer)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
401 XGrabPointer(mDisplay, vo_window, True, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
402 GrabModeAsync, GrabModeAsync,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
403 vo_window, None, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
404 XSetInputFocus(mDisplay, vo_window, RevertToNone, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
405 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
406 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
407 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
408
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
409 if (myximage)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
410 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
411 freeMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
412 sws_freeContext(swsContext);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
413 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
414 getMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
415
20399
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
416 while (fmte->mpfmt) {
27762
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
417 int depth = IMGFMT_RGB_DEPTH(fmte->mpfmt);
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
418 /* bits_per_pixel in X seems to be set to 16 for 15 bit formats
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
419 => force depth to 16 so that only the color masks are used for the format check */
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
420 if (depth == 15)
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
421 depth = 16;
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
422
7efce8fe3a04 fixed image format detection for 15 bit color depths
faust3
parents: 27412
diff changeset
423 if (depth == myximage->bits_per_pixel &&
20399
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
424 fmte->byte_order == myximage->byte_order &&
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
425 fmte->red_mask == myximage->red_mask &&
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
426 fmte->green_mask == myximage->green_mask &&
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
427 fmte->blue_mask == myximage->blue_mask)
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
428 break;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
429 fmte++;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
430 }
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
431 if (!fmte->mpfmt) {
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
432 mp_msg(MSGT_VO, MSGL_ERR,
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
433 "X server image format not supported, please contact the developers\n");
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
434 return -1;
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
435 }
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
436 out_format = fmte->mpfmt;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
437 switch ((bpp = myximage->bits_per_pixel))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
438 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
439 case 24:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
440 draw_alpha_fnc = draw_alpha_24;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
441 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
442 case 32:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
443 draw_alpha_fnc = draw_alpha_32;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
444 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
445 case 15:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
446 case 16:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
447 if (depth == 15)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
448 draw_alpha_fnc = draw_alpha_15;
20399
27aa9329d4f7 Proper detection of corresponding MPlayer image format for X server format for vo_x11.
reimar
parents: 20196
diff changeset
449 else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
450 draw_alpha_fnc = draw_alpha_16;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
451 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
452 default:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
453 draw_alpha_fnc = draw_alpha_null;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
454 }
21586
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
455 out_offset = 0;
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
456 // for these formats conversion is currently not support and
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
457 // we can easily "emulate" them.
21599
fe48c337a269 10l, missing () in check for 32bit endian-conversion hack
reimar
parents: 21586
diff changeset
458 if (out_format & 64 && (IMGFMT_IS_RGB(out_format) || IMGFMT_IS_BGR(out_format))) {
21586
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
459 out_format &= ~64;
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
460 #ifdef WORDS_BIGENDIAN
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
461 out_offset = 1;
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
462 #else
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
463 out_offset = -1;
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
464 #endif
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
465 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
466
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
467 /* always allocate swsContext as size could change between frames */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
468 swsContext =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
469 sws_getContextFromCmdLine(width, height, in_format, width, height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
470 out_format);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
471 if (!swsContext)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
472 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473
18746
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
474 dst_width = width;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
475 //printf( "X11 bpp: %d color mask: R:%lX G:%lX B:%lX\n",bpp,myximage->red_mask,myximage->green_mask,myximage->blue_mask );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
476
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
477 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
478 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
479
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
480 static void Display_Image(XImage * myximage, uint8_t * ImageData)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
481 {
27901
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
482 int x = (vo_dwidth - dst_width) / 2;
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
483 int y = (vo_dheight - myximage->height) / 2;
27975
806c541d03dd Do not draw in window if our image has not yet been adjusted to the new window size.
reimar
parents: 27974
diff changeset
484
806c541d03dd Do not draw in window if our image has not yet been adjusted to the new window size.
reimar
parents: 27974
diff changeset
485 // do not draw if the image needs rescaling
806c541d03dd Do not draw in window if our image has not yet been adjusted to the new window size.
reimar
parents: 27974
diff changeset
486 if ((old_vo_dwidth != vo_dwidth || old_vo_dheight != vo_dheight) && zoomFlag)
806c541d03dd Do not draw in window if our image has not yet been adjusted to the new window size.
reimar
parents: 27974
diff changeset
487 return;
806c541d03dd Do not draw in window if our image has not yet been adjusted to the new window size.
reimar
parents: 27974
diff changeset
488
27901
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
489 if (WinID == 0) {
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
490 x = vo_dx;
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
491 y = vo_dy;
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
492 }
21586
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
493 myximage->data += out_offset;
3003
16a593a1e6ed changed SH_MEM to HAVE_SHM according to configure
alex
parents: 2969
diff changeset
494 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
495 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
496 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
497 XShmPutImage(mDisplay, vo_window, vo_gc, myximage,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
498 0, 0,
27901
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
499 x, y, dst_width,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
500 myximage->height, True);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
501 } else
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
502 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
503 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
504 XPutImage(mDisplay, vo_window, vo_gc, myximage,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
505 0, 0,
27901
88fad4f51a94 respect -vf dsize etc. also for -rootwin, just like vo_xv does.
reimar
parents: 27892
diff changeset
506 x, y, dst_width,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
507 myximage->height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
508 }
21586
5a1e078720e7 Support for different endianness on client and server with -vo x11
reimar
parents: 21585
diff changeset
509 myximage->data -= out_offset;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
511
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
512 static void draw_osd(void)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
513 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
514 vo_draw_text(image_width, image_height, draw_alpha_fnc);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
515 }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
516
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
517 static void flip_page(void)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
518 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
519 Display_Image(myximage, ImageData);
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
520 XSync(mDisplay, False);
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
521 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
523 static int draw_slice(uint8_t * src[], int stride[], int w, int h,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
524 int x, int y)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
525 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
526 uint8_t *dst[3];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
527 int dstStride[3];
6059
c0ae8c0eda72 fix Arpi's bugs
pontscho
parents: 6045
diff changeset
528
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
529 if ((old_vo_dwidth != vo_dwidth
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
530 || old_vo_dheight != vo_dheight) /*&& y==0 */ && zoomFlag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
531 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
532 int newW = vo_dwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
533 int newH = vo_dheight;
18746
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
534 struct SwsContext *oldContext = swsContext;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
535
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
536 old_vo_dwidth = vo_dwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
537 old_vo_dheight = vo_dheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
538
27972
f7b92cea7436 Use aspect.c code in vo_x11.c. Removes some inconsistencies in -wid handling.
reimar
parents: 27943
diff changeset
539 if (vo_fs)
f7b92cea7436 Use aspect.c code in vo_x11.c. Removes some inconsistencies in -wid handling.
reimar
parents: 27943
diff changeset
540 aspect(&newW, &newH, A_ZOOM);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
541 if (sws_flags == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
542 newW &= (~31); // not needed but, if the user wants the FAST_BILINEAR SCALER, then its needed
4627
3db7ee2ac7b0 bgr15 / bgr16 input support (with -zoom)
michael
parents: 4596
diff changeset
543
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
544 swsContext = sws_getContextFromCmdLine(srcW, srcH, in_format,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
545 newW, newH, out_format);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
546 if (swsContext)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
547 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
548 image_width = (newW + 7) & (~7);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
549 image_height = newH;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
550
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
551 freeMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
552 getMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
553 sws_freeContext(oldContext);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
554 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
555 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
556 swsContext = oldContext;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
557 }
18746
497ebe3ecc2b Software Scaler headers usage cleanup
lucabe
parents: 18715
diff changeset
558 dst_width = newW;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
559 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
560 dstStride[1] = dstStride[2] = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
561 dst[1] = dst[2] = NULL;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
562
23284
dc2c6e97119c Simplify -flip handling on vo_x11.c
reimar
parents: 23283
diff changeset
563 dstStride[0] = image_width * ((bpp + 7) / 8);
dc2c6e97119c Simplify -flip handling on vo_x11.c
reimar
parents: 23283
diff changeset
564 dst[0] = ImageData;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
565 if (Flip_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
566 {
23284
dc2c6e97119c Simplify -flip handling on vo_x11.c
reimar
parents: 23283
diff changeset
567 dst[0] += dstStride[0] * (image_height - 1);
dc2c6e97119c Simplify -flip handling on vo_x11.c
reimar
parents: 23283
diff changeset
568 dstStride[0] = -dstStride[0];
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
569 }
23282
4e416a0d7665 Factor common code out of if in x11_common.c
reimar
parents: 23077
diff changeset
570 sws_scale_ordered(swsContext, src, stride, y, h, dst, dstStride);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
571 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
572 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
573
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
574 static int draw_frame(uint8_t * src[])
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
575 {
27883
96831cf06109 Remove code from unused and since ages deprecated draw_frame function.
reimar
parents: 27881
diff changeset
576 return VO_ERROR;
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
577 }
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
578
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
579 static uint32_t get_image(mp_image_t * mpi)
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
580 {
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
581 if (zoomFlag ||
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
582 !IMGFMT_IS_BGR(mpi->imgfmt) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
583 (IMGFMT_BGR_DEPTH(mpi->imgfmt) != vo_depthonscreen) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
584 ((mpi->type != MP_IMGTYPE_STATIC)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
585 && (mpi->type != MP_IMGTYPE_TEMP))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
586 || (mpi->flags & MP_IMGFLAG_PLANAR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
587 || (mpi->flags & MP_IMGFLAG_YUV) || (mpi->width != image_width)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
588 || (mpi->height != image_height))
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25962
diff changeset
589 return VO_FALSE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
590
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
591 if (Flip_Flag)
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
592 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
593 mpi->stride[0] = -image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
594 mpi->planes[0] = ImageData - mpi->stride[0] * (image_height - 1);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
595 } else
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
596 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
597 mpi->stride[0] = image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
598 mpi->planes[0] = ImageData;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
599 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
600 mpi->flags |= MP_IMGFLAG_DIRECT;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
601
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25962
diff changeset
602 return VO_TRUE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
603 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
604
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
605 static int query_format(uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
606 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
607 mp_msg(MSGT_VO, MSGL_DBG2,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
608 "vo_x11: query_format was called: %x (%s)\n", format,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
609 vo_format_name(format));
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
610 if (IMGFMT_IS_BGR(format))
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
611 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
612 if (IMGFMT_BGR_DEPTH(format) <= 8)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
613 return 0; // TODO 8bpp not yet fully implemented
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
614 if (IMGFMT_BGR_DEPTH(format) == vo_depthonscreen)
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13787
diff changeset
615 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_FLIP |
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
616 VFCAP_ACCEPT_STRIDE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
617 else
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13787
diff changeset
618 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_FLIP |
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
619 VFCAP_ACCEPT_STRIDE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
620 }
325
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
621
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
622 switch (format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
623 {
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
624 // case IMGFMT_BGR8:
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
625 // case IMGFMT_BGR15:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
626 // case IMGFMT_BGR16:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
627 // case IMGFMT_BGR24:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
628 // case IMGFMT_BGR32:
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
629 // return 0x2;
4905
eb1a28f1236a yuy2 support disabled to workaround stupid colorspace selection
michael
parents: 4889
diff changeset
630 // case IMGFMT_YUY2:
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
631 case IMGFMT_I420:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
632 case IMGFMT_IYUV:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
633 case IMGFMT_YV12:
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13787
diff changeset
634 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_ACCEPT_STRIDE;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
635 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
636 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
637 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
638
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
639
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
640 static void uninit(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
641 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
642 if (!myximage)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
643 return;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
644
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
645 freeMyXImage();
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
646
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
647 #ifdef CONFIG_XF86VM
27890
a4e2700e9381 Simplify vo_vm_switch and vo_vm_close, everyone was using the (almost) same
reimar
parents: 27889
diff changeset
648 vo_vm_close();
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
649 #endif
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
650
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
651 zoomFlag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
652 vo_x11_uninit();
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
653
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
654 sws_freeContext(swsContext);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
655 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
656
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
657 static int preinit(const char *arg)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
658 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
659 if (arg)
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
660 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
661 mp_msg(MSGT_VO, MSGL_ERR, "vo_x11: Unknown subdevice: %s\n", arg);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
662 return ENOSYS;
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
663 }
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
664
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
665 if (!vo_init())
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
666 return -1; // Can't open X11
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
667 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
668 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
669
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
670 static int control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
671 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
672 switch (request)
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
673 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
674 case VOCTRL_PAUSE:
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25962
diff changeset
675 return int_pause = 1;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
676 case VOCTRL_RESUME:
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25962
diff changeset
677 return int_pause = 0;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
678 case VOCTRL_QUERY_FORMAT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
679 return query_format(*((uint32_t *) data));
27879
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
680 case VOCTRL_GET_IMAGE:
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
681 return get_image(data);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
682 case VOCTRL_GUISUPPORT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
683 return VO_TRUE;
27879
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
684 case VOCTRL_FULLSCREEN:
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
685 vo_x11_fullscreen();
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
686 vo_x11_clearwindow(mDisplay, vo_window);
514afc9b920e Cosmetics for vo_x11 control() to make it more similar to vo_xv.c
reimar
parents: 27762
diff changeset
687 return VO_TRUE;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
688 case VOCTRL_SET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
689 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
690 va_list ap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
691 int value;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
692
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
693 va_start(ap, data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
694 value = va_arg(ap, int);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
695
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
696 va_end(ap);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
697 return vo_x11_set_equalizer(data, value);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
698 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
699 case VOCTRL_GET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
700 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
701 va_list ap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
702 int *value;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
703
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
704 va_start(ap, data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
705 value = va_arg(ap, int *);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
706
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
707 va_end(ap);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
708 return vo_x11_get_equalizer(data, value);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
709 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
710 case VOCTRL_ONTOP:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
711 vo_x11_ontop();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
712 return VO_TRUE;
22232
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 21599
diff changeset
713 case VOCTRL_UPDATE_SCREENINFO:
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 21599
diff changeset
714 update_xinerama_info();
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 21599
diff changeset
715 return VO_TRUE;
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
716 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
717 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
718 }