tizen 2.4 release
[framework/uifw/xorg/server/xorg-server.git] / Xext / xvdix.h
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
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
58 extern _X_EXPORT unsigned long XvExtensionGeneration;
59 extern _X_EXPORT unsigned long XvScreenGeneration;
60 extern _X_EXPORT unsigned long XvResourceGeneration;
61
62 extern _X_EXPORT int XvReqCode;
63 extern _X_EXPORT int XvEventBase;
64 extern _X_EXPORT int XvErrorBase;
65
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;
72
73 typedef struct {
74     int numerator;
75     int denominator;
76 } XvRationalRec, *XvRationalPtr;
77
78 typedef struct {
79     char depth;
80     unsigned long visual;
81 } XvFormatRec, *XvFormatPtr;
82
83 typedef struct {
84     unsigned long id;
85     ClientPtr client;
86 } XvGrabRec, *XvGrabPtr;
87
88 typedef struct _XvVideoNotifyRec {
89     struct _XvVideoNotifyRec *next;
90     ClientPtr client;
91     unsigned long id;
92     unsigned long mask;
93 } XvVideoNotifyRec, *XvVideoNotifyPtr;
94
95 typedef struct _XvPortNotifyRec {
96     struct _XvPortNotifyRec *next;
97     ClientPtr client;
98     unsigned long id;
99 } XvPortNotifyRec, *XvPortNotifyPtr;
100
101 typedef struct {
102     int id;
103     ScreenPtr pScreen;
104     char *name;
105     unsigned short width, height;
106     XvRationalRec rate;
107 } XvEncodingRec, *XvEncodingPtr;
108
109 typedef struct _XvAttributeRec {
110     int flags;
111     int min_value;
112     int max_value;
113     char *name;
114 } XvAttributeRec, *XvAttributePtr;
115
116 typedef struct {
117     int id;
118     int type;
119     int byte_order;
120     char guid[16];
121     int bits_per_pixel;
122     int format;
123     int num_planes;
124
125     /* for RGB formats only */
126     int depth;
127     unsigned int red_mask;
128     unsigned int green_mask;
129     unsigned int blue_mask;
130
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];
142     int scanline_order;
143 } XvImageRec, *XvImagePtr;
144
145 typedef struct {
146     unsigned long base_id;
147 #ifdef _F_PUT_ON_PIXMAP_
148     unsigned int type;
149 #else
150     unsigned char type;
151 #endif
152     char *name;
153     int nEncodings;
154     XvEncodingPtr pEncodings;
155     int nFormats;
156     XvFormatPtr pFormats;
157     int nAttributes;
158     XvAttributePtr pAttributes;
159     int nImages;
160     XvImagePtr pImages;
161     int nPorts;
162     struct _XvPortRec *pPorts;
163     ScreenPtr pScreen;
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 *);
191     DevUnion devPriv;
192 } XvAdaptorRec, *XvAdaptorPtr;
193
194 typedef struct _XvPortRec {
195     unsigned long id;
196     XvAdaptorPtr pAdaptor;
197     XvPortNotifyPtr pNotify;
198     DrawablePtr pDraw;
199     ClientPtr client;
200     XvGrabRec grab;
201     TimeStamp time;
202     DevUnion devPriv;
203 } XvPortRec, *XvPortPtr;
204
205 #define VALIDATE_XV_PORT(portID, pPort, mode)\
206     {\
207         int rc = dixLookupResourceByType((void **)&(pPort), portID,\
208                                          XvRTPort, client, mode);\
209         if (rc != Success)\
210             return rc;\
211     }
212
213 typedef struct {
214     int version, revision;
215     int nAdaptors;
216     XvAdaptorPtr pAdaptors;
217     DestroyWindowProcPtr DestroyWindow;
218     DestroyPixmapProcPtr DestroyPixmap;
219     CloseScreenProcPtr CloseScreen;
220     Bool (*ddCloseScreen) (ScreenPtr);
221     int (*ddQueryAdaptors) (ScreenPtr, XvAdaptorPtr *, int *);
222     DevUnion devPriv;
223 } XvScreenRec, *XvScreenPtr;
224
225 #define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = ((XvScreenPtr) \
226     dixLookupPrivate(&(pScreen)->devPrivates, XvScreenKey))->field)
227
228 #define SCREEN_EPILOGUE(pScreen, field, wrapper)\
229     ((pScreen)->field = wrapper)
230
231 /* Errors */
232
233 #define _XvBadPort (XvBadPort+XvErrorBase)
234 #define _XvBadEncoding (XvBadEncoding+XvErrorBase)
235
236 extern _X_EXPORT int ProcXvDispatch(ClientPtr);
237 extern _X_EXPORT int SProcXvDispatch(ClientPtr);
238
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);
244
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,
261                                   CARD16, CARD16);
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);
271 #endif                          /* XVDIX_H */