Imported Upstream version 1.0.7
[platform/upstream/libXv.git] / include / X11 / extensions / Xvlib.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 XVLIB_H
26 #define XVLIB_H
27 /*
28 ** File:
29 **
30 **   Xvlib.h --- Xv library public header file
31 **
32 ** Author:
33 **
34 **   David Carver (Digital Workstation Engineering/Project Athena)
35 **
36 ** Revisions:
37 **
38 **   26.06.91 Carver
39 **     - changed XvFreeAdaptors to XvFreeAdaptorInfo
40 **     - changed XvFreeEncodings to XvFreeEncodingInfo
41 **
42 **   11.06.91 Carver
43 **     - changed SetPortControl to SetPortAttribute
44 **     - changed GetPortControl to GetPortAttribute
45 **     - changed QueryBestSize
46 **
47 **   05.15.91 Carver
48 **     - version 2.0 upgrade
49 **
50 **   01.24.91 Carver
51 **     - version 1.4 upgrade
52 **
53 */
54
55 #include <X11/Xfuncproto.h>
56 #include <X11/extensions/Xv.h>
57 #include <X11/extensions/XShm.h>
58
59 typedef struct {
60   int numerator;
61   int denominator;
62 } XvRational;
63
64 typedef struct {
65   int flags;    /* XvGettable, XvSettable */
66   int min_value;
67   int max_value;
68   char *name;
69 } XvAttribute;
70
71 typedef struct {
72   XvEncodingID encoding_id;
73   char *name;
74   unsigned long width;
75   unsigned long height;
76   XvRational rate;
77   unsigned long num_encodings;
78 } XvEncodingInfo;
79
80 typedef struct {
81   char depth;
82   unsigned long visual_id;
83 } XvFormat;
84
85 typedef struct {
86   XvPortID base_id;
87   unsigned long num_ports;
88   char type;
89   char *name;
90   unsigned long num_formats;
91   XvFormat *formats;
92   unsigned long num_adaptors;
93 } XvAdaptorInfo;
94
95 typedef struct {
96   int type;
97   unsigned long serial;    /* # of last request processed by server */
98   Bool send_event;         /* true if this came from a SendEvent request */
99   Display *display;        /* Display the event was read from */
100   Drawable drawable;       /* drawable */
101   unsigned long reason;    /* what generated this event */
102   XvPortID port_id;        /* what port */
103   Time time;               /* milliseconds */
104 } XvVideoNotifyEvent;
105
106 typedef struct {
107   int type;
108   unsigned long serial;    /* # of last request processed by server */
109   Bool send_event;         /* true if this came from a SendEvent request */
110   Display *display;        /* Display the event was read from */
111   XvPortID port_id;        /* what port */
112   Time time;               /* milliseconds */
113   Atom attribute;           /* atom that identifies attribute */
114   long value;              /* value of attribute */
115 } XvPortNotifyEvent;
116
117 typedef union {
118   int type;
119   XvVideoNotifyEvent xvvideo;
120   XvPortNotifyEvent xvport;
121   long pad[24];
122 } XvEvent;
123
124 typedef struct {
125   int id;                      /* Unique descriptor for the format */
126   int type;                    /* XvRGB, XvYUV */
127   int byte_order;              /* LSBFirst, MSBFirst */
128   char guid[16];               /* Globally Unique IDentifier */
129   int bits_per_pixel;
130   int format;                  /* XvPacked, XvPlanar */
131   int num_planes;
132
133   /* for RGB formats only */
134   int depth;
135   unsigned int red_mask;
136   unsigned int green_mask;
137   unsigned int blue_mask;
138
139   /* for YUV formats only */
140   unsigned int y_sample_bits;
141   unsigned int u_sample_bits;
142   unsigned int v_sample_bits;
143   unsigned int horz_y_period;
144   unsigned int horz_u_period;
145   unsigned int horz_v_period;
146   unsigned int vert_y_period;
147   unsigned int vert_u_period;
148   unsigned int vert_v_period;
149   char component_order[32];    /* eg. UYVY */
150   int scanline_order;          /* XvTopToBottom, XvBottomToTop */
151 } XvImageFormatValues;
152
153 typedef struct {
154   int id;
155   int width, height;
156   int data_size;              /* bytes */
157   int num_planes;
158   int *pitches;               /* bytes */
159   int *offsets;               /* bytes */
160   char *data;
161   XPointer obdata;
162 } XvImage;
163
164 _XFUNCPROTOBEGIN
165
166 extern int XvQueryExtension(
167   Display*                 /* display */,
168   unsigned int*            /* p_version */,
169   unsigned int*            /* p_revision */,
170   unsigned int*            /* p_requestBase */,
171   unsigned int*            /* p_eventBase */,
172   unsigned int*            /* p_errorBase */
173 );
174
175 extern int XvQueryAdaptors(
176   Display*                 /* display */,
177   Window                   /* window */,
178   unsigned int*            /* p_nAdaptors */,
179   XvAdaptorInfo**          /* p_pAdaptors */
180 );
181
182 extern int XvQueryEncodings(
183   Display*                 /* display */,
184   XvPortID                 /* port */,
185   unsigned int*            /* p_nEncoding */,
186   XvEncodingInfo**         /* p_pEncoding */
187 );
188
189 extern int XvPutVideo(
190   Display*                 /* display */,
191   XvPortID                 /* port */,
192   Drawable                 /* d */,
193   GC                       /* gc */,
194   int                      /* vx */,
195   int                      /* vy */,
196   unsigned int             /* vw */,
197   unsigned int             /* vh */,
198   int                      /* dx */,
199   int                      /* dy */,
200   unsigned int             /* dw */,
201   unsigned int             /* dh */
202 );
203
204 extern int XvPutStill(
205   Display*                 /* display */,
206   XvPortID                 /* port */,
207   Drawable                 /* d */,
208   GC                       /* gc */,
209   int                      /* vx */,
210   int                      /* vy */,
211   unsigned int             /* vw */,
212   unsigned int             /* vh */,
213   int                      /* dx */,
214   int                      /* dy */,
215   unsigned int             /* dw */,
216   unsigned int             /* dh */
217 );
218
219 extern int XvGetVideo(
220   Display*                 /* display */,
221   XvPortID                 /* port */,
222   Drawable                 /* d */,
223   GC                       /* gc */,
224   int                      /* vx */,
225   int                      /* vy */,
226   unsigned int             /* vw */,
227   unsigned int             /* vh */,
228   int                      /* dx */,
229   int                      /* dy */,
230   unsigned int             /* dw */,
231   unsigned int             /* dh */
232 );
233
234 extern int XvGetStill(
235   Display*                 /* display */,
236   XvPortID                 /* port */,
237   Drawable                 /* d */,
238   GC                       /* gc */,
239   int                      /* vx */,
240   int                      /* vy */,
241   unsigned int             /* vw */,
242   unsigned int             /* vh */,
243   int                      /* dx */,
244   int                      /* dy */,
245   unsigned int             /* dw */,
246   unsigned int             /* dh */
247 );
248
249 extern int XvStopVideo(
250   Display*                /* display */,
251   XvPortID                /* port */,
252   Drawable                /* drawable */
253 );
254
255 extern int XvGrabPort(
256   Display*                /* display */,
257   XvPortID                /* port */,
258   Time                    /* time */
259 );
260
261 extern int XvUngrabPort(
262   Display*                /* display */,
263   XvPortID                /* port */,
264   Time                    /* time */
265 );
266
267 extern int XvSelectVideoNotify(
268   Display*                /* display */,
269   Drawable                /* drawable */,
270   Bool                    /* onoff */
271 );
272
273 extern int XvSelectPortNotify(
274   Display*                /* display */,
275   XvPortID                /* port */,
276   Bool                    /* onoff */
277 );
278
279 extern int XvSetPortAttribute(
280   Display*                /* display */,
281   XvPortID                /* port */,
282   Atom                    /* attribute */,
283   int                     /* value */
284 );
285
286 extern int XvGetPortAttribute(
287   Display*                /* display */,
288   XvPortID                /* port */,
289   Atom                    /* attribute */,
290   int*                    /* p_value */
291 );
292
293 extern int XvQueryBestSize(
294   Display*                /* display */,
295   XvPortID                /* port */,
296   Bool                    /* motion */,
297   unsigned int            /* vid_w */,
298   unsigned int            /* vid_h */,
299   unsigned int            /* drw_w */,
300   unsigned int            /* drw_h */,
301   unsigned int*           /* p_actual_width */,
302   unsigned int*           /* p_actual_width */
303 );
304
305 extern XvAttribute* XvQueryPortAttributes(
306   Display*                /* display */,
307   XvPortID                /* port */,
308   int*                    /* number */
309 );
310
311
312 extern void XvFreeAdaptorInfo(
313   XvAdaptorInfo*          /* adaptors */
314 );
315
316 extern void XvFreeEncodingInfo(
317   XvEncodingInfo*         /* encodings */
318 );
319
320
321 extern XvImageFormatValues * XvListImageFormats (
322    Display      *display,
323    XvPortID     port_id,
324    int          *count_return
325 );
326
327 extern XvImage * XvCreateImage (
328    Display *display,
329    XvPortID port,
330    int id,
331    char *data,
332    int width,
333    int height
334 );
335
336 extern int XvPutImage (
337   Display *display,
338    XvPortID id,
339    Drawable d,
340    GC gc,
341    XvImage *image,
342    int src_x,
343    int src_y,
344    unsigned int src_w,
345    unsigned int src_h,
346    int dest_x,
347    int dest_y,
348    unsigned int dest_w,
349    unsigned int dest_h
350 );
351
352 extern int XvShmPutImage (
353    Display *display,
354    XvPortID id,
355    Drawable d,
356    GC gc,
357    XvImage *image,
358    int src_x,
359    int src_y,
360    unsigned int src_w,
361    unsigned int src_h,
362    int dest_x,
363    int dest_y,
364    unsigned int dest_w,
365    unsigned int dest_h,
366    Bool send_event
367 );
368
369 extern XvImage * XvShmCreateImage (
370    Display *display,
371    XvPortID port,
372    int id,
373    char* data,
374    int width,
375    int height,
376    XShmSegmentInfo *shminfo
377 );
378
379
380 _XFUNCPROTOEND
381
382 #endif /* XVLIB_H */