Home | History | Annotate | Download | only in extensions
      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