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 XVLIB_H 26 #define XVLIB_H 27 /* 28 ** File: 29 ** 30 ** Xvlib.h --- Xv library public header file 31 ** 32 ** Author: 33 ** 34 ** David Carver (Digital Workstation Engineering/Project Athena) 35 ** 36 ** Revisions: 37 ** 38 ** 26.06.91 Carver 39 ** - changed XvFreeAdaptors to XvFreeAdaptorInfo 40 ** - changed XvFreeEncodings to XvFreeEncodingInfo 41 ** 42 ** 11.06.91 Carver 43 ** - changed SetPortControl to SetPortAttribute 44 ** - changed GetPortControl to GetPortAttribute 45 ** - changed QueryBestSize 46 ** 47 ** 05.15.91 Carver 48 ** - version 2.0 upgrade 49 ** 50 ** 01.24.91 Carver 51 ** - version 1.4 upgrade 52 ** 53 */ 54 55 #include <X11/Xfuncproto.h> 56 #include <X11/extensions/Xv.h> 57 #include <X11/extensions/XShm.h> 58 59 typedef struct { 60 int numerator; 61 int denominator; 62 } XvRational; 63 64 typedef struct { 65 int flags; /* XvGettable, XvSettable */ 66 int min_value; 67 int max_value; 68 char *name; 69 } XvAttribute; 70 71 typedef struct { 72 XvEncodingID encoding_id; 73 char *name; 74 unsigned long width; 75 unsigned long height; 76 XvRational rate; 77 unsigned long num_encodings; 78 } XvEncodingInfo; 79 80 typedef struct { 81 char depth; 82 unsigned long visual_id; 83 } XvFormat; 84 85 typedef struct { 86 XvPortID base_id; 87 unsigned long num_ports; 88 char type; 89 char *name; 90 unsigned long num_formats; 91 XvFormat *formats; 92 unsigned long num_adaptors; 93 } XvAdaptorInfo; 94 95 typedef struct { 96 int type; 97 unsigned long serial; /* # of last request processed by server */ 98 Bool send_event; /* true if this came from a SendEvent request */ 99 Display *display; /* Display the event was read from */ 100 Drawable drawable; /* drawable */ 101 unsigned long reason; /* what generated this event */ 102 XvPortID port_id; /* what port */ 103 Time time; /* milliseconds */ 104 } XvVideoNotifyEvent; 105 106 typedef struct { 107 int type; 108 unsigned long serial; /* # of last request processed by server */ 109 Bool send_event; /* true if this came from a SendEvent request */ 110 Display *display; /* Display the event was read from */ 111 XvPortID port_id; /* what port */ 112 Time time; /* milliseconds */ 113 Atom attribute; /* atom that identifies attribute */ 114 long value; /* value of attribute */ 115 } XvPortNotifyEvent; 116 117 typedef union { 118 int type; 119 XvVideoNotifyEvent xvvideo; 120 XvPortNotifyEvent xvport; 121 long pad[24]; 122 } XvEvent; 123 124 typedef struct { 125 int id; /* Unique descriptor for the format */ 126 int type; /* XvRGB, XvYUV */ 127 int byte_order; /* LSBFirst, MSBFirst */ 128 char guid[16]; /* Globally Unique IDentifier */ 129 int bits_per_pixel; 130 int format; /* XvPacked, XvPlanar */ 131 int num_planes; 132 133 /* for RGB formats only */ 134 int depth; 135 unsigned int red_mask; 136 unsigned int green_mask; 137 unsigned int blue_mask; 138 139 /* for YUV formats only */ 140 unsigned int y_sample_bits; 141 unsigned int u_sample_bits; 142 unsigned int v_sample_bits; 143 unsigned int horz_y_period; 144 unsigned int horz_u_period; 145 unsigned int horz_v_period; 146 unsigned int vert_y_period; 147 unsigned int vert_u_period; 148 unsigned int vert_v_period; 149 char component_order[32]; /* eg. UYVY */ 150 int scanline_order; /* XvTopToBottom, XvBottomToTop */ 151 } XvImageFormatValues; 152 153 typedef struct { 154 int id; 155 int width, height; 156 int data_size; /* bytes */ 157 int num_planes; 158 int *pitches; /* bytes */ 159 int *offsets; /* bytes */ 160 char *data; 161 XPointer obdata; 162 } XvImage; 163 164 _XFUNCPROTOBEGIN 165 166 extern int XvQueryExtension( 167 Display * /* display */, 168 unsigned int * /* p_version */, 169 unsigned int * /* p_revision */, 170 unsigned int * /* p_requestBase */, 171 unsigned int * /* p_eventBase */, 172 unsigned int * /* p_errorBase */ 173 ); 174 175 extern int XvQueryAdaptors( 176 Display * /* display */, 177 Window /* window */, 178 unsigned int * /* p_nAdaptors */, 179 XvAdaptorInfo ** /* p_pAdaptors */ 180 ); 181 182 extern int XvQueryEncodings( 183 Display * /* display */, 184 XvPortID /* port */, 185 unsigned int * /* p_nEncoding */, 186 XvEncodingInfo ** /* p_pEncoding */ 187 ); 188 189 extern int XvPutVideo( 190 Display * /* display */, 191 XvPortID /* port */, 192 Drawable /* d */, 193 GC /* gc */, 194 int /* vx */, 195 int /* vy */, 196 unsigned int /* vw */, 197 unsigned int /* vh */, 198 int /* dx */, 199 int /* dy */, 200 unsigned int /* dw */, 201 unsigned int /* dh */ 202 ); 203 204 extern int XvPutStill( 205 Display * /* display */, 206 XvPortID /* port */, 207 Drawable /* d */, 208 GC /* gc */, 209 int /* vx */, 210 int /* vy */, 211 unsigned int /* vw */, 212 unsigned int /* vh */, 213 int /* dx */, 214 int /* dy */, 215 unsigned int /* dw */, 216 unsigned int /* dh */ 217 ); 218 219 extern int XvGetVideo( 220 Display * /* display */, 221 XvPortID /* port */, 222 Drawable /* d */, 223 GC /* gc */, 224 int /* vx */, 225 int /* vy */, 226 unsigned int /* vw */, 227 unsigned int /* vh */, 228 int /* dx */, 229 int /* dy */, 230 unsigned int /* dw */, 231 unsigned int /* dh */ 232 ); 233 234 extern int XvGetStill( 235 Display * /* display */, 236 XvPortID /* port */, 237 Drawable /* d */, 238 GC /* gc */, 239 int /* vx */, 240 int /* vy */, 241 unsigned int /* vw */, 242 unsigned int /* vh */, 243 int /* dx */, 244 int /* dy */, 245 unsigned int /* dw */, 246 unsigned int /* dh */ 247 ); 248 249 extern int XvStopVideo( 250 Display * /* display */, 251 XvPortID /* port */, 252 Drawable /* drawable */ 253 ); 254 255 extern int XvGrabPort( 256 Display * /* display */, 257 XvPortID /* port */, 258 Time /* time */ 259 ); 260 261 extern int XvUngrabPort( 262 Display * /* display */, 263 XvPortID /* port */, 264 Time /* time */ 265 ); 266 267 extern int XvSelectVideoNotify( 268 Display * /* display */, 269 Drawable /* drawable */, 270 Bool /* onoff */ 271 ); 272 273 extern int XvSelectPortNotify( 274 Display * /* display */, 275 XvPortID /* port */, 276 Bool /* onoff */ 277 ); 278 279 extern int XvSetPortAttribute( 280 Display * /* display */, 281 XvPortID /* port */, 282 Atom /* attribute */, 283 int /* value */ 284 ); 285 286 extern int XvGetPortAttribute( 287 Display * /* display */, 288 XvPortID /* port */, 289 Atom /* attribute */, 290 int * /* p_value */ 291 ); 292 293 extern int XvQueryBestSize( 294 Display * /* display */, 295 XvPortID /* port */, 296 Bool /* motion */, 297 unsigned int /* vid_w */, 298 unsigned int /* vid_h */, 299 unsigned int /* drw_w */, 300 unsigned int /* drw_h */, 301 unsigned int * /* p_actual_width */, 302 unsigned int * /* p_actual_width */ 303 ); 304 305 extern XvAttribute *XvQueryPortAttributes( 306 Display * /* display */, 307 XvPortID /* port */, 308 int * /* number */ 309 ); 310 311 312 extern void XvFreeAdaptorInfo( 313 XvAdaptorInfo * /* adaptors */ 314 ); 315 316 extern void XvFreeEncodingInfo( 317 XvEncodingInfo * /* encodings */ 318 ); 319 320 321 extern XvImageFormatValues *XvListImageFormats ( 322 Display *display, 323 XvPortID port_id, 324 int *count_return 325 ); 326 327 extern XvImage *XvCreateImage ( 328 Display *display, 329 XvPortID port, 330 int id, 331 char *data, 332 int width, 333 int height 334 ); 335 336 extern int XvPutImage ( 337 Display *display, 338 XvPortID id, 339 Drawable d, 340 GC gc, 341 XvImage *image, 342 int src_x, 343 int src_y, 344 unsigned int src_w, 345 unsigned int src_h, 346 int dest_x, 347 int dest_y, 348 unsigned int dest_w, 349 unsigned int dest_h 350 ); 351 352 extern int XvShmPutImage ( 353 Display *display, 354 XvPortID id, 355 Drawable d, 356 GC gc, 357 XvImage *image, 358 int src_x, 359 int src_y, 360 unsigned int src_w, 361 unsigned int src_h, 362 int dest_x, 363 int dest_y, 364 unsigned int dest_w, 365 unsigned int dest_h, 366 Bool send_event 367 ); 368 369 extern XvImage *XvShmCreateImage ( 370 Display *display, 371 XvPortID port, 372 int id, 373 char *data, 374 int width, 375 int height, 376 XShmSegmentInfo *shminfo 377 ); 378 379 380 _XFUNCPROTOEND 381 382 #endif /* XVLIB_H */ 383