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