604 lines
13 KiB
C
604 lines
13 KiB
C
/***********************************************************
|
|
Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
|
|
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
|
|
|
|
All Rights Reserved
|
|
|
|
Permission to use, copy, modify, and distribute this software and its
|
|
documentation for any purpose and without fee is hereby granted,
|
|
provided that the above copyright notice appear in all copies and that
|
|
both that copyright notice and this permission notice appear in
|
|
supporting documentation, and that the names of Digital or MIT not be
|
|
used in advertising or publicity pertaining to distribution of the
|
|
software without specific, written prior permission.
|
|
|
|
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
|
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
|
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
|
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
SOFTWARE.
|
|
|
|
******************************************************************/
|
|
|
|
#ifndef XVPROTO_H
|
|
#define XVPROTO_H
|
|
/*
|
|
** File:
|
|
**
|
|
** Xvproto.h --- Xv protocol header file
|
|
**
|
|
** Author:
|
|
**
|
|
** David Carver (Digital Workstation Engineering/Project Athena)
|
|
**
|
|
** Revisions:
|
|
**
|
|
** 11.06.91 Carver
|
|
** - changed SetPortControl to SetPortAttribute
|
|
** - changed GetPortControl to GetPortAttribute
|
|
** - changed QueryBestSize
|
|
**
|
|
** 15.05.91 Carver
|
|
** - version 2.0 upgrade
|
|
**
|
|
** 24.01.91 Carver
|
|
** - version 1.4 upgrade
|
|
**
|
|
*/
|
|
|
|
#include <X11/Xmd.h>
|
|
|
|
/* Symbols: These are undefined at the end of this file to restore the
|
|
values they have in Xv.h */
|
|
|
|
#define XvPortID CARD32
|
|
#define XvEncodingID CARD32
|
|
#define ShmSeg CARD32
|
|
#define VisualID CARD32
|
|
#define Drawable CARD32
|
|
#define GContext CARD32
|
|
#define Time CARD32
|
|
#define Atom CARD32
|
|
|
|
/* Structures */
|
|
|
|
typedef struct {
|
|
INT32 numerator B32;
|
|
INT32 denominator B32;
|
|
} xvRational;
|
|
#define sz_xvRational 8
|
|
|
|
typedef struct {
|
|
XvPortID base_id B32;
|
|
CARD16 name_size B16;
|
|
CARD16 num_ports B16;
|
|
CARD16 num_formats B16;
|
|
CARD8 type;
|
|
CARD8 pad;
|
|
} xvAdaptorInfo;
|
|
#define sz_xvAdaptorInfo 12
|
|
|
|
typedef struct {
|
|
XvEncodingID encoding B32;
|
|
CARD16 name_size B16;
|
|
CARD16 width B16, height B16;
|
|
xvRational rate;
|
|
CARD16 pad B16;
|
|
} xvEncodingInfo;
|
|
#define sz_xvEncodingInfo (12 + sz_xvRational)
|
|
|
|
typedef struct {
|
|
VisualID visual B32;
|
|
CARD8 depth;
|
|
CARD8 pad1;
|
|
CARD16 pad2 B16;
|
|
} xvFormat;
|
|
#define sz_xvFormat 8
|
|
|
|
typedef struct {
|
|
CARD32 flags B32;
|
|
INT32 min B32;
|
|
INT32 max B32;
|
|
CARD32 size B32;
|
|
} xvAttributeInfo;
|
|
#define sz_xvAttributeInfo 16
|
|
|
|
typedef struct {
|
|
CARD32 id B32;
|
|
CARD8 type;
|
|
CARD8 byte_order;
|
|
CARD16 pad1 B16;
|
|
CARD8 guid[16];
|
|
CARD8 bpp;
|
|
CARD8 num_planes;
|
|
CARD16 pad2 B16;
|
|
CARD8 depth;
|
|
CARD8 pad3;
|
|
CARD16 pad4 B16;
|
|
CARD32 red_mask B32;
|
|
CARD32 green_mask B32;
|
|
CARD32 blue_mask B32;
|
|
CARD8 format;
|
|
CARD8 pad5;
|
|
CARD16 pad6 B16;
|
|
CARD32 y_sample_bits B32;
|
|
CARD32 u_sample_bits B32;
|
|
CARD32 v_sample_bits B32;
|
|
CARD32 horz_y_period B32;
|
|
CARD32 horz_u_period B32;
|
|
CARD32 horz_v_period B32;
|
|
CARD32 vert_y_period B32;
|
|
CARD32 vert_u_period B32;
|
|
CARD32 vert_v_period B32;
|
|
CARD8 comp_order[32];
|
|
CARD8 scanline_order;
|
|
CARD8 pad7;
|
|
CARD16 pad8 B16;
|
|
CARD32 pad9 B32;
|
|
CARD32 pad10 B32;
|
|
} xvImageFormatInfo;
|
|
#define sz_xvImageFormatInfo 128
|
|
|
|
|
|
/* Requests */
|
|
|
|
#define xv_QueryExtension 0
|
|
#define xv_QueryAdaptors 1
|
|
#define xv_QueryEncodings 2
|
|
#define xv_GrabPort 3
|
|
#define xv_UngrabPort 4
|
|
#define xv_PutVideo 5
|
|
#define xv_PutStill 6
|
|
#define xv_GetVideo 7
|
|
#define xv_GetStill 8
|
|
#define xv_StopVideo 9
|
|
#define xv_SelectVideoNotify 10
|
|
#define xv_SelectPortNotify 11
|
|
#define xv_QueryBestSize 12
|
|
#define xv_SetPortAttribute 13
|
|
#define xv_GetPortAttribute 14
|
|
#define xv_QueryPortAttributes 15
|
|
#define xv_ListImageFormats 16
|
|
#define xv_QueryImageAttributes 17
|
|
#define xv_PutImage 18
|
|
#define xv_ShmPutImage 19
|
|
#define xv_LastRequest xv_ShmPutImage
|
|
|
|
#define xvNumRequests (xv_LastRequest + 1)
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
} xvQueryExtensionReq;
|
|
#define sz_xvQueryExtensionReq 4
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
CARD32 window B32;
|
|
} xvQueryAdaptorsReq;
|
|
#define sz_xvQueryAdaptorsReq 8
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
CARD32 port B32;
|
|
} xvQueryEncodingsReq;
|
|
#define sz_xvQueryEncodingsReq 8
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
INT16 vid_x B16;
|
|
INT16 vid_y B16;
|
|
CARD16 vid_w B16;
|
|
CARD16 vid_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
} xvPutVideoReq;
|
|
#define sz_xvPutVideoReq 32
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
INT16 vid_x B16;
|
|
INT16 vid_y B16;
|
|
CARD16 vid_w B16;
|
|
CARD16 vid_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
} xvPutStillReq;
|
|
#define sz_xvPutStillReq 32
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
INT16 vid_x B16;
|
|
INT16 vid_y B16;
|
|
CARD16 vid_w B16;
|
|
CARD16 vid_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
} xvGetVideoReq;
|
|
#define sz_xvGetVideoReq 32
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
INT16 vid_x B16;
|
|
INT16 vid_y B16;
|
|
CARD16 vid_w B16;
|
|
CARD16 vid_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
} xvGetStillReq;
|
|
#define sz_xvGetStillReq 32
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Time time B32;
|
|
} xvGrabPortReq;
|
|
#define sz_xvGrabPortReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Time time B32;
|
|
} xvUngrabPortReq;
|
|
#define sz_xvUngrabPortReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
Drawable drawable B32;
|
|
BOOL onoff;
|
|
CARD8 pad1;
|
|
CARD16 pad2;
|
|
} xvSelectVideoNotifyReq;
|
|
#define sz_xvSelectVideoNotifyReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
BOOL onoff;
|
|
CARD8 pad1;
|
|
CARD16 pad2;
|
|
} xvSelectPortNotifyReq;
|
|
#define sz_xvSelectPortNotifyReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
} xvStopVideoReq;
|
|
#define sz_xvStopVideoReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Atom attribute B32;
|
|
INT32 value B32;
|
|
} xvSetPortAttributeReq;
|
|
#define sz_xvSetPortAttributeReq 16
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Atom attribute B32;
|
|
} xvGetPortAttributeReq;
|
|
#define sz_xvGetPortAttributeReq 12
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
CARD16 vid_w B16;
|
|
CARD16 vid_h B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
CARD8 motion;
|
|
CARD8 pad1;
|
|
CARD16 pad2 B16;
|
|
} xvQueryBestSizeReq;
|
|
#define sz_xvQueryBestSizeReq 20
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
} xvQueryPortAttributesReq;
|
|
#define sz_xvQueryPortAttributesReq 8
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
CARD32 id B32;
|
|
INT16 src_x B16;
|
|
INT16 src_y B16;
|
|
CARD16 src_w B16;
|
|
CARD16 src_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
CARD16 width B16;
|
|
CARD16 height B16;
|
|
} xvPutImageReq;
|
|
#define sz_xvPutImageReq 40
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
Drawable drawable B32;
|
|
GContext gc B32;
|
|
ShmSeg shmseg B32;
|
|
CARD32 id B32;
|
|
CARD32 offset B32;
|
|
INT16 src_x B16;
|
|
INT16 src_y B16;
|
|
CARD16 src_w B16;
|
|
CARD16 src_h B16;
|
|
INT16 drw_x B16;
|
|
INT16 drw_y B16;
|
|
CARD16 drw_w B16;
|
|
CARD16 drw_h B16;
|
|
CARD16 width B16;
|
|
CARD16 height B16;
|
|
CARD8 send_event;
|
|
CARD8 pad1;
|
|
CARD16 pad2 B16;
|
|
} xvShmPutImageReq;
|
|
#define sz_xvShmPutImageReq 52
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
XvPortID port B32;
|
|
} xvListImageFormatsReq;
|
|
#define sz_xvListImageFormatsReq 8
|
|
|
|
typedef struct {
|
|
CARD8 reqType;
|
|
CARD8 xvReqType;
|
|
CARD16 length B16;
|
|
CARD32 port B32;
|
|
CARD32 id B32;
|
|
CARD16 width B16;
|
|
CARD16 height B16;
|
|
} xvQueryImageAttributesReq;
|
|
#define sz_xvQueryImageAttributesReq 16
|
|
|
|
|
|
/* Replies */
|
|
|
|
typedef struct _QueryExtensionReply {
|
|
BYTE type; /* X_Reply */
|
|
CARD8 padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32;
|
|
CARD16 version B16;
|
|
CARD16 revision B16;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryExtensionReply;
|
|
#define sz_xvQueryExtensionReply 32
|
|
|
|
typedef struct _QueryAdaptorsReply {
|
|
BYTE type; /* X_Reply */
|
|
CARD8 padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32;
|
|
CARD16 num_adaptors B16;
|
|
CARD16 pads3 B16;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryAdaptorsReply;
|
|
#define sz_xvQueryAdaptorsReply 32
|
|
|
|
typedef struct _QueryEncodingsReply {
|
|
BYTE type; /* X_Reply */
|
|
CARD8 padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32;
|
|
CARD16 num_encodings B16;
|
|
CARD32 padl3 B32;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryEncodingsReply;
|
|
#define sz_xvQueryEncodingsReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE result;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* 0 */
|
|
CARD32 padl3 B32;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvGrabPortReply;
|
|
#define sz_xvGrabPortReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* 0 */
|
|
INT32 value B32;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvGetPortAttributeReply;
|
|
#define sz_xvGetPortAttributeReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* 0 */
|
|
CARD16 actual_width B16;
|
|
CARD16 actual_height B16;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryBestSizeReply;
|
|
#define sz_xvQueryBestSizeReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32; /* 0 */
|
|
CARD32 num_attributes B32;
|
|
CARD32 text_size B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryPortAttributesReply;
|
|
#define sz_xvQueryPortAttributesReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32;
|
|
CARD32 num_formats B32;
|
|
CARD32 padl4 B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvListImageFormatsReply;
|
|
#define sz_xvListImageFormatsReply 32
|
|
|
|
typedef struct {
|
|
BYTE type; /* X_Reply */
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
CARD32 length B32;
|
|
CARD32 num_planes B32;
|
|
CARD32 data_size B32;
|
|
CARD16 width B16;
|
|
CARD16 height B16;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} xvQueryImageAttributesReply;
|
|
#define sz_xvQueryImageAttributesReply 32
|
|
|
|
/* DEFINE EVENT STRUCTURE */
|
|
|
|
typedef struct {
|
|
union {
|
|
struct {
|
|
BYTE type;
|
|
BYTE detail;
|
|
CARD16 sequenceNumber B16;
|
|
} u;
|
|
struct {
|
|
BYTE type;
|
|
BYTE reason;
|
|
CARD16 sequenceNumber B16;
|
|
Time time B32;
|
|
Drawable drawable B32;
|
|
XvPortID port B32;
|
|
CARD32 padl5 B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} videoNotify;
|
|
struct {
|
|
BYTE type;
|
|
BYTE padb1;
|
|
CARD16 sequenceNumber B16;
|
|
Time time B32;
|
|
XvPortID port B32;
|
|
Atom attribute B32;
|
|
INT32 value B32;
|
|
CARD32 padl6 B32;
|
|
CARD32 padl7 B32;
|
|
CARD32 padl8 B32;
|
|
} portNotify;
|
|
} u;
|
|
} xvEvent;
|
|
|
|
#undef XvPortID
|
|
#undef XvEncodingID
|
|
#undef ShmSeg
|
|
#undef VisualID
|
|
#undef Drawable
|
|
#undef GContext
|
|
#undef Time
|
|
#undef Atom
|
|
|
|
#endif /* XVPROTO_H */
|
|
|