xvmc.c revision 1.5 1 1.1 mrg /*
2 1.1 mrg * This file generated automatically from xvmc.xml by c_client.py.
3 1.1 mrg * Edit at your peril.
4 1.1 mrg */
5 1.1 mrg
6 1.2 mrg #ifdef HAVE_CONFIG_H
7 1.2 mrg #include "config.h"
8 1.2 mrg #endif
9 1.2 mrg #include <stdlib.h>
10 1.1 mrg #include <string.h>
11 1.1 mrg #include <assert.h>
12 1.2 mrg #include <stddef.h> /* for offsetof() */
13 1.1 mrg #include "xcbext.h"
14 1.1 mrg #include "xvmc.h"
15 1.2 mrg
16 1.2 mrg #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
17 1.1 mrg #include "xv.h"
18 1.1 mrg
19 1.1 mrg xcb_extension_t xcb_xvmc_id = { "XVideo-MotionCompensation", 0 };
20 1.1 mrg
21 1.1 mrg void
22 1.5 mrg xcb_xvmc_context_next (xcb_xvmc_context_iterator_t *i)
23 1.1 mrg {
24 1.1 mrg --i->rem;
25 1.1 mrg ++i->data;
26 1.1 mrg i->index += sizeof(xcb_xvmc_context_t);
27 1.1 mrg }
28 1.1 mrg
29 1.1 mrg xcb_generic_iterator_t
30 1.5 mrg xcb_xvmc_context_end (xcb_xvmc_context_iterator_t i)
31 1.1 mrg {
32 1.1 mrg xcb_generic_iterator_t ret;
33 1.1 mrg ret.data = i.data + i.rem;
34 1.1 mrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
35 1.1 mrg ret.rem = 0;
36 1.1 mrg return ret;
37 1.1 mrg }
38 1.1 mrg
39 1.1 mrg void
40 1.5 mrg xcb_xvmc_surface_next (xcb_xvmc_surface_iterator_t *i)
41 1.1 mrg {
42 1.1 mrg --i->rem;
43 1.1 mrg ++i->data;
44 1.1 mrg i->index += sizeof(xcb_xvmc_surface_t);
45 1.1 mrg }
46 1.1 mrg
47 1.1 mrg xcb_generic_iterator_t
48 1.5 mrg xcb_xvmc_surface_end (xcb_xvmc_surface_iterator_t i)
49 1.1 mrg {
50 1.1 mrg xcb_generic_iterator_t ret;
51 1.1 mrg ret.data = i.data + i.rem;
52 1.1 mrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
53 1.1 mrg ret.rem = 0;
54 1.1 mrg return ret;
55 1.1 mrg }
56 1.1 mrg
57 1.1 mrg void
58 1.5 mrg xcb_xvmc_subpicture_next (xcb_xvmc_subpicture_iterator_t *i)
59 1.1 mrg {
60 1.1 mrg --i->rem;
61 1.1 mrg ++i->data;
62 1.1 mrg i->index += sizeof(xcb_xvmc_subpicture_t);
63 1.1 mrg }
64 1.1 mrg
65 1.1 mrg xcb_generic_iterator_t
66 1.5 mrg xcb_xvmc_subpicture_end (xcb_xvmc_subpicture_iterator_t i)
67 1.1 mrg {
68 1.1 mrg xcb_generic_iterator_t ret;
69 1.1 mrg ret.data = i.data + i.rem;
70 1.1 mrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
71 1.1 mrg ret.rem = 0;
72 1.1 mrg return ret;
73 1.1 mrg }
74 1.1 mrg
75 1.1 mrg void
76 1.5 mrg xcb_xvmc_surface_info_next (xcb_xvmc_surface_info_iterator_t *i)
77 1.1 mrg {
78 1.1 mrg --i->rem;
79 1.1 mrg ++i->data;
80 1.1 mrg i->index += sizeof(xcb_xvmc_surface_info_t);
81 1.1 mrg }
82 1.1 mrg
83 1.1 mrg xcb_generic_iterator_t
84 1.5 mrg xcb_xvmc_surface_info_end (xcb_xvmc_surface_info_iterator_t i)
85 1.1 mrg {
86 1.1 mrg xcb_generic_iterator_t ret;
87 1.1 mrg ret.data = i.data + i.rem;
88 1.1 mrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
89 1.1 mrg ret.rem = 0;
90 1.1 mrg return ret;
91 1.1 mrg }
92 1.1 mrg
93 1.1 mrg xcb_xvmc_query_version_cookie_t
94 1.5 mrg xcb_xvmc_query_version (xcb_connection_t *c)
95 1.1 mrg {
96 1.1 mrg static const xcb_protocol_request_t xcb_req = {
97 1.5 mrg .count = 2,
98 1.5 mrg .ext = &xcb_xvmc_id,
99 1.5 mrg .opcode = XCB_XVMC_QUERY_VERSION,
100 1.5 mrg .isvoid = 0
101 1.1 mrg };
102 1.4 mrg
103 1.1 mrg struct iovec xcb_parts[4];
104 1.1 mrg xcb_xvmc_query_version_cookie_t xcb_ret;
105 1.1 mrg xcb_xvmc_query_version_request_t xcb_out;
106 1.4 mrg
107 1.4 mrg
108 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
109 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
110 1.1 mrg xcb_parts[3].iov_base = 0;
111 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
112 1.4 mrg
113 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
114 1.1 mrg return xcb_ret;
115 1.1 mrg }
116 1.1 mrg
117 1.1 mrg xcb_xvmc_query_version_cookie_t
118 1.5 mrg xcb_xvmc_query_version_unchecked (xcb_connection_t *c)
119 1.1 mrg {
120 1.1 mrg static const xcb_protocol_request_t xcb_req = {
121 1.5 mrg .count = 2,
122 1.5 mrg .ext = &xcb_xvmc_id,
123 1.5 mrg .opcode = XCB_XVMC_QUERY_VERSION,
124 1.5 mrg .isvoid = 0
125 1.1 mrg };
126 1.4 mrg
127 1.1 mrg struct iovec xcb_parts[4];
128 1.1 mrg xcb_xvmc_query_version_cookie_t xcb_ret;
129 1.1 mrg xcb_xvmc_query_version_request_t xcb_out;
130 1.4 mrg
131 1.4 mrg
132 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
133 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
134 1.1 mrg xcb_parts[3].iov_base = 0;
135 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
136 1.4 mrg
137 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
138 1.1 mrg return xcb_ret;
139 1.1 mrg }
140 1.1 mrg
141 1.1 mrg xcb_xvmc_query_version_reply_t *
142 1.5 mrg xcb_xvmc_query_version_reply (xcb_connection_t *c,
143 1.1 mrg xcb_xvmc_query_version_cookie_t cookie /**< */,
144 1.5 mrg xcb_generic_error_t **e)
145 1.1 mrg {
146 1.1 mrg return (xcb_xvmc_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
147 1.1 mrg }
148 1.1 mrg
149 1.2 mrg int
150 1.5 mrg xcb_xvmc_list_surface_types_sizeof (const void *_buffer)
151 1.2 mrg {
152 1.2 mrg char *xcb_tmp = (char *)_buffer;
153 1.2 mrg const xcb_xvmc_list_surface_types_reply_t *_aux = (xcb_xvmc_list_surface_types_reply_t *)_buffer;
154 1.2 mrg unsigned int xcb_buffer_len = 0;
155 1.2 mrg unsigned int xcb_block_len = 0;
156 1.2 mrg unsigned int xcb_pad = 0;
157 1.3 mrg unsigned int xcb_align_to = 0;
158 1.2 mrg
159 1.2 mrg
160 1.2 mrg xcb_block_len += sizeof(xcb_xvmc_list_surface_types_reply_t);
161 1.2 mrg xcb_tmp += xcb_block_len;
162 1.3 mrg xcb_buffer_len += xcb_block_len;
163 1.3 mrg xcb_block_len = 0;
164 1.2 mrg /* surfaces */
165 1.2 mrg xcb_block_len += _aux->num * sizeof(xcb_xvmc_surface_info_t);
166 1.2 mrg xcb_tmp += xcb_block_len;
167 1.2 mrg xcb_align_to = ALIGNOF(xcb_xvmc_surface_info_t);
168 1.2 mrg /* insert padding */
169 1.2 mrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
170 1.2 mrg xcb_buffer_len += xcb_block_len + xcb_pad;
171 1.2 mrg if (0 != xcb_pad) {
172 1.2 mrg xcb_tmp += xcb_pad;
173 1.2 mrg xcb_pad = 0;
174 1.2 mrg }
175 1.2 mrg xcb_block_len = 0;
176 1.2 mrg
177 1.2 mrg return xcb_buffer_len;
178 1.2 mrg }
179 1.2 mrg
180 1.1 mrg xcb_xvmc_list_surface_types_cookie_t
181 1.5 mrg xcb_xvmc_list_surface_types (xcb_connection_t *c,
182 1.5 mrg xcb_xv_port_t port_id)
183 1.1 mrg {
184 1.1 mrg static const xcb_protocol_request_t xcb_req = {
185 1.5 mrg .count = 2,
186 1.5 mrg .ext = &xcb_xvmc_id,
187 1.5 mrg .opcode = XCB_XVMC_LIST_SURFACE_TYPES,
188 1.5 mrg .isvoid = 0
189 1.1 mrg };
190 1.4 mrg
191 1.1 mrg struct iovec xcb_parts[4];
192 1.1 mrg xcb_xvmc_list_surface_types_cookie_t xcb_ret;
193 1.1 mrg xcb_xvmc_list_surface_types_request_t xcb_out;
194 1.4 mrg
195 1.1 mrg xcb_out.port_id = port_id;
196 1.4 mrg
197 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
198 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
199 1.1 mrg xcb_parts[3].iov_base = 0;
200 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
201 1.4 mrg
202 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
203 1.1 mrg return xcb_ret;
204 1.1 mrg }
205 1.1 mrg
206 1.1 mrg xcb_xvmc_list_surface_types_cookie_t
207 1.5 mrg xcb_xvmc_list_surface_types_unchecked (xcb_connection_t *c,
208 1.5 mrg xcb_xv_port_t port_id)
209 1.1 mrg {
210 1.1 mrg static const xcb_protocol_request_t xcb_req = {
211 1.5 mrg .count = 2,
212 1.5 mrg .ext = &xcb_xvmc_id,
213 1.5 mrg .opcode = XCB_XVMC_LIST_SURFACE_TYPES,
214 1.5 mrg .isvoid = 0
215 1.1 mrg };
216 1.4 mrg
217 1.1 mrg struct iovec xcb_parts[4];
218 1.1 mrg xcb_xvmc_list_surface_types_cookie_t xcb_ret;
219 1.1 mrg xcb_xvmc_list_surface_types_request_t xcb_out;
220 1.4 mrg
221 1.1 mrg xcb_out.port_id = port_id;
222 1.4 mrg
223 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
224 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
225 1.1 mrg xcb_parts[3].iov_base = 0;
226 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
227 1.4 mrg
228 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
229 1.1 mrg return xcb_ret;
230 1.1 mrg }
231 1.1 mrg
232 1.1 mrg xcb_xvmc_surface_info_t *
233 1.5 mrg xcb_xvmc_list_surface_types_surfaces (const xcb_xvmc_list_surface_types_reply_t *R)
234 1.1 mrg {
235 1.1 mrg return (xcb_xvmc_surface_info_t *) (R + 1);
236 1.1 mrg }
237 1.1 mrg
238 1.1 mrg int
239 1.5 mrg xcb_xvmc_list_surface_types_surfaces_length (const xcb_xvmc_list_surface_types_reply_t *R)
240 1.1 mrg {
241 1.1 mrg return R->num;
242 1.1 mrg }
243 1.1 mrg
244 1.1 mrg xcb_xvmc_surface_info_iterator_t
245 1.5 mrg xcb_xvmc_list_surface_types_surfaces_iterator (const xcb_xvmc_list_surface_types_reply_t *R)
246 1.1 mrg {
247 1.1 mrg xcb_xvmc_surface_info_iterator_t i;
248 1.1 mrg i.data = (xcb_xvmc_surface_info_t *) (R + 1);
249 1.1 mrg i.rem = R->num;
250 1.1 mrg i.index = (char *) i.data - (char *) R;
251 1.1 mrg return i;
252 1.1 mrg }
253 1.1 mrg
254 1.1 mrg xcb_xvmc_list_surface_types_reply_t *
255 1.5 mrg xcb_xvmc_list_surface_types_reply (xcb_connection_t *c,
256 1.1 mrg xcb_xvmc_list_surface_types_cookie_t cookie /**< */,
257 1.5 mrg xcb_generic_error_t **e)
258 1.1 mrg {
259 1.1 mrg return (xcb_xvmc_list_surface_types_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
260 1.1 mrg }
261 1.1 mrg
262 1.2 mrg int
263 1.5 mrg xcb_xvmc_create_context_sizeof (const void *_buffer)
264 1.2 mrg {
265 1.2 mrg char *xcb_tmp = (char *)_buffer;
266 1.2 mrg const xcb_xvmc_create_context_reply_t *_aux = (xcb_xvmc_create_context_reply_t *)_buffer;
267 1.2 mrg unsigned int xcb_buffer_len = 0;
268 1.2 mrg unsigned int xcb_block_len = 0;
269 1.2 mrg unsigned int xcb_pad = 0;
270 1.3 mrg unsigned int xcb_align_to = 0;
271 1.2 mrg
272 1.2 mrg
273 1.2 mrg xcb_block_len += sizeof(xcb_xvmc_create_context_reply_t);
274 1.2 mrg xcb_tmp += xcb_block_len;
275 1.3 mrg xcb_buffer_len += xcb_block_len;
276 1.3 mrg xcb_block_len = 0;
277 1.2 mrg /* priv_data */
278 1.2 mrg xcb_block_len += _aux->length * sizeof(uint32_t);
279 1.2 mrg xcb_tmp += xcb_block_len;
280 1.2 mrg xcb_align_to = ALIGNOF(uint32_t);
281 1.2 mrg /* insert padding */
282 1.2 mrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
283 1.2 mrg xcb_buffer_len += xcb_block_len + xcb_pad;
284 1.2 mrg if (0 != xcb_pad) {
285 1.2 mrg xcb_tmp += xcb_pad;
286 1.2 mrg xcb_pad = 0;
287 1.2 mrg }
288 1.2 mrg xcb_block_len = 0;
289 1.2 mrg
290 1.2 mrg return xcb_buffer_len;
291 1.2 mrg }
292 1.2 mrg
293 1.1 mrg xcb_xvmc_create_context_cookie_t
294 1.5 mrg xcb_xvmc_create_context (xcb_connection_t *c,
295 1.5 mrg xcb_xvmc_context_t context_id,
296 1.5 mrg xcb_xv_port_t port_id,
297 1.5 mrg xcb_xvmc_surface_t surface_id,
298 1.5 mrg uint16_t width,
299 1.5 mrg uint16_t height,
300 1.5 mrg uint32_t flags)
301 1.1 mrg {
302 1.1 mrg static const xcb_protocol_request_t xcb_req = {
303 1.5 mrg .count = 2,
304 1.5 mrg .ext = &xcb_xvmc_id,
305 1.5 mrg .opcode = XCB_XVMC_CREATE_CONTEXT,
306 1.5 mrg .isvoid = 0
307 1.1 mrg };
308 1.4 mrg
309 1.1 mrg struct iovec xcb_parts[4];
310 1.1 mrg xcb_xvmc_create_context_cookie_t xcb_ret;
311 1.1 mrg xcb_xvmc_create_context_request_t xcb_out;
312 1.4 mrg
313 1.1 mrg xcb_out.context_id = context_id;
314 1.1 mrg xcb_out.port_id = port_id;
315 1.1 mrg xcb_out.surface_id = surface_id;
316 1.1 mrg xcb_out.width = width;
317 1.1 mrg xcb_out.height = height;
318 1.1 mrg xcb_out.flags = flags;
319 1.4 mrg
320 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
321 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
322 1.1 mrg xcb_parts[3].iov_base = 0;
323 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
324 1.4 mrg
325 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
326 1.1 mrg return xcb_ret;
327 1.1 mrg }
328 1.1 mrg
329 1.1 mrg xcb_xvmc_create_context_cookie_t
330 1.5 mrg xcb_xvmc_create_context_unchecked (xcb_connection_t *c,
331 1.5 mrg xcb_xvmc_context_t context_id,
332 1.5 mrg xcb_xv_port_t port_id,
333 1.5 mrg xcb_xvmc_surface_t surface_id,
334 1.5 mrg uint16_t width,
335 1.5 mrg uint16_t height,
336 1.5 mrg uint32_t flags)
337 1.1 mrg {
338 1.1 mrg static const xcb_protocol_request_t xcb_req = {
339 1.5 mrg .count = 2,
340 1.5 mrg .ext = &xcb_xvmc_id,
341 1.5 mrg .opcode = XCB_XVMC_CREATE_CONTEXT,
342 1.5 mrg .isvoid = 0
343 1.1 mrg };
344 1.4 mrg
345 1.1 mrg struct iovec xcb_parts[4];
346 1.1 mrg xcb_xvmc_create_context_cookie_t xcb_ret;
347 1.1 mrg xcb_xvmc_create_context_request_t xcb_out;
348 1.4 mrg
349 1.1 mrg xcb_out.context_id = context_id;
350 1.1 mrg xcb_out.port_id = port_id;
351 1.1 mrg xcb_out.surface_id = surface_id;
352 1.1 mrg xcb_out.width = width;
353 1.1 mrg xcb_out.height = height;
354 1.1 mrg xcb_out.flags = flags;
355 1.4 mrg
356 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
357 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
358 1.1 mrg xcb_parts[3].iov_base = 0;
359 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
360 1.4 mrg
361 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
362 1.1 mrg return xcb_ret;
363 1.1 mrg }
364 1.1 mrg
365 1.1 mrg uint32_t *
366 1.5 mrg xcb_xvmc_create_context_priv_data (const xcb_xvmc_create_context_reply_t *R)
367 1.1 mrg {
368 1.1 mrg return (uint32_t *) (R + 1);
369 1.1 mrg }
370 1.1 mrg
371 1.1 mrg int
372 1.5 mrg xcb_xvmc_create_context_priv_data_length (const xcb_xvmc_create_context_reply_t *R)
373 1.1 mrg {
374 1.1 mrg return R->length;
375 1.1 mrg }
376 1.1 mrg
377 1.1 mrg xcb_generic_iterator_t
378 1.5 mrg xcb_xvmc_create_context_priv_data_end (const xcb_xvmc_create_context_reply_t *R)
379 1.1 mrg {
380 1.1 mrg xcb_generic_iterator_t i;
381 1.1 mrg i.data = ((uint32_t *) (R + 1)) + (R->length);
382 1.1 mrg i.rem = 0;
383 1.1 mrg i.index = (char *) i.data - (char *) R;
384 1.1 mrg return i;
385 1.1 mrg }
386 1.1 mrg
387 1.1 mrg xcb_xvmc_create_context_reply_t *
388 1.5 mrg xcb_xvmc_create_context_reply (xcb_connection_t *c,
389 1.1 mrg xcb_xvmc_create_context_cookie_t cookie /**< */,
390 1.5 mrg xcb_generic_error_t **e)
391 1.1 mrg {
392 1.1 mrg return (xcb_xvmc_create_context_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
393 1.1 mrg }
394 1.1 mrg
395 1.1 mrg xcb_void_cookie_t
396 1.5 mrg xcb_xvmc_destroy_context_checked (xcb_connection_t *c,
397 1.5 mrg xcb_xvmc_context_t context_id)
398 1.1 mrg {
399 1.1 mrg static const xcb_protocol_request_t xcb_req = {
400 1.5 mrg .count = 2,
401 1.5 mrg .ext = &xcb_xvmc_id,
402 1.5 mrg .opcode = XCB_XVMC_DESTROY_CONTEXT,
403 1.5 mrg .isvoid = 1
404 1.1 mrg };
405 1.4 mrg
406 1.1 mrg struct iovec xcb_parts[4];
407 1.1 mrg xcb_void_cookie_t xcb_ret;
408 1.1 mrg xcb_xvmc_destroy_context_request_t xcb_out;
409 1.4 mrg
410 1.1 mrg xcb_out.context_id = context_id;
411 1.4 mrg
412 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
413 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
414 1.1 mrg xcb_parts[3].iov_base = 0;
415 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
416 1.4 mrg
417 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
418 1.1 mrg return xcb_ret;
419 1.1 mrg }
420 1.1 mrg
421 1.1 mrg xcb_void_cookie_t
422 1.5 mrg xcb_xvmc_destroy_context (xcb_connection_t *c,
423 1.5 mrg xcb_xvmc_context_t context_id)
424 1.1 mrg {
425 1.1 mrg static const xcb_protocol_request_t xcb_req = {
426 1.5 mrg .count = 2,
427 1.5 mrg .ext = &xcb_xvmc_id,
428 1.5 mrg .opcode = XCB_XVMC_DESTROY_CONTEXT,
429 1.5 mrg .isvoid = 1
430 1.1 mrg };
431 1.4 mrg
432 1.1 mrg struct iovec xcb_parts[4];
433 1.1 mrg xcb_void_cookie_t xcb_ret;
434 1.1 mrg xcb_xvmc_destroy_context_request_t xcb_out;
435 1.4 mrg
436 1.1 mrg xcb_out.context_id = context_id;
437 1.4 mrg
438 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
439 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
440 1.1 mrg xcb_parts[3].iov_base = 0;
441 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
442 1.4 mrg
443 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
444 1.1 mrg return xcb_ret;
445 1.1 mrg }
446 1.1 mrg
447 1.2 mrg int
448 1.5 mrg xcb_xvmc_create_surface_sizeof (const void *_buffer)
449 1.2 mrg {
450 1.2 mrg char *xcb_tmp = (char *)_buffer;
451 1.2 mrg const xcb_xvmc_create_surface_reply_t *_aux = (xcb_xvmc_create_surface_reply_t *)_buffer;
452 1.2 mrg unsigned int xcb_buffer_len = 0;
453 1.2 mrg unsigned int xcb_block_len = 0;
454 1.2 mrg unsigned int xcb_pad = 0;
455 1.3 mrg unsigned int xcb_align_to = 0;
456 1.2 mrg
457 1.2 mrg
458 1.2 mrg xcb_block_len += sizeof(xcb_xvmc_create_surface_reply_t);
459 1.2 mrg xcb_tmp += xcb_block_len;
460 1.3 mrg xcb_buffer_len += xcb_block_len;
461 1.3 mrg xcb_block_len = 0;
462 1.2 mrg /* priv_data */
463 1.2 mrg xcb_block_len += _aux->length * sizeof(uint32_t);
464 1.2 mrg xcb_tmp += xcb_block_len;
465 1.2 mrg xcb_align_to = ALIGNOF(uint32_t);
466 1.2 mrg /* insert padding */
467 1.2 mrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
468 1.2 mrg xcb_buffer_len += xcb_block_len + xcb_pad;
469 1.2 mrg if (0 != xcb_pad) {
470 1.2 mrg xcb_tmp += xcb_pad;
471 1.2 mrg xcb_pad = 0;
472 1.2 mrg }
473 1.2 mrg xcb_block_len = 0;
474 1.2 mrg
475 1.2 mrg return xcb_buffer_len;
476 1.2 mrg }
477 1.2 mrg
478 1.1 mrg xcb_xvmc_create_surface_cookie_t
479 1.5 mrg xcb_xvmc_create_surface (xcb_connection_t *c,
480 1.5 mrg xcb_xvmc_surface_t surface_id,
481 1.5 mrg xcb_xvmc_context_t context_id)
482 1.1 mrg {
483 1.1 mrg static const xcb_protocol_request_t xcb_req = {
484 1.5 mrg .count = 2,
485 1.5 mrg .ext = &xcb_xvmc_id,
486 1.5 mrg .opcode = XCB_XVMC_CREATE_SURFACE,
487 1.5 mrg .isvoid = 0
488 1.1 mrg };
489 1.4 mrg
490 1.1 mrg struct iovec xcb_parts[4];
491 1.1 mrg xcb_xvmc_create_surface_cookie_t xcb_ret;
492 1.1 mrg xcb_xvmc_create_surface_request_t xcb_out;
493 1.4 mrg
494 1.1 mrg xcb_out.surface_id = surface_id;
495 1.1 mrg xcb_out.context_id = context_id;
496 1.4 mrg
497 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
498 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
499 1.1 mrg xcb_parts[3].iov_base = 0;
500 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
501 1.4 mrg
502 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
503 1.1 mrg return xcb_ret;
504 1.1 mrg }
505 1.1 mrg
506 1.1 mrg xcb_xvmc_create_surface_cookie_t
507 1.5 mrg xcb_xvmc_create_surface_unchecked (xcb_connection_t *c,
508 1.5 mrg xcb_xvmc_surface_t surface_id,
509 1.5 mrg xcb_xvmc_context_t context_id)
510 1.1 mrg {
511 1.1 mrg static const xcb_protocol_request_t xcb_req = {
512 1.5 mrg .count = 2,
513 1.5 mrg .ext = &xcb_xvmc_id,
514 1.5 mrg .opcode = XCB_XVMC_CREATE_SURFACE,
515 1.5 mrg .isvoid = 0
516 1.1 mrg };
517 1.4 mrg
518 1.1 mrg struct iovec xcb_parts[4];
519 1.1 mrg xcb_xvmc_create_surface_cookie_t xcb_ret;
520 1.1 mrg xcb_xvmc_create_surface_request_t xcb_out;
521 1.4 mrg
522 1.1 mrg xcb_out.surface_id = surface_id;
523 1.1 mrg xcb_out.context_id = context_id;
524 1.4 mrg
525 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
526 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
527 1.1 mrg xcb_parts[3].iov_base = 0;
528 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
529 1.4 mrg
530 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
531 1.1 mrg return xcb_ret;
532 1.1 mrg }
533 1.1 mrg
534 1.1 mrg uint32_t *
535 1.5 mrg xcb_xvmc_create_surface_priv_data (const xcb_xvmc_create_surface_reply_t *R)
536 1.1 mrg {
537 1.1 mrg return (uint32_t *) (R + 1);
538 1.1 mrg }
539 1.1 mrg
540 1.1 mrg int
541 1.5 mrg xcb_xvmc_create_surface_priv_data_length (const xcb_xvmc_create_surface_reply_t *R)
542 1.1 mrg {
543 1.1 mrg return R->length;
544 1.1 mrg }
545 1.1 mrg
546 1.1 mrg xcb_generic_iterator_t
547 1.5 mrg xcb_xvmc_create_surface_priv_data_end (const xcb_xvmc_create_surface_reply_t *R)
548 1.1 mrg {
549 1.1 mrg xcb_generic_iterator_t i;
550 1.1 mrg i.data = ((uint32_t *) (R + 1)) + (R->length);
551 1.1 mrg i.rem = 0;
552 1.1 mrg i.index = (char *) i.data - (char *) R;
553 1.1 mrg return i;
554 1.1 mrg }
555 1.1 mrg
556 1.1 mrg xcb_xvmc_create_surface_reply_t *
557 1.5 mrg xcb_xvmc_create_surface_reply (xcb_connection_t *c,
558 1.1 mrg xcb_xvmc_create_surface_cookie_t cookie /**< */,
559 1.5 mrg xcb_generic_error_t **e)
560 1.1 mrg {
561 1.1 mrg return (xcb_xvmc_create_surface_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
562 1.1 mrg }
563 1.1 mrg
564 1.1 mrg xcb_void_cookie_t
565 1.5 mrg xcb_xvmc_destroy_surface_checked (xcb_connection_t *c,
566 1.5 mrg xcb_xvmc_surface_t surface_id)
567 1.1 mrg {
568 1.1 mrg static const xcb_protocol_request_t xcb_req = {
569 1.5 mrg .count = 2,
570 1.5 mrg .ext = &xcb_xvmc_id,
571 1.5 mrg .opcode = XCB_XVMC_DESTROY_SURFACE,
572 1.5 mrg .isvoid = 1
573 1.1 mrg };
574 1.4 mrg
575 1.1 mrg struct iovec xcb_parts[4];
576 1.1 mrg xcb_void_cookie_t xcb_ret;
577 1.1 mrg xcb_xvmc_destroy_surface_request_t xcb_out;
578 1.4 mrg
579 1.1 mrg xcb_out.surface_id = surface_id;
580 1.4 mrg
581 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
582 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
583 1.1 mrg xcb_parts[3].iov_base = 0;
584 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
585 1.4 mrg
586 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
587 1.1 mrg return xcb_ret;
588 1.1 mrg }
589 1.1 mrg
590 1.1 mrg xcb_void_cookie_t
591 1.5 mrg xcb_xvmc_destroy_surface (xcb_connection_t *c,
592 1.5 mrg xcb_xvmc_surface_t surface_id)
593 1.1 mrg {
594 1.1 mrg static const xcb_protocol_request_t xcb_req = {
595 1.5 mrg .count = 2,
596 1.5 mrg .ext = &xcb_xvmc_id,
597 1.5 mrg .opcode = XCB_XVMC_DESTROY_SURFACE,
598 1.5 mrg .isvoid = 1
599 1.1 mrg };
600 1.4 mrg
601 1.1 mrg struct iovec xcb_parts[4];
602 1.1 mrg xcb_void_cookie_t xcb_ret;
603 1.1 mrg xcb_xvmc_destroy_surface_request_t xcb_out;
604 1.4 mrg
605 1.1 mrg xcb_out.surface_id = surface_id;
606 1.4 mrg
607 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
608 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
609 1.1 mrg xcb_parts[3].iov_base = 0;
610 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
611 1.4 mrg
612 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
613 1.1 mrg return xcb_ret;
614 1.1 mrg }
615 1.1 mrg
616 1.2 mrg int
617 1.5 mrg xcb_xvmc_create_subpicture_sizeof (const void *_buffer)
618 1.2 mrg {
619 1.2 mrg char *xcb_tmp = (char *)_buffer;
620 1.2 mrg const xcb_xvmc_create_subpicture_reply_t *_aux = (xcb_xvmc_create_subpicture_reply_t *)_buffer;
621 1.2 mrg unsigned int xcb_buffer_len = 0;
622 1.2 mrg unsigned int xcb_block_len = 0;
623 1.2 mrg unsigned int xcb_pad = 0;
624 1.3 mrg unsigned int xcb_align_to = 0;
625 1.2 mrg
626 1.2 mrg
627 1.2 mrg xcb_block_len += sizeof(xcb_xvmc_create_subpicture_reply_t);
628 1.2 mrg xcb_tmp += xcb_block_len;
629 1.3 mrg xcb_buffer_len += xcb_block_len;
630 1.3 mrg xcb_block_len = 0;
631 1.2 mrg /* priv_data */
632 1.2 mrg xcb_block_len += _aux->length * sizeof(uint32_t);
633 1.2 mrg xcb_tmp += xcb_block_len;
634 1.2 mrg xcb_align_to = ALIGNOF(uint32_t);
635 1.2 mrg /* insert padding */
636 1.2 mrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
637 1.2 mrg xcb_buffer_len += xcb_block_len + xcb_pad;
638 1.2 mrg if (0 != xcb_pad) {
639 1.2 mrg xcb_tmp += xcb_pad;
640 1.2 mrg xcb_pad = 0;
641 1.2 mrg }
642 1.2 mrg xcb_block_len = 0;
643 1.2 mrg
644 1.2 mrg return xcb_buffer_len;
645 1.2 mrg }
646 1.2 mrg
647 1.1 mrg xcb_xvmc_create_subpicture_cookie_t
648 1.5 mrg xcb_xvmc_create_subpicture (xcb_connection_t *c,
649 1.5 mrg xcb_xvmc_subpicture_t subpicture_id,
650 1.5 mrg xcb_xvmc_context_t context,
651 1.5 mrg uint32_t xvimage_id,
652 1.5 mrg uint16_t width,
653 1.5 mrg uint16_t height)
654 1.1 mrg {
655 1.1 mrg static const xcb_protocol_request_t xcb_req = {
656 1.5 mrg .count = 2,
657 1.5 mrg .ext = &xcb_xvmc_id,
658 1.5 mrg .opcode = XCB_XVMC_CREATE_SUBPICTURE,
659 1.5 mrg .isvoid = 0
660 1.1 mrg };
661 1.4 mrg
662 1.1 mrg struct iovec xcb_parts[4];
663 1.1 mrg xcb_xvmc_create_subpicture_cookie_t xcb_ret;
664 1.1 mrg xcb_xvmc_create_subpicture_request_t xcb_out;
665 1.4 mrg
666 1.1 mrg xcb_out.subpicture_id = subpicture_id;
667 1.1 mrg xcb_out.context = context;
668 1.1 mrg xcb_out.xvimage_id = xvimage_id;
669 1.1 mrg xcb_out.width = width;
670 1.1 mrg xcb_out.height = height;
671 1.4 mrg
672 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
673 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
674 1.1 mrg xcb_parts[3].iov_base = 0;
675 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
676 1.4 mrg
677 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
678 1.1 mrg return xcb_ret;
679 1.1 mrg }
680 1.1 mrg
681 1.1 mrg xcb_xvmc_create_subpicture_cookie_t
682 1.5 mrg xcb_xvmc_create_subpicture_unchecked (xcb_connection_t *c,
683 1.5 mrg xcb_xvmc_subpicture_t subpicture_id,
684 1.5 mrg xcb_xvmc_context_t context,
685 1.5 mrg uint32_t xvimage_id,
686 1.5 mrg uint16_t width,
687 1.5 mrg uint16_t height)
688 1.1 mrg {
689 1.1 mrg static const xcb_protocol_request_t xcb_req = {
690 1.5 mrg .count = 2,
691 1.5 mrg .ext = &xcb_xvmc_id,
692 1.5 mrg .opcode = XCB_XVMC_CREATE_SUBPICTURE,
693 1.5 mrg .isvoid = 0
694 1.1 mrg };
695 1.4 mrg
696 1.1 mrg struct iovec xcb_parts[4];
697 1.1 mrg xcb_xvmc_create_subpicture_cookie_t xcb_ret;
698 1.1 mrg xcb_xvmc_create_subpicture_request_t xcb_out;
699 1.4 mrg
700 1.1 mrg xcb_out.subpicture_id = subpicture_id;
701 1.1 mrg xcb_out.context = context;
702 1.1 mrg xcb_out.xvimage_id = xvimage_id;
703 1.1 mrg xcb_out.width = width;
704 1.1 mrg xcb_out.height = height;
705 1.4 mrg
706 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
707 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
708 1.1 mrg xcb_parts[3].iov_base = 0;
709 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
710 1.4 mrg
711 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
712 1.1 mrg return xcb_ret;
713 1.1 mrg }
714 1.1 mrg
715 1.1 mrg uint32_t *
716 1.5 mrg xcb_xvmc_create_subpicture_priv_data (const xcb_xvmc_create_subpicture_reply_t *R)
717 1.1 mrg {
718 1.1 mrg return (uint32_t *) (R + 1);
719 1.1 mrg }
720 1.1 mrg
721 1.1 mrg int
722 1.5 mrg xcb_xvmc_create_subpicture_priv_data_length (const xcb_xvmc_create_subpicture_reply_t *R)
723 1.1 mrg {
724 1.1 mrg return R->length;
725 1.1 mrg }
726 1.1 mrg
727 1.1 mrg xcb_generic_iterator_t
728 1.5 mrg xcb_xvmc_create_subpicture_priv_data_end (const xcb_xvmc_create_subpicture_reply_t *R)
729 1.1 mrg {
730 1.1 mrg xcb_generic_iterator_t i;
731 1.1 mrg i.data = ((uint32_t *) (R + 1)) + (R->length);
732 1.1 mrg i.rem = 0;
733 1.1 mrg i.index = (char *) i.data - (char *) R;
734 1.1 mrg return i;
735 1.1 mrg }
736 1.1 mrg
737 1.1 mrg xcb_xvmc_create_subpicture_reply_t *
738 1.5 mrg xcb_xvmc_create_subpicture_reply (xcb_connection_t *c,
739 1.1 mrg xcb_xvmc_create_subpicture_cookie_t cookie /**< */,
740 1.5 mrg xcb_generic_error_t **e)
741 1.1 mrg {
742 1.1 mrg return (xcb_xvmc_create_subpicture_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
743 1.1 mrg }
744 1.1 mrg
745 1.1 mrg xcb_void_cookie_t
746 1.5 mrg xcb_xvmc_destroy_subpicture_checked (xcb_connection_t *c,
747 1.5 mrg xcb_xvmc_subpicture_t subpicture_id)
748 1.1 mrg {
749 1.1 mrg static const xcb_protocol_request_t xcb_req = {
750 1.5 mrg .count = 2,
751 1.5 mrg .ext = &xcb_xvmc_id,
752 1.5 mrg .opcode = XCB_XVMC_DESTROY_SUBPICTURE,
753 1.5 mrg .isvoid = 1
754 1.1 mrg };
755 1.4 mrg
756 1.1 mrg struct iovec xcb_parts[4];
757 1.1 mrg xcb_void_cookie_t xcb_ret;
758 1.1 mrg xcb_xvmc_destroy_subpicture_request_t xcb_out;
759 1.4 mrg
760 1.1 mrg xcb_out.subpicture_id = subpicture_id;
761 1.4 mrg
762 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
763 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
764 1.1 mrg xcb_parts[3].iov_base = 0;
765 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
766 1.4 mrg
767 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
768 1.1 mrg return xcb_ret;
769 1.1 mrg }
770 1.1 mrg
771 1.1 mrg xcb_void_cookie_t
772 1.5 mrg xcb_xvmc_destroy_subpicture (xcb_connection_t *c,
773 1.5 mrg xcb_xvmc_subpicture_t subpicture_id)
774 1.1 mrg {
775 1.1 mrg static const xcb_protocol_request_t xcb_req = {
776 1.5 mrg .count = 2,
777 1.5 mrg .ext = &xcb_xvmc_id,
778 1.5 mrg .opcode = XCB_XVMC_DESTROY_SUBPICTURE,
779 1.5 mrg .isvoid = 1
780 1.1 mrg };
781 1.4 mrg
782 1.1 mrg struct iovec xcb_parts[4];
783 1.1 mrg xcb_void_cookie_t xcb_ret;
784 1.1 mrg xcb_xvmc_destroy_subpicture_request_t xcb_out;
785 1.4 mrg
786 1.1 mrg xcb_out.subpicture_id = subpicture_id;
787 1.4 mrg
788 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
789 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
790 1.1 mrg xcb_parts[3].iov_base = 0;
791 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
792 1.4 mrg
793 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
794 1.1 mrg return xcb_ret;
795 1.1 mrg }
796 1.1 mrg
797 1.2 mrg int
798 1.5 mrg xcb_xvmc_list_subpicture_types_sizeof (const void *_buffer)
799 1.2 mrg {
800 1.2 mrg char *xcb_tmp = (char *)_buffer;
801 1.2 mrg const xcb_xvmc_list_subpicture_types_reply_t *_aux = (xcb_xvmc_list_subpicture_types_reply_t *)_buffer;
802 1.2 mrg unsigned int xcb_buffer_len = 0;
803 1.2 mrg unsigned int xcb_block_len = 0;
804 1.2 mrg unsigned int xcb_pad = 0;
805 1.3 mrg unsigned int xcb_align_to = 0;
806 1.2 mrg
807 1.2 mrg
808 1.2 mrg xcb_block_len += sizeof(xcb_xvmc_list_subpicture_types_reply_t);
809 1.2 mrg xcb_tmp += xcb_block_len;
810 1.3 mrg xcb_buffer_len += xcb_block_len;
811 1.3 mrg xcb_block_len = 0;
812 1.2 mrg /* types */
813 1.2 mrg xcb_block_len += _aux->num * sizeof(xcb_xv_image_format_info_t);
814 1.2 mrg xcb_tmp += xcb_block_len;
815 1.2 mrg xcb_align_to = ALIGNOF(xcb_xv_image_format_info_t);
816 1.2 mrg /* insert padding */
817 1.2 mrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
818 1.2 mrg xcb_buffer_len += xcb_block_len + xcb_pad;
819 1.2 mrg if (0 != xcb_pad) {
820 1.2 mrg xcb_tmp += xcb_pad;
821 1.2 mrg xcb_pad = 0;
822 1.2 mrg }
823 1.2 mrg xcb_block_len = 0;
824 1.2 mrg
825 1.2 mrg return xcb_buffer_len;
826 1.2 mrg }
827 1.2 mrg
828 1.1 mrg xcb_xvmc_list_subpicture_types_cookie_t
829 1.5 mrg xcb_xvmc_list_subpicture_types (xcb_connection_t *c,
830 1.5 mrg xcb_xv_port_t port_id,
831 1.5 mrg xcb_xvmc_surface_t surface_id)
832 1.1 mrg {
833 1.1 mrg static const xcb_protocol_request_t xcb_req = {
834 1.5 mrg .count = 2,
835 1.5 mrg .ext = &xcb_xvmc_id,
836 1.5 mrg .opcode = XCB_XVMC_LIST_SUBPICTURE_TYPES,
837 1.5 mrg .isvoid = 0
838 1.1 mrg };
839 1.4 mrg
840 1.1 mrg struct iovec xcb_parts[4];
841 1.1 mrg xcb_xvmc_list_subpicture_types_cookie_t xcb_ret;
842 1.1 mrg xcb_xvmc_list_subpicture_types_request_t xcb_out;
843 1.4 mrg
844 1.1 mrg xcb_out.port_id = port_id;
845 1.1 mrg xcb_out.surface_id = surface_id;
846 1.4 mrg
847 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
848 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
849 1.1 mrg xcb_parts[3].iov_base = 0;
850 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
851 1.4 mrg
852 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
853 1.1 mrg return xcb_ret;
854 1.1 mrg }
855 1.1 mrg
856 1.1 mrg xcb_xvmc_list_subpicture_types_cookie_t
857 1.5 mrg xcb_xvmc_list_subpicture_types_unchecked (xcb_connection_t *c,
858 1.5 mrg xcb_xv_port_t port_id,
859 1.5 mrg xcb_xvmc_surface_t surface_id)
860 1.1 mrg {
861 1.1 mrg static const xcb_protocol_request_t xcb_req = {
862 1.5 mrg .count = 2,
863 1.5 mrg .ext = &xcb_xvmc_id,
864 1.5 mrg .opcode = XCB_XVMC_LIST_SUBPICTURE_TYPES,
865 1.5 mrg .isvoid = 0
866 1.1 mrg };
867 1.4 mrg
868 1.1 mrg struct iovec xcb_parts[4];
869 1.1 mrg xcb_xvmc_list_subpicture_types_cookie_t xcb_ret;
870 1.1 mrg xcb_xvmc_list_subpicture_types_request_t xcb_out;
871 1.4 mrg
872 1.1 mrg xcb_out.port_id = port_id;
873 1.1 mrg xcb_out.surface_id = surface_id;
874 1.4 mrg
875 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out;
876 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out);
877 1.1 mrg xcb_parts[3].iov_base = 0;
878 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
879 1.4 mrg
880 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
881 1.1 mrg return xcb_ret;
882 1.1 mrg }
883 1.1 mrg
884 1.1 mrg xcb_xv_image_format_info_t *
885 1.5 mrg xcb_xvmc_list_subpicture_types_types (const xcb_xvmc_list_subpicture_types_reply_t *R)
886 1.1 mrg {
887 1.1 mrg return (xcb_xv_image_format_info_t *) (R + 1);
888 1.1 mrg }
889 1.1 mrg
890 1.1 mrg int
891 1.5 mrg xcb_xvmc_list_subpicture_types_types_length (const xcb_xvmc_list_subpicture_types_reply_t *R)
892 1.1 mrg {
893 1.1 mrg return R->num;
894 1.1 mrg }
895 1.1 mrg
896 1.1 mrg xcb_xv_image_format_info_iterator_t
897 1.5 mrg xcb_xvmc_list_subpicture_types_types_iterator (const xcb_xvmc_list_subpicture_types_reply_t *R)
898 1.1 mrg {
899 1.1 mrg xcb_xv_image_format_info_iterator_t i;
900 1.1 mrg i.data = (xcb_xv_image_format_info_t *) (R + 1);
901 1.1 mrg i.rem = R->num;
902 1.1 mrg i.index = (char *) i.data - (char *) R;
903 1.1 mrg return i;
904 1.1 mrg }
905 1.1 mrg
906 1.1 mrg xcb_xvmc_list_subpicture_types_reply_t *
907 1.5 mrg xcb_xvmc_list_subpicture_types_reply (xcb_connection_t *c,
908 1.1 mrg xcb_xvmc_list_subpicture_types_cookie_t cookie /**< */,
909 1.5 mrg xcb_generic_error_t **e)
910 1.1 mrg {
911 1.1 mrg return (xcb_xvmc_list_subpicture_types_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
912 1.1 mrg }
913 1.1 mrg
914