tizen 2.4 release
[framework/uifw/xorg/lib/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 */