xvdix.h revision 05b261ec
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 XVDIX_H 26#define XVDIX_H 27/* 28** File: 29** 30** xvdix.h --- Xv device independent header file 31** 32** Author: 33** 34** David Carver (Digital Workstation Engineering/Project Athena) 35** 36** Revisions: 37** 38** 29.08.91 Carver 39** - removed UnrealizeWindow wrapper unrealizing windows no longer 40** preempts video 41** 42** 11.06.91 Carver 43** - changed SetPortControl to SetPortAttribute 44** - changed GetPortControl to GetPortAttribute 45** - changed QueryBestSize 46** 47** 15.05.91 Carver 48** - version 2.0 upgrade 49** 50** 24.01.91 Carver 51** - version 1.4 upgrade 52** 53*/ 54 55#include "scrnintstr.h" 56#include <X11/extensions/Xvproto.h> 57 58extern int XvScreenIndex; 59extern unsigned long XvExtensionGeneration; 60extern unsigned long XvScreenGeneration; 61extern unsigned long XvResourceGeneration; 62 63extern int XvReqCode; 64extern int XvEventBase; 65extern int XvErrorBase; 66 67extern unsigned long XvRTPort; 68extern unsigned long XvRTEncoding; 69extern unsigned long XvRTGrab; 70extern unsigned long XvRTVideoNotify; 71extern unsigned long XvRTVideoNotifyList; 72extern unsigned long XvRTPortNotify; 73 74typedef struct { 75 int numerator; 76 int denominator; 77} XvRationalRec, *XvRationalPtr; 78 79typedef struct { 80 char depth; 81 unsigned long visual; 82} XvFormatRec, *XvFormatPtr; 83 84typedef struct { 85 unsigned long id; 86 ClientPtr client; 87} XvGrabRec, *XvGrabPtr; 88 89typedef struct _XvVideoNotifyRec { 90 struct _XvVideoNotifyRec *next; 91 ClientPtr client; 92 unsigned long id; 93 unsigned long mask; 94} XvVideoNotifyRec, *XvVideoNotifyPtr; 95 96typedef struct _XvPortNotifyRec { 97 struct _XvPortNotifyRec *next; 98 ClientPtr client; 99 unsigned long id; 100} XvPortNotifyRec, *XvPortNotifyPtr; 101 102typedef struct { 103 int id; 104 ScreenPtr pScreen; 105 char *name; 106 unsigned short width, height; 107 XvRationalRec rate; 108} XvEncodingRec, *XvEncodingPtr; 109 110typedef struct _XvAttributeRec { 111 int flags; 112 int min_value; 113 int max_value; 114 char *name; 115} XvAttributeRec, *XvAttributePtr; 116 117typedef struct { 118 int id; 119 int type; 120 int byte_order; 121 char guid[16]; 122 int bits_per_pixel; 123 int format; 124 int num_planes; 125 126 /* for RGB formats only */ 127 int depth; 128 unsigned int red_mask; 129 unsigned int green_mask; 130 unsigned int blue_mask; 131 132 /* for YUV formats only */ 133 unsigned int y_sample_bits; 134 unsigned int u_sample_bits; 135 unsigned int v_sample_bits; 136 unsigned int horz_y_period; 137 unsigned int horz_u_period; 138 unsigned int horz_v_period; 139 unsigned int vert_y_period; 140 unsigned int vert_u_period; 141 unsigned int vert_v_period; 142 char component_order[32]; 143 int scanline_order; 144} XvImageRec, *XvImagePtr; 145 146typedef struct { 147 unsigned long base_id; 148 unsigned char type; 149 char *name; 150 int nEncodings; 151 XvEncodingPtr pEncodings; 152 int nFormats; 153 XvFormatPtr pFormats; 154 int nAttributes; 155 XvAttributePtr pAttributes; 156 int nImages; 157 XvImagePtr pImages; 158 int nPorts; 159 struct _XvPortRec *pPorts; 160 ScreenPtr pScreen; 161 int (* ddAllocatePort)(unsigned long, struct _XvPortRec*, 162 struct _XvPortRec**); 163 int (* ddFreePort)(struct _XvPortRec*); 164 int (* ddPutVideo)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr, 165 INT16, INT16, CARD16, CARD16, 166 INT16, INT16, CARD16, CARD16); 167 int (* ddPutStill)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr, 168 INT16, INT16, CARD16, CARD16, 169 INT16, INT16, CARD16, CARD16); 170 int (* ddGetVideo)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr, 171 INT16, INT16, CARD16, CARD16, 172 INT16, INT16, CARD16, CARD16); 173 int (* ddGetStill)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr, 174 INT16, INT16, CARD16, CARD16, 175 INT16, INT16, CARD16, CARD16); 176 int (* ddStopVideo)(ClientPtr, struct _XvPortRec*, DrawablePtr); 177 int (* ddSetPortAttribute)(ClientPtr, struct _XvPortRec*, Atom, INT32); 178 int (* ddGetPortAttribute)(ClientPtr, struct _XvPortRec*, Atom, INT32*); 179 int (* ddQueryBestSize)(ClientPtr, struct _XvPortRec*, CARD8, 180 CARD16, CARD16,CARD16, CARD16, 181 unsigned int*, unsigned int*); 182 int (* ddPutImage)(ClientPtr, DrawablePtr, struct _XvPortRec*, GCPtr, 183 INT16, INT16, CARD16, CARD16, 184 INT16, INT16, CARD16, CARD16, 185 XvImagePtr, unsigned char*, Bool, 186 CARD16, CARD16); 187 int (* ddQueryImageAttributes)(ClientPtr, struct _XvPortRec*, XvImagePtr, 188 CARD16*, CARD16*, int*, int*); 189 DevUnion devPriv; 190} XvAdaptorRec, *XvAdaptorPtr; 191 192typedef struct _XvPortRec { 193 unsigned long id; 194 XvAdaptorPtr pAdaptor; 195 XvPortNotifyPtr pNotify; 196 DrawablePtr pDraw; 197 ClientPtr client; 198 XvGrabRec grab; 199 TimeStamp time; 200 DevUnion devPriv; 201} XvPortRec, *XvPortPtr; 202 203#define LOOKUP_PORT(_id, client)\ 204 ((XvPortPtr)LookupIDByType(_id, XvRTPort)) 205 206#define LOOKUP_ENCODING(_id, client)\ 207 ((XvEncodingPtr)LookupIDByType(_id, XvRTEncoding)) 208 209#define LOOKUP_VIDEONOTIFY_LIST(_id, client)\ 210 ((XvVideoNotifyPtr)LookupIDByType(_id, XvRTVideoNotifyList)) 211 212#define LOOKUP_PORTNOTIFY_LIST(_id, client)\ 213 ((XvPortNotifyPtr)LookupIDByType(_id, XvRTPortNotifyList)) 214 215typedef struct { 216 int version, revision; 217 int nAdaptors; 218 XvAdaptorPtr pAdaptors; 219 DestroyWindowProcPtr DestroyWindow; 220 DestroyPixmapProcPtr DestroyPixmap; 221 CloseScreenProcPtr CloseScreen; 222 Bool (* ddCloseScreen)(int, ScreenPtr); 223 int (* ddQueryAdaptors)(ScreenPtr, XvAdaptorPtr*, int*); 224 DevUnion devPriv; 225} XvScreenRec, *XvScreenPtr; 226 227#define SCREEN_PROLOGUE(pScreen, field)\ 228 ((pScreen)->field = \ 229 ((XvScreenPtr) \ 230 (pScreen)->devPrivates[XvScreenIndex].ptr)->field) 231 232#define SCREEN_EPILOGUE(pScreen, field, wrapper)\ 233 ((pScreen)->field = wrapper) 234 235/* Errors */ 236 237#define _XvBadPort (XvBadPort+XvErrorBase) 238#define _XvBadEncoding (XvBadEncoding+XvErrorBase) 239 240extern int ProcXvDispatch(ClientPtr); 241extern int SProcXvDispatch(ClientPtr); 242 243extern void XvExtensionInit(void); 244extern int XvScreenInit(ScreenPtr); 245extern int XvGetScreenIndex(void); 246extern unsigned long XvGetRTPort(void); 247extern int XvdiSendPortNotify(XvPortPtr, Atom, INT32); 248extern int XvdiVideoStopped(XvPortPtr, int); 249 250extern int XvdiPutVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, 251 INT16, INT16, CARD16, CARD16, 252 INT16, INT16, CARD16, CARD16); 253extern int XvdiPutStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, 254 INT16, INT16, CARD16, CARD16, 255 INT16, INT16, CARD16, CARD16); 256extern int XvdiGetVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, 257 INT16, INT16, CARD16, CARD16, 258 INT16, INT16, CARD16, CARD16); 259extern int XvdiGetStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, 260 INT16, INT16, CARD16, CARD16, 261 INT16, INT16, CARD16, CARD16); 262extern int XvdiPutImage(ClientPtr, DrawablePtr, XvPortPtr, GCPtr, 263 INT16, INT16, CARD16, CARD16, 264 INT16, INT16, CARD16, CARD16, 265 XvImagePtr, unsigned char*, Bool, 266 CARD16, CARD16); 267extern int XvdiSelectVideoNotify(ClientPtr, DrawablePtr, BOOL); 268extern int XvdiSelectPortNotify(ClientPtr, XvPortPtr, BOOL); 269extern int XvdiSetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32); 270extern int XvdiGetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32*); 271extern int XvdiStopVideo(ClientPtr, XvPortPtr, DrawablePtr); 272extern int XvdiPreemptVideo(ClientPtr, XvPortPtr, DrawablePtr); 273extern int XvdiMatchPort(XvPortPtr, DrawablePtr); 274extern int XvdiGrabPort(ClientPtr, XvPortPtr, Time, int *); 275extern int XvdiUngrabPort( ClientPtr, XvPortPtr, Time); 276 277 278#if !defined(UNIXCPP) 279 280#define XVCALL(name) Xv##name 281 282#else 283 284#define XVCALL(name) Xv/**/name 285 286#endif 287 288 289#endif /* XVDIX_H */ 290 291