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