1 /***********************************************************
2 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
3 and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
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.
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
23 ******************************************************************/
30 ** xvdix.h --- Xv device independent header file
34 ** David Carver (Digital Workstation Engineering/Project Athena)
39 ** - removed UnrealizeWindow wrapper unrealizing windows no longer
43 ** - changed SetPortControl to SetPortAttribute
44 ** - changed GetPortControl to GetPortAttribute
45 ** - changed QueryBestSize
48 ** - version 2.0 upgrade
51 ** - version 1.4 upgrade
55 #include "scrnintstr.h"
56 #include <X11/extensions/Xvproto.h>
58 extern _X_EXPORT unsigned long XvExtensionGeneration;
59 extern _X_EXPORT unsigned long XvScreenGeneration;
60 extern _X_EXPORT unsigned long XvResourceGeneration;
62 extern _X_EXPORT int XvReqCode;
63 extern _X_EXPORT int XvEventBase;
64 extern _X_EXPORT int XvErrorBase;
66 extern _X_EXPORT RESTYPE XvRTPort;
67 extern _X_EXPORT RESTYPE XvRTEncoding;
68 extern _X_EXPORT RESTYPE XvRTGrab;
69 extern _X_EXPORT RESTYPE XvRTVideoNotify;
70 extern _X_EXPORT RESTYPE XvRTVideoNotifyList;
71 extern _X_EXPORT RESTYPE XvRTPortNotify;
76 } XvRationalRec, *XvRationalPtr;
81 } XvFormatRec, *XvFormatPtr;
86 } XvGrabRec, *XvGrabPtr;
88 typedef struct _XvVideoNotifyRec {
89 struct _XvVideoNotifyRec *next;
93 } XvVideoNotifyRec, *XvVideoNotifyPtr;
95 typedef struct _XvPortNotifyRec {
96 struct _XvPortNotifyRec *next;
99 } XvPortNotifyRec, *XvPortNotifyPtr;
105 unsigned short width, height;
107 } XvEncodingRec, *XvEncodingPtr;
109 typedef struct _XvAttributeRec {
114 } XvAttributeRec, *XvAttributePtr;
125 /* for RGB formats only */
127 unsigned int red_mask;
128 unsigned int green_mask;
129 unsigned int blue_mask;
131 /* for YUV formats only */
132 unsigned int y_sample_bits;
133 unsigned int u_sample_bits;
134 unsigned int v_sample_bits;
135 unsigned int horz_y_period;
136 unsigned int horz_u_period;
137 unsigned int horz_v_period;
138 unsigned int vert_y_period;
139 unsigned int vert_u_period;
140 unsigned int vert_v_period;
141 char component_order[32];
143 } XvImageRec, *XvImagePtr;
146 unsigned long base_id;
147 #ifdef _F_PUT_ON_PIXMAP_
154 XvEncodingPtr pEncodings;
156 XvFormatPtr pFormats;
158 XvAttributePtr pAttributes;
162 struct _XvPortRec *pPorts;
164 int (*ddAllocatePort) (unsigned long, struct _XvPortRec *,
165 struct _XvPortRec **);
166 int (*ddFreePort) (struct _XvPortRec *);
167 int (*ddPutVideo) (ClientPtr, DrawablePtr, struct _XvPortRec *, GCPtr,
168 INT16, INT16, CARD16, CARD16,
169 INT16, INT16, CARD16, CARD16);
170 int (*ddPutStill) (ClientPtr, DrawablePtr, struct _XvPortRec *, GCPtr,
171 INT16, INT16, CARD16, CARD16,
172 INT16, INT16, CARD16, CARD16);
173 int (*ddGetVideo) (ClientPtr, DrawablePtr, struct _XvPortRec *, GCPtr,
174 INT16, INT16, CARD16, CARD16,
175 INT16, INT16, CARD16, CARD16);
176 int (*ddGetStill) (ClientPtr, DrawablePtr, struct _XvPortRec *, GCPtr,
177 INT16, INT16, CARD16, CARD16,
178 INT16, INT16, CARD16, CARD16);
179 int (*ddStopVideo) (ClientPtr, struct _XvPortRec *, DrawablePtr);
180 int (*ddSetPortAttribute) (ClientPtr, struct _XvPortRec *, Atom, INT32);
181 int (*ddGetPortAttribute) (ClientPtr, struct _XvPortRec *, Atom, INT32 *);
182 int (*ddQueryBestSize) (ClientPtr, struct _XvPortRec *, CARD8,
183 CARD16, CARD16, CARD16, CARD16,
184 unsigned int *, unsigned int *);
185 int (*ddPutImage) (ClientPtr, DrawablePtr, struct _XvPortRec *, GCPtr,
186 INT16, INT16, CARD16, CARD16,
187 INT16, INT16, CARD16, CARD16,
188 XvImagePtr, unsigned char *, Bool, CARD16, CARD16);
189 int (*ddQueryImageAttributes) (ClientPtr, struct _XvPortRec *, XvImagePtr,
190 CARD16 *, CARD16 *, int *, int *);
192 } XvAdaptorRec, *XvAdaptorPtr;
194 typedef struct _XvPortRec {
196 XvAdaptorPtr pAdaptor;
197 XvPortNotifyPtr pNotify;
203 } XvPortRec, *XvPortPtr;
205 #define VALIDATE_XV_PORT(portID, pPort, mode)\
207 int rc = dixLookupResourceByType((void **)&(pPort), portID,\
208 XvRTPort, client, mode);\
214 int version, revision;
216 XvAdaptorPtr pAdaptors;
217 DestroyWindowProcPtr DestroyWindow;
218 DestroyPixmapProcPtr DestroyPixmap;
219 CloseScreenProcPtr CloseScreen;
220 Bool (*ddCloseScreen) (ScreenPtr);
221 int (*ddQueryAdaptors) (ScreenPtr, XvAdaptorPtr *, int *);
223 } XvScreenRec, *XvScreenPtr;
225 #define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = ((XvScreenPtr) \
226 dixLookupPrivate(&(pScreen)->devPrivates, XvScreenKey))->field)
228 #define SCREEN_EPILOGUE(pScreen, field, wrapper)\
229 ((pScreen)->field = wrapper)
233 #define _XvBadPort (XvBadPort+XvErrorBase)
234 #define _XvBadEncoding (XvBadEncoding+XvErrorBase)
236 extern _X_EXPORT int ProcXvDispatch(ClientPtr);
237 extern _X_EXPORT int SProcXvDispatch(ClientPtr);
239 extern _X_EXPORT int XvScreenInit(ScreenPtr);
240 extern _X_EXPORT DevPrivateKey XvGetScreenKey(void);
241 extern _X_EXPORT unsigned long XvGetRTPort(void);
242 extern _X_EXPORT int XvdiSendPortNotify(XvPortPtr, Atom, INT32);
243 extern _X_EXPORT int XvdiVideoStopped(XvPortPtr, int);
245 extern _X_EXPORT int XvdiPutVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
246 INT16, INT16, CARD16, CARD16,
247 INT16, INT16, CARD16, CARD16);
248 extern _X_EXPORT int XvdiPutStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
249 INT16, INT16, CARD16, CARD16,
250 INT16, INT16, CARD16, CARD16);
251 extern _X_EXPORT int XvdiGetVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
252 INT16, INT16, CARD16, CARD16,
253 INT16, INT16, CARD16, CARD16);
254 extern _X_EXPORT int XvdiGetStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
255 INT16, INT16, CARD16, CARD16,
256 INT16, INT16, CARD16, CARD16);
257 extern _X_EXPORT int XvdiPutImage(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
258 INT16, INT16, CARD16, CARD16,
259 INT16, INT16, CARD16, CARD16,
260 XvImagePtr, unsigned char *, Bool,
262 extern _X_EXPORT int XvdiSelectVideoNotify(ClientPtr, DrawablePtr, BOOL);
263 extern _X_EXPORT int XvdiSelectPortNotify(ClientPtr, XvPortPtr, BOOL);
264 extern _X_EXPORT int XvdiSetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32);
265 extern _X_EXPORT int XvdiGetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32 *);
266 extern _X_EXPORT int XvdiStopVideo(ClientPtr, XvPortPtr, DrawablePtr);
267 extern _X_EXPORT int XvdiPreemptVideo(ClientPtr, XvPortPtr, DrawablePtr);
268 extern _X_EXPORT int XvdiMatchPort(XvPortPtr, DrawablePtr);
269 extern _X_EXPORT int XvdiGrabPort(ClientPtr, XvPortPtr, Time, int *);
270 extern _X_EXPORT int XvdiUngrabPort(ClientPtr, XvPortPtr, Time);