e14743d1 |
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 | /* $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 | |
68 | typedef struct { |
69 | INT32 numerator B32; |
70 | INT32 denominator B32; |
71 | } xvRational; |
72 | #define sz_xvRational 8 |
73 | |
74 | typedef 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 | |
84 | typedef 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 | |
93 | typedef struct { |
94 | VisualID visual B32; |
95 | CARD8 depth; |
96 | CARD8 pad1; |
97 | CARD16 pad2 B16; |
98 | } xvFormat; |
99 | #define sz_xvFormat 8 |
100 | |
101 | typedef 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 | |
109 | typedef 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 | |
172 | typedef struct { |
173 | CARD8 reqType; |
174 | CARD8 xvReqType; |
175 | CARD16 length B16; |
176 | } xvQueryExtensionReq; |
177 | #define sz_xvQueryExtensionReq 4 |
178 | |
179 | typedef struct { |
180 | CARD8 reqType; |
181 | CARD8 xvReqType; |
182 | CARD16 length B16; |
183 | CARD32 window B32; |
184 | } xvQueryAdaptorsReq; |
185 | #define sz_xvQueryAdaptorsReq 8 |
186 | |
187 | typedef struct { |
188 | CARD8 reqType; |
189 | CARD8 xvReqType; |
190 | CARD16 length B16; |
191 | CARD32 port B32; |
192 | } xvQueryEncodingsReq; |
193 | #define sz_xvQueryEncodingsReq 8 |
194 | |
195 | typedef 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 | |
213 | typedef 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 | |
231 | typedef 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 | |
249 | typedef 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 | |
267 | typedef 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 | |
276 | typedef 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 | |
285 | typedef 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 | |
296 | typedef 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 | |
307 | typedef 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 | |
316 | typedef 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 | |
326 | typedef 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 | |
335 | typedef 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 | |
350 | typedef struct { |
351 | CARD8 reqType; |
352 | CARD8 xvReqType; |
353 | CARD16 length B16; |
354 | XvPortID port B32; |
355 | } xvQueryPortAttributesReq; |
356 | #define sz_xvQueryPortAttributesReq 8 |
357 | |
358 | typedef 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 | |
379 | typedef 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 | |
405 | typedef struct { |
406 | CARD8 reqType; |
407 | CARD8 xvReqType; |
408 | CARD16 length B16; |
409 | XvPortID port B32; |
410 | } xvListImageFormatsReq; |
411 | #define sz_xvListImageFormatsReq 8 |
412 | |
413 | typedef 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 | |
427 | typedef 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 | |
442 | typedef 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 | |
457 | typedef 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 | |
472 | typedef 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 | |
486 | typedef 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 | |
500 | typedef 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 | |
515 | typedef 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 | |
529 | typedef 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 | |
543 | typedef 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 | |
560 | typedef 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 | |