Xvproto.h revision 17ca54c3
1/***********************************************************
2Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
3and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
4
5                        All Rights Reserved
6
7Permission to use, copy, modify, and distribute this software and its
8documentation for any purpose and without fee is hereby granted,
9provided that the above copyright notice appear in all copies and that
10both that copyright notice and this permission notice appear in
11supporting documentation, and that the names of Digital or MIT not be
12used in advertising or publicity pertaining to distribution of the
13software without specific, written prior permission.
14
15DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
16ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
17DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
18ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
19WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
20ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
21SOFTWARE.
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
67typedef struct {
68  INT32 numerator B32;
69  INT32 denominator B32;
70} xvRational;
71#define sz_xvRational 8
72
73typedef 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
83typedef struct {
84  XvEncodingID encoding B32;
85  CARD16 name_size B16;
86  CARD16 width B16, height B16;
87  CARD16 pad B16;
88  xvRational rate;
89} xvEncodingInfo;
90#define sz_xvEncodingInfo (12 + sz_xvRational)
91
92typedef struct {
93  VisualID visual B32;
94  CARD8 depth;
95  CARD8 pad1;
96  CARD16 pad2 B16;
97} xvFormat;
98#define sz_xvFormat 8
99
100typedef 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
108typedef 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
171typedef struct {
172  CARD8 reqType;
173  CARD8 xvReqType;
174  CARD16 length B16;
175} xvQueryExtensionReq;
176#define sz_xvQueryExtensionReq 4
177
178typedef struct {
179  CARD8 reqType;
180  CARD8 xvReqType;
181  CARD16 length B16;
182  CARD32 window B32;
183} xvQueryAdaptorsReq;
184#define sz_xvQueryAdaptorsReq 8
185
186typedef struct {
187  CARD8 reqType;
188  CARD8 xvReqType;
189  CARD16 length B16;
190  CARD32 port B32;
191} xvQueryEncodingsReq;
192#define sz_xvQueryEncodingsReq 8
193
194typedef 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
212typedef 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
230typedef 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
248typedef 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
266typedef 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
275typedef 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
284typedef 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
295typedef 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
306typedef 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
315typedef 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
325typedef 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
334typedef 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
349typedef struct {
350  CARD8 reqType;
351  CARD8 xvReqType;
352  CARD16 length B16;
353  XvPortID port B32;
354} xvQueryPortAttributesReq;
355#define sz_xvQueryPortAttributesReq 8
356
357typedef 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
378typedef 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
404typedef struct {
405  CARD8 reqType;
406  CARD8 xvReqType;
407  CARD16 length B16;
408  XvPortID port B32;
409} xvListImageFormatsReq;
410#define sz_xvListImageFormatsReq 8
411
412typedef 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
426typedef 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
441typedef 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
456typedef struct _QueryEncodingsReply {
457  BYTE type;   /* X_Reply */
458  CARD8 padb1;
459  CARD16 sequenceNumber B16;
460  CARD32 length B32;
461  CARD16 num_encodings B16;
462  CARD16 padl3 B16;
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
471typedef 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
485typedef 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
499typedef 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
514typedef 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
528typedef 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
542typedef 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
559typedef 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
604