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