1 /*********************************************************** 2 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts, 3 and the Massachusetts Institute of Technology, Cambridge, Massachusetts. 4 5 All Rights Reserved 6 7 Permission to use, copy, modify, and distribute this software and its 8 documentation for any purpose and without fee is hereby granted, 9 provided that the above copyright notice appear in all copies and that 10 both that copyright notice and this permission notice appear in 11 supporting documentation, and that the names of Digital or MIT not be 12 used in advertising or publicity pertaining to distribution of the 13 software without specific, written prior permission. 14 15 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 16 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 17 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 18 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 19 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 20 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 21 SOFTWARE. 22 23 ******************************************************************/ 24 /* $XFree86: xc/include/extensions/Xvproto.h,v 1.6 2001/05/07 21:37:12 tsi Exp $ */ 25 26 #ifndef XVPROTO_H 27 #define XVPROTO_H 28 /* 29 ** File: 30 ** 31 ** Xvproto.h --- Xv protocol header file 32 ** 33 ** Author: 34 ** 35 ** David Carver (Digital Workstation Engineering/Project Athena) 36 ** 37 ** Revisions: 38 ** 39 ** 11.06.91 Carver 40 ** - changed SetPortControl to SetPortAttribute 41 ** - changed GetPortControl to GetPortAttribute 42 ** - changed QueryBestSize 43 ** 44 ** 15.05.91 Carver 45 ** - version 2.0 upgrade 46 ** 47 ** 24.01.91 Carver 48 ** - version 1.4 upgrade 49 ** 50 */ 51 52 #include <X11/Xmd.h> 53 54 /* Symbols: These are undefined at the end of this file to restore the 55 values they have in Xv.h */ 56 57 #define XvPortID CARD32 58 #define XvEncodingID CARD32 59 #define ShmSeg CARD32 60 #define VisualID CARD32 61 #define Drawable CARD32 62 #define GContext CARD32 63 #define Time CARD32 64 #define Atom CARD32 65 66 /* Structures */ 67 68 typedef struct { 69 INT32 numerator B32; 70 INT32 denominator B32; 71 } xvRational; 72 #define sz_xvRational 8 73 74 typedef struct { 75 XvPortID base_id B32; 76 CARD16 name_size B16; 77 CARD16 num_ports B16; 78 CARD16 num_formats B16; 79 CARD8 type; 80 CARD8 pad; 81 } xvAdaptorInfo; 82 #define sz_xvAdaptorInfo 12 83 84 typedef struct { 85 XvEncodingID encoding B32; 86 CARD16 name_size B16; 87 CARD16 width B16, height B16; 88 xvRational rate; 89 CARD16 pad B16; 90 } xvEncodingInfo; 91 #define sz_xvEncodingInfo (12 + sz_xvRational) 92 93 typedef struct { 94 VisualID visual B32; 95 CARD8 depth; 96 CARD8 pad1; 97 CARD16 pad2 B16; 98 } xvFormat; 99 #define sz_xvFormat 8 100 101 typedef struct { 102 CARD32 flags B32; 103 INT32 min B32; 104 INT32 max B32; 105 CARD32 size B32; 106 } xvAttributeInfo; 107 #define sz_xvAttributeInfo 16 108 109 typedef struct { 110 CARD32 id B32; 111 CARD8 type; 112 CARD8 byte_order; 113 CARD16 pad1 B16; 114 CARD8 guid[16]; 115 CARD8 bpp; 116 CARD8 num_planes; 117 CARD16 pad2 B16; 118 CARD8 depth; 119 CARD8 pad3; 120 CARD16 pad4 B16; 121 CARD32 red_mask B32; 122 CARD32 green_mask B32; 123 CARD32 blue_mask B32; 124 CARD8 format; 125 CARD8 pad5; 126 CARD16 pad6 B16; 127 CARD32 y_sample_bits B32; 128 CARD32 u_sample_bits B32; 129 CARD32 v_sample_bits B32; 130 CARD32 horz_y_period B32; 131 CARD32 horz_u_period B32; 132 CARD32 horz_v_period B32; 133 CARD32 vert_y_period B32; 134 CARD32 vert_u_period B32; 135 CARD32 vert_v_period B32; 136 CARD8 comp_order[32]; 137 CARD8 scanline_order; 138 CARD8 pad7; 139 CARD16 pad8 B16; 140 CARD32 pad9 B32; 141 CARD32 pad10 B32; 142 } xvImageFormatInfo; 143 #define sz_xvImageFormatInfo 128 144 145 146 /* Requests */ 147 148 #define xv_QueryExtension 0 149 #define xv_QueryAdaptors 1 150 #define xv_QueryEncodings 2 151 #define xv_GrabPort 3 152 #define xv_UngrabPort 4 153 #define xv_PutVideo 5 154 #define xv_PutStill 6 155 #define xv_GetVideo 7 156 #define xv_GetStill 8 157 #define xv_StopVideo 9 158 #define xv_SelectVideoNotify 10 159 #define xv_SelectPortNotify 11 160 #define xv_QueryBestSize 12 161 #define xv_SetPortAttribute 13 162 #define xv_GetPortAttribute 14 163 #define xv_QueryPortAttributes 15 164 #define xv_ListImageFormats 16 165 #define xv_QueryImageAttributes 17 166 #define xv_PutImage 18 167 #define xv_ShmPutImage 19 168 #define xv_LastRequest xv_ShmPutImage 169 170 #define xvNumRequests (xv_LastRequest + 1) 171 172 typedef struct { 173 CARD8 reqType; 174 CARD8 xvReqType; 175 CARD16 length B16; 176 } xvQueryExtensionReq; 177 #define sz_xvQueryExtensionReq 4 178 179 typedef struct { 180 CARD8 reqType; 181 CARD8 xvReqType; 182 CARD16 length B16; 183 CARD32 window B32; 184 } xvQueryAdaptorsReq; 185 #define sz_xvQueryAdaptorsReq 8 186 187 typedef struct { 188 CARD8 reqType; 189 CARD8 xvReqType; 190 CARD16 length B16; 191 CARD32 port B32; 192 } xvQueryEncodingsReq; 193 #define sz_xvQueryEncodingsReq 8 194 195 typedef struct { 196 CARD8 reqType; 197 CARD8 xvReqType; 198 CARD16 length B16; 199 XvPortID port B32; 200 Drawable drawable B32; 201 GContext gc B32; 202 INT16 vid_x B16; 203 INT16 vid_y B16; 204 CARD16 vid_w B16; 205 CARD16 vid_h B16; 206 INT16 drw_x B16; 207 INT16 drw_y B16; 208 CARD16 drw_w B16; 209 CARD16 drw_h B16; 210 } xvPutVideoReq; 211 #define sz_xvPutVideoReq 32 212 213 typedef struct { 214 CARD8 reqType; 215 CARD8 xvReqType; 216 CARD16 length B16; 217 XvPortID port B32; 218 Drawable drawable B32; 219 GContext gc B32; 220 INT16 vid_x B16; 221 INT16 vid_y B16; 222 CARD16 vid_w B16; 223 CARD16 vid_h B16; 224 INT16 drw_x B16; 225 INT16 drw_y B16; 226 CARD16 drw_w B16; 227 CARD16 drw_h B16; 228 } xvPutStillReq; 229 #define sz_xvPutStillReq 32 230 231 typedef struct { 232 CARD8 reqType; 233 CARD8 xvReqType; 234 CARD16 length B16; 235 XvPortID port B32; 236 Drawable drawable B32; 237 GContext gc B32; 238 INT16 vid_x B16; 239 INT16 vid_y B16; 240 CARD16 vid_w B16; 241 CARD16 vid_h B16; 242 INT16 drw_x B16; 243 INT16 drw_y B16; 244 CARD16 drw_w B16; 245 CARD16 drw_h B16; 246 } xvGetVideoReq; 247 #define sz_xvGetVideoReq 32 248 249 typedef struct { 250 CARD8 reqType; 251 CARD8 xvReqType; 252 CARD16 length B16; 253 XvPortID port B32; 254 Drawable drawable B32; 255 GContext gc B32; 256 INT16 vid_x B16; 257 INT16 vid_y B16; 258 CARD16 vid_w B16; 259 CARD16 vid_h B16; 260 INT16 drw_x B16; 261 INT16 drw_y B16; 262 CARD16 drw_w B16; 263 CARD16 drw_h B16; 264 } xvGetStillReq; 265 #define sz_xvGetStillReq 32 266 267 typedef struct { 268 CARD8 reqType; 269 CARD8 xvReqType; 270 CARD16 length B16; 271 XvPortID port B32; 272 Time time B32; 273 } xvGrabPortReq; 274 #define sz_xvGrabPortReq 12 275 276 typedef struct { 277 CARD8 reqType; 278 CARD8 xvReqType; 279 CARD16 length B16; 280 XvPortID port B32; 281 Time time B32; 282 } xvUngrabPortReq; 283 #define sz_xvUngrabPortReq 12 284 285 typedef struct { 286 CARD8 reqType; 287 CARD8 xvReqType; 288 CARD16 length B16; 289 Drawable drawable B32; 290 BOOL onoff; 291 CARD8 pad1; 292 CARD16 pad2; 293 } xvSelectVideoNotifyReq; 294 #define sz_xvSelectVideoNotifyReq 12 295 296 typedef struct { 297 CARD8 reqType; 298 CARD8 xvReqType; 299 CARD16 length B16; 300 XvPortID port B32; 301 BOOL onoff; 302 CARD8 pad1; 303 CARD16 pad2; 304 } xvSelectPortNotifyReq; 305 #define sz_xvSelectPortNotifyReq 12 306 307 typedef struct { 308 CARD8 reqType; 309 CARD8 xvReqType; 310 CARD16 length B16; 311 XvPortID port B32; 312 Drawable drawable B32; 313 } xvStopVideoReq; 314 #define sz_xvStopVideoReq 12 315 316 typedef struct { 317 CARD8 reqType; 318 CARD8 xvReqType; 319 CARD16 length B16; 320 XvPortID port B32; 321 Atom attribute B32; 322 INT32 value B32; 323 } xvSetPortAttributeReq; 324 #define sz_xvSetPortAttributeReq 16 325 326 typedef struct { 327 CARD8 reqType; 328 CARD8 xvReqType; 329 CARD16 length B16; 330 XvPortID port B32; 331 Atom attribute B32; 332 } xvGetPortAttributeReq; 333 #define sz_xvGetPortAttributeReq 12 334 335 typedef struct { 336 CARD8 reqType; 337 CARD8 xvReqType; 338 CARD16 length B16; 339 XvPortID port B32; 340 CARD16 vid_w B16; 341 CARD16 vid_h B16; 342 CARD16 drw_w B16; 343 CARD16 drw_h B16; 344 CARD8 motion; 345 CARD8 pad1; 346 CARD16 pad2 B16; 347 } xvQueryBestSizeReq; 348 #define sz_xvQueryBestSizeReq 20 349 350 typedef struct { 351 CARD8 reqType; 352 CARD8 xvReqType; 353 CARD16 length B16; 354 XvPortID port B32; 355 } xvQueryPortAttributesReq; 356 #define sz_xvQueryPortAttributesReq 8 357 358 typedef struct { 359 CARD8 reqType; 360 CARD8 xvReqType; 361 CARD16 length B16; 362 XvPortID port B32; 363 Drawable drawable B32; 364 GContext gc B32; 365 CARD32 id B32; 366 INT16 src_x B16; 367 INT16 src_y B16; 368 CARD16 src_w B16; 369 CARD16 src_h B16; 370 INT16 drw_x B16; 371 INT16 drw_y B16; 372 CARD16 drw_w B16; 373 CARD16 drw_h B16; 374 CARD16 width B16; 375 CARD16 height B16; 376 } xvPutImageReq; 377 #define sz_xvPutImageReq 40 378 379 typedef struct { 380 CARD8 reqType; 381 CARD8 xvReqType; 382 CARD16 length B16; 383 XvPortID port B32; 384 Drawable drawable B32; 385 GContext gc B32; 386 ShmSeg shmseg B32; 387 CARD32 id B32; 388 CARD32 offset B32; 389 INT16 src_x B16; 390 INT16 src_y B16; 391 CARD16 src_w B16; 392 CARD16 src_h B16; 393 INT16 drw_x B16; 394 INT16 drw_y B16; 395 CARD16 drw_w B16; 396 CARD16 drw_h B16; 397 CARD16 width B16; 398 CARD16 height B16; 399 CARD8 send_event; 400 CARD8 pad1; 401 CARD16 pad2 B16; 402 } xvShmPutImageReq; 403 #define sz_xvShmPutImageReq 52 404 405 typedef struct { 406 CARD8 reqType; 407 CARD8 xvReqType; 408 CARD16 length B16; 409 XvPortID port B32; 410 } xvListImageFormatsReq; 411 #define sz_xvListImageFormatsReq 8 412 413 typedef struct { 414 CARD8 reqType; 415 CARD8 xvReqType; 416 CARD16 length B16; 417 CARD32 port B32; 418 CARD32 id B32; 419 CARD16 width B16; 420 CARD16 height B16; 421 } xvQueryImageAttributesReq; 422 #define sz_xvQueryImageAttributesReq 16 423 424 425 /* Replies */ 426 427 typedef struct _QueryExtensionReply { 428 BYTE type; /* X_Reply */ 429 CARD8 padb1; 430 CARD16 sequenceNumber B16; 431 CARD32 length B32; 432 CARD16 version B16; 433 CARD16 revision B16; 434 CARD32 padl4 B32; 435 CARD32 padl5 B32; 436 CARD32 padl6 B32; 437 CARD32 padl7 B32; 438 CARD32 padl8 B32; 439 } xvQueryExtensionReply; 440 #define sz_xvQueryExtensionReply 32 441 442 typedef struct _QueryAdaptorsReply { 443 BYTE type; /* X_Reply */ 444 CARD8 padb1; 445 CARD16 sequenceNumber B16; 446 CARD32 length B32; 447 CARD16 num_adaptors B16; 448 CARD16 pads3 B16; 449 CARD32 padl4 B32; 450 CARD32 padl5 B32; 451 CARD32 padl6 B32; 452 CARD32 padl7 B32; 453 CARD32 padl8 B32; 454 } xvQueryAdaptorsReply; 455 #define sz_xvQueryAdaptorsReply 32 456 457 typedef struct _QueryEncodingsReply { 458 BYTE type; /* X_Reply */ 459 CARD8 padb1; 460 CARD16 sequenceNumber B16; 461 CARD32 length B32; 462 CARD16 num_encodings B16; 463 CARD32 padl3 B32; 464 CARD32 padl4 B32; 465 CARD32 padl5 B32; 466 CARD32 padl6 B32; 467 CARD32 padl7 B32; 468 CARD32 padl8 B32; 469 } xvQueryEncodingsReply; 470 #define sz_xvQueryEncodingsReply 32 471 472 typedef struct { 473 BYTE type; /* X_Reply */ 474 BYTE result; 475 CARD16 sequenceNumber B16; 476 CARD32 length B32; /* 0 */ 477 CARD32 padl3 B32; 478 CARD32 padl4 B32; 479 CARD32 padl5 B32; 480 CARD32 padl6 B32; 481 CARD32 padl7 B32; 482 CARD32 padl8 B32; 483 } xvGrabPortReply; 484 #define sz_xvGrabPortReply 32 485 486 typedef struct { 487 BYTE type; /* X_Reply */ 488 BYTE padb1; 489 CARD16 sequenceNumber B16; 490 CARD32 length B32; /* 0 */ 491 INT32 value B32; 492 CARD32 padl4 B32; 493 CARD32 padl5 B32; 494 CARD32 padl6 B32; 495 CARD32 padl7 B32; 496 CARD32 padl8 B32; 497 } xvGetPortAttributeReply; 498 #define sz_xvGetPortAttributeReply 32 499 500 typedef struct { 501 BYTE type; /* X_Reply */ 502 BYTE padb1; 503 CARD16 sequenceNumber B16; 504 CARD32 length B32; /* 0 */ 505 CARD16 actual_width B16; 506 CARD16 actual_height B16; 507 CARD32 padl4 B32; 508 CARD32 padl5 B32; 509 CARD32 padl6 B32; 510 CARD32 padl7 B32; 511 CARD32 padl8 B32; 512 } xvQueryBestSizeReply; 513 #define sz_xvQueryBestSizeReply 32 514 515 typedef struct { 516 BYTE type; /* X_Reply */ 517 BYTE padb1; 518 CARD16 sequenceNumber B16; 519 CARD32 length B32; /* 0 */ 520 CARD32 num_attributes B32; 521 CARD32 text_size B32; 522 CARD32 padl5 B32; 523 CARD32 padl6 B32; 524 CARD32 padl7 B32; 525 CARD32 padl8 B32; 526 } xvQueryPortAttributesReply; 527 #define sz_xvQueryPortAttributesReply 32 528 529 typedef struct { 530 BYTE type; /* X_Reply */ 531 BYTE padb1; 532 CARD16 sequenceNumber B16; 533 CARD32 length B32; 534 CARD32 num_formats B32; 535 CARD32 padl4 B32; 536 CARD32 padl5 B32; 537 CARD32 padl6 B32; 538 CARD32 padl7 B32; 539 CARD32 padl8 B32; 540 } xvListImageFormatsReply; 541 #define sz_xvListImageFormatsReply 32 542 543 typedef struct { 544 BYTE type; /* X_Reply */ 545 BYTE padb1; 546 CARD16 sequenceNumber B16; 547 CARD32 length B32; 548 CARD32 num_planes B32; 549 CARD32 data_size B32; 550 CARD16 width B16; 551 CARD16 height B16; 552 CARD32 padl6 B32; 553 CARD32 padl7 B32; 554 CARD32 padl8 B32; 555 } xvQueryImageAttributesReply; 556 #define sz_xvQueryImageAttributesReply 32 557 558 /* DEFINE EVENT STRUCTURE */ 559 560 typedef struct { 561 union { 562 struct { 563 BYTE type; 564 BYTE detail; 565 CARD16 sequenceNumber B16; 566 } u; 567 struct { 568 BYTE type; 569 BYTE reason; 570 CARD16 sequenceNumber B16; 571 Time time B32; 572 Drawable drawable B32; 573 XvPortID port B32; 574 CARD32 padl5 B32; 575 CARD32 padl6 B32; 576 CARD32 padl7 B32; 577 CARD32 padl8 B32; 578 } videoNotify; 579 struct { 580 BYTE type; 581 BYTE padb1; 582 CARD16 sequenceNumber B16; 583 Time time B32; 584 XvPortID port B32; 585 Atom attribute B32; 586 INT32 value B32; 587 CARD32 padl6 B32; 588 CARD32 padl7 B32; 589 CARD32 padl8 B32; 590 } portNotify; 591 } u; 592 } xvEvent; 593 594 #undef XvPortID 595 #undef XvEncodingID 596 #undef ShmSeg 597 #undef VisualID 598 #undef Drawable 599 #undef GContext 600 #undef Time 601 #undef Atom 602 603 #endif /* XVPROTO_H */ 604 605