upload tizen2.0 source
[framework/uifw/xorg/proto/x11proto-video.git] / Xvproto.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 XVPROTO_H
26 #define XVPROTO_H
27 /*
28 ** File: 
29 **
30 **   Xvproto.h --- Xv protocol header file
31 **
32 ** Author: 
33 **
34 **   David Carver (Digital Workstation Engineering/Project Athena)
35 **
36 ** Revisions:
37 **
38 **   11.06.91 Carver
39 **     - changed SetPortControl to SetPortAttribute
40 **     - changed GetPortControl to GetPortAttribute
41 **     - changed QueryBestSize
42 **
43 **   15.05.91 Carver
44 **     - version 2.0 upgrade
45 **
46 **   24.01.91 Carver
47 **     - version 1.4 upgrade
48 **
49 */
50
51 #include <X11/Xmd.h>
52
53 /* Symbols: These are undefined at the end of this file to restore the
54    values they have in Xv.h */
55
56 #define XvPortID CARD32
57 #define XvEncodingID CARD32
58 #define ShmSeg CARD32
59 #define VisualID CARD32
60 #define Drawable CARD32
61 #define GContext CARD32
62 #define Time CARD32
63 #define Atom CARD32
64
65 /* Structures */
66
67 typedef struct {
68   INT32 numerator B32;
69   INT32 denominator B32;
70 } xvRational;
71 #define sz_xvRational 8
72
73 typedef struct {
74   XvPortID base_id B32;
75   CARD16 name_size B16;
76   CARD16 num_ports B16;
77   CARD16 num_formats B16;
78   CARD8 type;
79   CARD8 pad;
80 } xvAdaptorInfo;
81 #define sz_xvAdaptorInfo 12
82
83 typedef struct {
84   XvEncodingID encoding B32;
85   CARD16 name_size B16;
86   CARD16 width B16, height B16;
87   xvRational rate;
88   CARD16 pad B16;
89 } xvEncodingInfo;
90 #define sz_xvEncodingInfo (12 + sz_xvRational)
91
92 typedef struct {
93   VisualID visual B32;
94   CARD8 depth;
95   CARD8 pad1;
96   CARD16 pad2 B16;
97 } xvFormat;
98 #define sz_xvFormat 8
99
100 typedef struct {
101   CARD32 flags B32;
102   INT32 min B32;
103   INT32 max B32;
104   CARD32 size  B32;
105 } xvAttributeInfo;
106 #define sz_xvAttributeInfo 16
107
108 typedef struct {
109   CARD32 id B32;
110   CARD8 type;
111   CARD8 byte_order;
112   CARD16 pad1 B16;
113   CARD8 guid[16];
114   CARD8 bpp;
115   CARD8 num_planes;
116   CARD16 pad2 B16;
117   CARD8 depth;
118   CARD8 pad3;
119   CARD16 pad4 B16;
120   CARD32 red_mask B32;
121   CARD32 green_mask B32;
122   CARD32 blue_mask B32;
123   CARD8 format;
124   CARD8 pad5;
125   CARD16 pad6 B16;
126   CARD32 y_sample_bits B32;
127   CARD32 u_sample_bits B32;
128   CARD32 v_sample_bits B32;   
129   CARD32 horz_y_period B32;
130   CARD32 horz_u_period B32;
131   CARD32 horz_v_period B32;
132   CARD32 vert_y_period B32;
133   CARD32 vert_u_period B32;
134   CARD32 vert_v_period B32;
135   CARD8 comp_order[32];
136   CARD8 scanline_order;
137   CARD8 pad7;
138   CARD16 pad8 B16;
139   CARD32 pad9 B32;
140   CARD32 pad10 B32;
141 } xvImageFormatInfo;
142 #define sz_xvImageFormatInfo 128
143
144
145 /* Requests */
146
147 #define xv_QueryExtension                  0
148 #define xv_QueryAdaptors                   1
149 #define xv_QueryEncodings                  2
150 #define xv_GrabPort                        3
151 #define xv_UngrabPort                      4
152 #define xv_PutVideo                        5
153 #define xv_PutStill                        6
154 #define xv_GetVideo                        7
155 #define xv_GetStill                        8
156 #define xv_StopVideo                       9
157 #define xv_SelectVideoNotify              10
158 #define xv_SelectPortNotify               11
159 #define xv_QueryBestSize                  12
160 #define xv_SetPortAttribute               13
161 #define xv_GetPortAttribute               14
162 #define xv_QueryPortAttributes            15
163 #define xv_ListImageFormats               16
164 #define xv_QueryImageAttributes           17
165 #define xv_PutImage                       18
166 #define xv_ShmPutImage                    19
167 #define xv_LastRequest                    xv_ShmPutImage
168
169 #define xvNumRequests                     (xv_LastRequest + 1)
170
171 typedef struct {
172   CARD8 reqType;
173   CARD8 xvReqType;
174   CARD16 length B16;
175 } xvQueryExtensionReq;
176 #define sz_xvQueryExtensionReq 4
177
178 typedef struct {
179   CARD8 reqType;
180   CARD8 xvReqType;
181   CARD16 length B16;
182   CARD32 window B32;
183 } xvQueryAdaptorsReq;
184 #define sz_xvQueryAdaptorsReq 8
185
186 typedef struct {
187   CARD8 reqType;
188   CARD8 xvReqType;
189   CARD16 length B16;
190   CARD32 port B32;
191 } xvQueryEncodingsReq;
192 #define sz_xvQueryEncodingsReq 8
193
194 typedef struct {
195   CARD8 reqType;
196   CARD8 xvReqType;
197   CARD16 length B16;
198   XvPortID port B32;
199   Drawable drawable B32;
200   GContext gc B32;
201   INT16 vid_x B16;
202   INT16 vid_y B16;
203   CARD16 vid_w B16;
204   CARD16 vid_h B16;
205   INT16 drw_x B16;
206   INT16 drw_y B16;
207   CARD16 drw_w B16;
208   CARD16 drw_h B16;
209 } xvPutVideoReq;
210 #define sz_xvPutVideoReq 32
211
212 typedef struct {
213   CARD8 reqType;
214   CARD8 xvReqType;
215   CARD16 length B16;
216   XvPortID port B32;
217   Drawable drawable B32;
218   GContext gc B32;
219   INT16 vid_x B16;
220   INT16 vid_y B16;
221   CARD16 vid_w B16;
222   CARD16 vid_h B16;
223   INT16 drw_x B16;
224   INT16 drw_y B16;
225   CARD16 drw_w B16;
226   CARD16 drw_h B16;
227 } xvPutStillReq;
228 #define sz_xvPutStillReq 32
229
230 typedef struct {
231   CARD8 reqType;
232   CARD8 xvReqType;
233   CARD16 length B16;
234   XvPortID port B32;
235   Drawable drawable B32;
236   GContext gc B32;
237   INT16 vid_x B16;
238   INT16 vid_y B16;
239   CARD16 vid_w B16;
240   CARD16 vid_h B16;
241   INT16 drw_x B16;
242   INT16 drw_y B16;
243   CARD16 drw_w B16;
244   CARD16 drw_h B16;
245 } xvGetVideoReq;
246 #define sz_xvGetVideoReq 32
247
248 typedef struct {
249   CARD8 reqType;
250   CARD8 xvReqType;
251   CARD16 length B16;
252   XvPortID port B32;
253   Drawable drawable B32;
254   GContext gc B32;
255   INT16 vid_x B16;
256   INT16 vid_y B16;
257   CARD16 vid_w B16;
258   CARD16 vid_h B16;
259   INT16 drw_x B16;
260   INT16 drw_y B16;
261   CARD16 drw_w B16;
262   CARD16 drw_h B16;
263 } xvGetStillReq;
264 #define sz_xvGetStillReq 32
265
266 typedef struct {
267   CARD8 reqType;
268   CARD8 xvReqType;
269   CARD16 length B16;
270   XvPortID port B32;
271   Time time B32;
272 } xvGrabPortReq;
273 #define sz_xvGrabPortReq 12
274
275 typedef struct {
276   CARD8 reqType;
277   CARD8 xvReqType;
278   CARD16 length B16;
279   XvPortID port B32;
280   Time time B32;
281 } xvUngrabPortReq;
282 #define sz_xvUngrabPortReq 12
283
284 typedef struct {
285   CARD8 reqType;
286   CARD8 xvReqType;
287   CARD16 length B16;
288   Drawable drawable B32;
289   BOOL onoff;
290   CARD8 pad1;
291   CARD16 pad2;
292 } xvSelectVideoNotifyReq;
293 #define sz_xvSelectVideoNotifyReq 12
294
295 typedef struct {
296   CARD8 reqType;
297   CARD8 xvReqType;
298   CARD16 length B16;
299   XvPortID port B32;
300   BOOL onoff;
301   CARD8 pad1;
302   CARD16 pad2;
303 } xvSelectPortNotifyReq;
304 #define sz_xvSelectPortNotifyReq 12
305
306 typedef struct {
307   CARD8 reqType;
308   CARD8 xvReqType;
309   CARD16 length B16;
310   XvPortID port B32;
311   Drawable drawable B32;
312 } xvStopVideoReq;
313 #define sz_xvStopVideoReq 12
314
315 typedef struct {
316   CARD8 reqType;
317   CARD8 xvReqType;
318   CARD16 length B16;
319   XvPortID port B32;
320   Atom attribute B32;
321   INT32 value B32;
322 } xvSetPortAttributeReq;
323 #define sz_xvSetPortAttributeReq 16
324
325 typedef struct {
326   CARD8 reqType;
327   CARD8 xvReqType;
328   CARD16 length B16;
329   XvPortID port B32;
330   Atom attribute B32;
331 } xvGetPortAttributeReq;
332 #define sz_xvGetPortAttributeReq 12
333
334 typedef struct {
335   CARD8 reqType;
336   CARD8 xvReqType;
337   CARD16 length B16;
338   XvPortID port B32;
339   CARD16 vid_w B16;
340   CARD16 vid_h B16;
341   CARD16 drw_w B16;
342   CARD16 drw_h B16;
343   CARD8 motion;
344   CARD8 pad1;
345   CARD16 pad2 B16;
346 } xvQueryBestSizeReq;
347 #define sz_xvQueryBestSizeReq 20
348
349 typedef struct {
350   CARD8 reqType;
351   CARD8 xvReqType;
352   CARD16 length B16;
353   XvPortID port B32;
354 } xvQueryPortAttributesReq;
355 #define sz_xvQueryPortAttributesReq 8
356
357 typedef struct {
358   CARD8 reqType;
359   CARD8 xvReqType;
360   CARD16 length B16;
361   XvPortID port B32;
362   Drawable drawable B32;
363   GContext gc B32;
364   CARD32 id B32;
365   INT16 src_x B16;
366   INT16 src_y B16;
367   CARD16 src_w B16;
368   CARD16 src_h B16;
369   INT16 drw_x B16;
370   INT16 drw_y B16;
371   CARD16 drw_w B16;
372   CARD16 drw_h B16;
373   CARD16 width B16;
374   CARD16 height B16;
375 } xvPutImageReq;
376 #define sz_xvPutImageReq 40
377
378 typedef struct {
379   CARD8 reqType;
380   CARD8 xvReqType;
381   CARD16 length B16;
382   XvPortID port B32;
383   Drawable drawable B32;
384   GContext gc B32;
385   ShmSeg shmseg B32;
386   CARD32 id B32;
387   CARD32 offset B32;
388   INT16 src_x B16;
389   INT16 src_y B16;
390   CARD16 src_w B16;
391   CARD16 src_h B16;
392   INT16 drw_x B16;
393   INT16 drw_y B16;
394   CARD16 drw_w B16;
395   CARD16 drw_h B16;
396   CARD16 width B16;
397   CARD16 height B16;
398   CARD8 send_event;
399   CARD8 pad1;
400   CARD16 pad2 B16;
401 } xvShmPutImageReq;
402 #define sz_xvShmPutImageReq 52
403
404 typedef struct {
405   CARD8 reqType;
406   CARD8 xvReqType;
407   CARD16 length B16;
408   XvPortID port B32;
409 } xvListImageFormatsReq;
410 #define sz_xvListImageFormatsReq 8
411
412 typedef struct {
413   CARD8 reqType;
414   CARD8 xvReqType;
415   CARD16 length B16;
416   CARD32 port B32;
417   CARD32 id B32;
418   CARD16 width B16;
419   CARD16 height B16;
420 } xvQueryImageAttributesReq;
421 #define sz_xvQueryImageAttributesReq 16
422
423
424 /* Replies */
425
426 typedef struct _QueryExtensionReply {
427   BYTE type;   /* X_Reply */
428   CARD8 padb1;
429   CARD16 sequenceNumber B16;
430   CARD32 length B32;
431   CARD16 version B16;
432   CARD16 revision B16;
433   CARD32 padl4 B32;
434   CARD32 padl5 B32;
435   CARD32 padl6 B32;
436   CARD32 padl7 B32;
437   CARD32 padl8 B32;
438 } xvQueryExtensionReply;
439 #define sz_xvQueryExtensionReply 32
440
441 typedef struct _QueryAdaptorsReply {
442   BYTE type;   /* X_Reply */
443   CARD8 padb1;
444   CARD16 sequenceNumber B16;
445   CARD32 length B32;
446   CARD16 num_adaptors B16;
447   CARD16 pads3 B16;
448   CARD32 padl4 B32;
449   CARD32 padl5 B32;
450   CARD32 padl6 B32;
451   CARD32 padl7 B32;
452   CARD32 padl8 B32;
453 } xvQueryAdaptorsReply;
454 #define sz_xvQueryAdaptorsReply 32
455
456 typedef struct _QueryEncodingsReply {
457   BYTE type;   /* X_Reply */
458   CARD8 padb1;
459   CARD16 sequenceNumber B16;
460   CARD32 length B32;
461   CARD16 num_encodings B16;
462   CARD32 padl3 B32;
463   CARD32 padl4 B32;
464   CARD32 padl5 B32;
465   CARD32 padl6 B32;
466   CARD32 padl7 B32;
467   CARD32 padl8 B32;
468 } xvQueryEncodingsReply;
469 #define sz_xvQueryEncodingsReply 32
470
471 typedef struct {
472   BYTE type;  /* X_Reply */
473   BYTE result;
474   CARD16 sequenceNumber B16;
475   CARD32 length B32;  /* 0 */
476   CARD32 padl3 B32;
477   CARD32 padl4 B32;
478   CARD32 padl5 B32;
479   CARD32 padl6 B32;
480   CARD32 padl7 B32;
481   CARD32 padl8 B32;
482 } xvGrabPortReply;
483 #define sz_xvGrabPortReply 32
484
485 typedef struct {
486   BYTE type;  /* X_Reply */
487   BYTE padb1;
488   CARD16 sequenceNumber B16;
489   CARD32 length B32;  /* 0 */
490   INT32 value B32;
491   CARD32 padl4 B32;
492   CARD32 padl5 B32;
493   CARD32 padl6 B32;
494   CARD32 padl7 B32;
495   CARD32 padl8 B32;
496 } xvGetPortAttributeReply;
497 #define sz_xvGetPortAttributeReply 32
498
499 typedef struct {
500   BYTE type;  /* X_Reply */
501   BYTE padb1;
502   CARD16 sequenceNumber B16;
503   CARD32 length B32;  /* 0 */
504   CARD16 actual_width B16;
505   CARD16 actual_height B16;
506   CARD32 padl4 B32;
507   CARD32 padl5 B32;
508   CARD32 padl6 B32;
509   CARD32 padl7 B32;
510   CARD32 padl8 B32;
511 } xvQueryBestSizeReply;
512 #define sz_xvQueryBestSizeReply 32
513
514 typedef struct {
515   BYTE type;  /* X_Reply */
516   BYTE padb1;
517   CARD16 sequenceNumber B16;
518   CARD32 length B32;  /* 0 */
519   CARD32 num_attributes B32; 
520   CARD32 text_size B32;
521   CARD32 padl5 B32;
522   CARD32 padl6 B32;
523   CARD32 padl7 B32;
524   CARD32 padl8 B32;
525 } xvQueryPortAttributesReply;
526 #define sz_xvQueryPortAttributesReply 32
527
528 typedef struct {
529   BYTE type;  /* X_Reply */
530   BYTE padb1;
531   CARD16 sequenceNumber B16;
532   CARD32 length B32;
533   CARD32 num_formats B32; 
534   CARD32 padl4 B32;
535   CARD32 padl5 B32;
536   CARD32 padl6 B32;
537   CARD32 padl7 B32;
538   CARD32 padl8 B32;
539 } xvListImageFormatsReply;
540 #define sz_xvListImageFormatsReply 32
541
542 typedef struct {
543   BYTE type;  /* X_Reply */
544   BYTE padb1;
545   CARD16 sequenceNumber B16;
546   CARD32 length B32; 
547   CARD32 num_planes B32; 
548   CARD32 data_size B32;
549   CARD16 width B16;
550   CARD16 height B16;
551   CARD32 padl6 B32;
552   CARD32 padl7 B32;
553   CARD32 padl8 B32;
554 } xvQueryImageAttributesReply;
555 #define sz_xvQueryImageAttributesReply 32
556
557 /* DEFINE EVENT STRUCTURE */
558
559 typedef struct {
560   union {
561     struct {
562       BYTE type;
563       BYTE detail;
564       CARD16 sequenceNumber B16;
565     } u;
566     struct {
567       BYTE type;
568       BYTE reason;
569       CARD16 sequenceNumber B16;
570       Time time B32;
571       Drawable drawable B32;
572       XvPortID port B32;
573       CARD32 padl5 B32;
574       CARD32 padl6 B32;
575       CARD32 padl7 B32;
576       CARD32 padl8 B32;
577     } videoNotify;
578     struct {
579       BYTE type;
580       BYTE padb1;
581       CARD16 sequenceNumber B16;
582       Time time B32;
583       XvPortID port B32;
584       Atom attribute B32;
585       INT32 value B32;
586       CARD32 padl6 B32;
587       CARD32 padl7 B32;
588       CARD32 padl8 B32;
589     } portNotify;
590   } u;
591 } xvEvent;
592
593 #undef XvPortID
594 #undef XvEncodingID
595 #undef ShmSeg
596 #undef VisualID
597 #undef Drawable
598 #undef GContext
599 #undef Time
600 #undef Atom
601
602 #endif /* XVPROTO_H */
603