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;
69   INT32 denominator;
70 } xvRational;
71 #define sz_xvRational 8
72 
73 typedef struct {
74   XvPortID base_id;
75   CARD16 name_size;
76   CARD16 num_ports;
77   CARD16 num_formats;
78   CARD8 type;
79   CARD8 pad;
80 } xvAdaptorInfo;
81 #define sz_xvAdaptorInfo 12
82 
83 typedef struct {
84   XvEncodingID encoding;
85   CARD16 name_size;
86   CARD16 width, height;
87   CARD16 pad;
88   xvRational rate;
89 } xvEncodingInfo;
90 #define sz_xvEncodingInfo (12 + sz_xvRational)
91 
92 typedef struct {
93   VisualID visual;
94   CARD8 depth;
95   CARD8 pad1;
96   CARD16 pad2;
97 } xvFormat;
98 #define sz_xvFormat 8
99 
100 typedef struct {
101   CARD32 flags;
102   INT32 min;
103   INT32 max;
104   CARD32 size;
105 } xvAttributeInfo;
106 #define sz_xvAttributeInfo 16
107 
108 typedef struct {
109   CARD32 id;
110   CARD8 type;
111   CARD8 byte_order;
112   CARD16 pad1;
113   CARD8 guid[16];
114   CARD8 bpp;
115   CARD8 num_planes;
116   CARD16 pad2;
117   CARD8 depth;
118   CARD8 pad3;
119   CARD16 pad4;
120   CARD32 red_mask;
121   CARD32 green_mask;
122   CARD32 blue_mask;
123   CARD8 format;
124   CARD8 pad5;
125   CARD16 pad6;
126   CARD32 y_sample_bits;
127   CARD32 u_sample_bits;
128   CARD32 v_sample_bits;
129   CARD32 horz_y_period;
130   CARD32 horz_u_period;
131   CARD32 horz_v_period;
132   CARD32 vert_y_period;
133   CARD32 vert_u_period;
134   CARD32 vert_v_period;
135   CARD8 comp_order[32];
136   CARD8 scanline_order;
137   CARD8 pad7;
138   CARD16 pad8;
139   CARD32 pad9;
140   CARD32 pad10;
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;
175 } xvQueryExtensionReq;
176 #define sz_xvQueryExtensionReq 4
177 
178 typedef struct {
179   CARD8 reqType;
180   CARD8 xvReqType;
181   CARD16 length;
182   CARD32 window;
183 } xvQueryAdaptorsReq;
184 #define sz_xvQueryAdaptorsReq 8
185 
186 typedef struct {
187   CARD8 reqType;
188   CARD8 xvReqType;
189   CARD16 length;
190   CARD32 port;
191 } xvQueryEncodingsReq;
192 #define sz_xvQueryEncodingsReq 8
193 
194 typedef struct {
195   CARD8 reqType;
196   CARD8 xvReqType;
197   CARD16 length;
198   XvPortID port;
199   Drawable drawable;
200   GContext gc;
201   INT16 vid_x;
202   INT16 vid_y;
203   CARD16 vid_w;
204   CARD16 vid_h;
205   INT16 drw_x;
206   INT16 drw_y;
207   CARD16 drw_w;
208   CARD16 drw_h;
209 } xvPutVideoReq;
210 #define sz_xvPutVideoReq 32
211 
212 typedef struct {
213   CARD8 reqType;
214   CARD8 xvReqType;
215   CARD16 length;
216   XvPortID port;
217   Drawable drawable;
218   GContext gc;
219   INT16 vid_x;
220   INT16 vid_y;
221   CARD16 vid_w;
222   CARD16 vid_h;
223   INT16 drw_x;
224   INT16 drw_y;
225   CARD16 drw_w;
226   CARD16 drw_h;
227 } xvPutStillReq;
228 #define sz_xvPutStillReq 32
229 
230 typedef struct {
231   CARD8 reqType;
232   CARD8 xvReqType;
233   CARD16 length;
234   XvPortID port;
235   Drawable drawable;
236   GContext gc;
237   INT16 vid_x;
238   INT16 vid_y;
239   CARD16 vid_w;
240   CARD16 vid_h;
241   INT16 drw_x;
242   INT16 drw_y;
243   CARD16 drw_w;
244   CARD16 drw_h;
245 } xvGetVideoReq;
246 #define sz_xvGetVideoReq 32
247 
248 typedef struct {
249   CARD8 reqType;
250   CARD8 xvReqType;
251   CARD16 length;
252   XvPortID port;
253   Drawable drawable;
254   GContext gc;
255   INT16 vid_x;
256   INT16 vid_y;
257   CARD16 vid_w;
258   CARD16 vid_h;
259   INT16 drw_x;
260   INT16 drw_y;
261   CARD16 drw_w;
262   CARD16 drw_h;
263 } xvGetStillReq;
264 #define sz_xvGetStillReq 32
265 
266 typedef struct {
267   CARD8 reqType;
268   CARD8 xvReqType;
269   CARD16 length;
270   XvPortID port;
271   Time time;
272 } xvGrabPortReq;
273 #define sz_xvGrabPortReq 12
274 
275 typedef struct {
276   CARD8 reqType;
277   CARD8 xvReqType;
278   CARD16 length;
279   XvPortID port;
280   Time time;
281 } xvUngrabPortReq;
282 #define sz_xvUngrabPortReq 12
283 
284 typedef struct {
285   CARD8 reqType;
286   CARD8 xvReqType;
287   CARD16 length;
288   Drawable drawable;
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;
299   XvPortID port;
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;
310   XvPortID port;
311   Drawable drawable;
312 } xvStopVideoReq;
313 #define sz_xvStopVideoReq 12
314 
315 typedef struct {
316   CARD8 reqType;
317   CARD8 xvReqType;
318   CARD16 length;
319   XvPortID port;
320   Atom attribute;
321   INT32 value;
322 } xvSetPortAttributeReq;
323 #define sz_xvSetPortAttributeReq 16
324 
325 typedef struct {
326   CARD8 reqType;
327   CARD8 xvReqType;
328   CARD16 length;
329   XvPortID port;
330   Atom attribute;
331 } xvGetPortAttributeReq;
332 #define sz_xvGetPortAttributeReq 12
333 
334 typedef struct {
335   CARD8 reqType;
336   CARD8 xvReqType;
337   CARD16 length;
338   XvPortID port;
339   CARD16 vid_w;
340   CARD16 vid_h;
341   CARD16 drw_w;
342   CARD16 drw_h;
343   CARD8 motion;
344   CARD8 pad1;
345   CARD16 pad2;
346 } xvQueryBestSizeReq;
347 #define sz_xvQueryBestSizeReq 20
348 
349 typedef struct {
350   CARD8 reqType;
351   CARD8 xvReqType;
352   CARD16 length;
353   XvPortID port;
354 } xvQueryPortAttributesReq;
355 #define sz_xvQueryPortAttributesReq 8
356 
357 typedef struct {
358   CARD8 reqType;
359   CARD8 xvReqType;
360   CARD16 length;
361   XvPortID port;
362   Drawable drawable;
363   GContext gc;
364   CARD32 id;
365   INT16 src_x;
366   INT16 src_y;
367   CARD16 src_w;
368   CARD16 src_h;
369   INT16 drw_x;
370   INT16 drw_y;
371   CARD16 drw_w;
372   CARD16 drw_h;
373   CARD16 width;
374   CARD16 height;
375 } xvPutImageReq;
376 #define sz_xvPutImageReq 40
377 
378 typedef struct {
379   CARD8 reqType;
380   CARD8 xvReqType;
381   CARD16 length;
382   XvPortID port;
383   Drawable drawable;
384   GContext gc;
385   ShmSeg shmseg;
386   CARD32 id;
387   CARD32 offset;
388   INT16 src_x;
389   INT16 src_y;
390   CARD16 src_w;
391   CARD16 src_h;
392   INT16 drw_x;
393   INT16 drw_y;
394   CARD16 drw_w;
395   CARD16 drw_h;
396   CARD16 width;
397   CARD16 height;
398   CARD8 send_event;
399   CARD8 pad1;
400   CARD16 pad2;
401 } xvShmPutImageReq;
402 #define sz_xvShmPutImageReq 52
403 
404 typedef struct {
405   CARD8 reqType;
406   CARD8 xvReqType;
407   CARD16 length;
408   XvPortID port;
409 } xvListImageFormatsReq;
410 #define sz_xvListImageFormatsReq 8
411 
412 typedef struct {
413   CARD8 reqType;
414   CARD8 xvReqType;
415   CARD16 length;
416   CARD32 port;
417   CARD32 id;
418   CARD16 width;
419   CARD16 height;
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;
430   CARD32 length;
431   CARD16 version;
432   CARD16 revision;
433   CARD32 padl4;
434   CARD32 padl5;
435   CARD32 padl6;
436   CARD32 padl7;
437   CARD32 padl8;
438 } xvQueryExtensionReply;
439 #define sz_xvQueryExtensionReply 32
440 
441 typedef struct _QueryAdaptorsReply {
442   BYTE type;   /* X_Reply */
443   CARD8 padb1;
444   CARD16 sequenceNumber;
445   CARD32 length;
446   CARD16 num_adaptors;
447   CARD16 pads3;
448   CARD32 padl4;
449   CARD32 padl5;
450   CARD32 padl6;
451   CARD32 padl7;
452   CARD32 padl8;
453 } xvQueryAdaptorsReply;
454 #define sz_xvQueryAdaptorsReply 32
455 
456 typedef struct _QueryEncodingsReply {
457   BYTE type;   /* X_Reply */
458   CARD8 padb1;
459   CARD16 sequenceNumber;
460   CARD32 length;
461   CARD16 num_encodings;
462   CARD16 padl3;
463   CARD32 padl4;
464   CARD32 padl5;
465   CARD32 padl6;
466   CARD32 padl7;
467   CARD32 padl8;
468 } xvQueryEncodingsReply;
469 #define sz_xvQueryEncodingsReply 32
470 
471 typedef struct {
472   BYTE type;  /* X_Reply */
473   BYTE result;
474   CARD16 sequenceNumber;
475   CARD32 length;  /* 0 */
476   CARD32 padl3;
477   CARD32 padl4;
478   CARD32 padl5;
479   CARD32 padl6;
480   CARD32 padl7;
481   CARD32 padl8;
482 } xvGrabPortReply;
483 #define sz_xvGrabPortReply 32
484 
485 typedef struct {
486   BYTE type;  /* X_Reply */
487   BYTE padb1;
488   CARD16 sequenceNumber;
489   CARD32 length;  /* 0 */
490   INT32 value;
491   CARD32 padl4;
492   CARD32 padl5;
493   CARD32 padl6;
494   CARD32 padl7;
495   CARD32 padl8;
496 } xvGetPortAttributeReply;
497 #define sz_xvGetPortAttributeReply 32
498 
499 typedef struct {
500   BYTE type;  /* X_Reply */
501   BYTE padb1;
502   CARD16 sequenceNumber;
503   CARD32 length;  /* 0 */
504   CARD16 actual_width;
505   CARD16 actual_height;
506   CARD32 padl4;
507   CARD32 padl5;
508   CARD32 padl6;
509   CARD32 padl7;
510   CARD32 padl8;
511 } xvQueryBestSizeReply;
512 #define sz_xvQueryBestSizeReply 32
513 
514 typedef struct {
515   BYTE type;  /* X_Reply */
516   BYTE padb1;
517   CARD16 sequenceNumber;
518   CARD32 length;  /* 0 */
519   CARD32 num_attributes;
520   CARD32 text_size;
521   CARD32 padl5;
522   CARD32 padl6;
523   CARD32 padl7;
524   CARD32 padl8;
525 } xvQueryPortAttributesReply;
526 #define sz_xvQueryPortAttributesReply 32
527 
528 typedef struct {
529   BYTE type;  /* X_Reply */
530   BYTE padb1;
531   CARD16 sequenceNumber;
532   CARD32 length;
533   CARD32 num_formats;
534   CARD32 padl4;
535   CARD32 padl5;
536   CARD32 padl6;
537   CARD32 padl7;
538   CARD32 padl8;
539 } xvListImageFormatsReply;
540 #define sz_xvListImageFormatsReply 32
541 
542 typedef struct {
543   BYTE type;  /* X_Reply */
544   BYTE padb1;
545   CARD16 sequenceNumber;
546   CARD32 length;
547   CARD32 num_planes;
548   CARD32 data_size;
549   CARD16 width;
550   CARD16 height;
551   CARD32 padl6;
552   CARD32 padl7;
553   CARD32 padl8;
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;
565     } u;
566     struct {
567       BYTE type;
568       BYTE reason;
569       CARD16 sequenceNumber;
570       Time time;
571       Drawable drawable;
572       XvPortID port;
573       CARD32 padl5;
574       CARD32 padl6;
575       CARD32 padl7;
576       CARD32 padl8;
577     } videoNotify;
578     struct {
579       BYTE type;
580       BYTE padb1;
581       CARD16 sequenceNumber;
582       Time time;
583       XvPortID port;
584       Atom attribute;
585       INT32 value;
586       CARD32 padl6;
587       CARD32 padl7;
588       CARD32 padl8;
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 
604