Xvlib.h revision cdbfa18a
19f606849Smrg/*********************************************************** 29f606849SmrgCopyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts, 39f606849Smrgand the Massachusetts Institute of Technology, Cambridge, Massachusetts. 49f606849Smrg 59f606849Smrg All Rights Reserved 69f606849Smrg 7cdbfa18aSmrgPermission to use, copy, modify, and distribute this software and its 8cdbfa18aSmrgdocumentation for any purpose and without fee is hereby granted, 99f606849Smrgprovided that the above copyright notice appear in all copies and that 10cdbfa18aSmrgboth that copyright notice and this permission notice appear in 119f606849Smrgsupporting documentation, and that the names of Digital or MIT not be 129f606849Smrgused in advertising or publicity pertaining to distribution of the 13cdbfa18aSmrgsoftware without specific, written prior permission. 149f606849Smrg 159f606849SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 169f606849SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 179f606849SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 189f606849SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 199f606849SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 209f606849SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 219f606849SmrgSOFTWARE. 229f606849Smrg 239f606849Smrg******************************************************************/ 249f606849Smrg 259f606849Smrg#ifndef XVLIB_H 269f606849Smrg#define XVLIB_H 279f606849Smrg/* 28cdbfa18aSmrg** File: 299f606849Smrg** 309f606849Smrg** Xvlib.h --- Xv library public header file 319f606849Smrg** 32cdbfa18aSmrg** Author: 339f606849Smrg** 349f606849Smrg** David Carver (Digital Workstation Engineering/Project Athena) 359f606849Smrg** 369f606849Smrg** Revisions: 379f606849Smrg** 389f606849Smrg** 26.06.91 Carver 399f606849Smrg** - changed XvFreeAdaptors to XvFreeAdaptorInfo 409f606849Smrg** - changed XvFreeEncodings to XvFreeEncodingInfo 419f606849Smrg** 429f606849Smrg** 11.06.91 Carver 439f606849Smrg** - changed SetPortControl to SetPortAttribute 449f606849Smrg** - changed GetPortControl to GetPortAttribute 459f606849Smrg** - changed QueryBestSize 469f606849Smrg** 479f606849Smrg** 05.15.91 Carver 489f606849Smrg** - version 2.0 upgrade 499f606849Smrg** 509f606849Smrg** 01.24.91 Carver 519f606849Smrg** - version 1.4 upgrade 529f606849Smrg** 539f606849Smrg*/ 549f606849Smrg 559f606849Smrg#include <X11/Xfuncproto.h> 569f606849Smrg#include <X11/extensions/Xv.h> 57fba89afeSmrg#include <X11/extensions/XShm.h> 589f606849Smrg 599f606849Smrgtypedef struct { 609f606849Smrg int numerator; 619f606849Smrg int denominator; 629f606849Smrg} XvRational; 639f606849Smrg 649f606849Smrgtypedef struct { 659f606849Smrg int flags; /* XvGettable, XvSettable */ 669f606849Smrg int min_value; 679f606849Smrg int max_value; 689f606849Smrg char *name; 699f606849Smrg} XvAttribute; 709f606849Smrg 719f606849Smrgtypedef struct { 729f606849Smrg XvEncodingID encoding_id; 739f606849Smrg char *name; 749f606849Smrg unsigned long width; 759f606849Smrg unsigned long height; 769f606849Smrg XvRational rate; 779f606849Smrg unsigned long num_encodings; 789f606849Smrg} XvEncodingInfo; 799f606849Smrg 809f606849Smrgtypedef struct { 819f606849Smrg char depth; 829f606849Smrg unsigned long visual_id; 839f606849Smrg} XvFormat; 849f606849Smrg 859f606849Smrgtypedef struct { 869f606849Smrg XvPortID base_id; 879f606849Smrg unsigned long num_ports; 889f606849Smrg char type; 899f606849Smrg char *name; 909f606849Smrg unsigned long num_formats; 919f606849Smrg XvFormat *formats; 929f606849Smrg unsigned long num_adaptors; 939f606849Smrg} XvAdaptorInfo; 949f606849Smrg 959f606849Smrgtypedef struct { 969f606849Smrg int type; 979f606849Smrg unsigned long serial; /* # of last request processed by server */ 989f606849Smrg Bool send_event; /* true if this came from a SendEvent request */ 999f606849Smrg Display *display; /* Display the event was read from */ 1009f606849Smrg Drawable drawable; /* drawable */ 1019f606849Smrg unsigned long reason; /* what generated this event */ 1029f606849Smrg XvPortID port_id; /* what port */ 1039f606849Smrg Time time; /* milliseconds */ 1049f606849Smrg} XvVideoNotifyEvent; 1059f606849Smrg 1069f606849Smrgtypedef struct { 1079f606849Smrg int type; 1089f606849Smrg unsigned long serial; /* # of last request processed by server */ 1099f606849Smrg Bool send_event; /* true if this came from a SendEvent request */ 1109f606849Smrg Display *display; /* Display the event was read from */ 1119f606849Smrg XvPortID port_id; /* what port */ 1129f606849Smrg Time time; /* milliseconds */ 1139f606849Smrg Atom attribute; /* atom that identifies attribute */ 1149f606849Smrg long value; /* value of attribute */ 1159f606849Smrg} XvPortNotifyEvent; 1169f606849Smrg 1179f606849Smrgtypedef union { 1189f606849Smrg int type; 1199f606849Smrg XvVideoNotifyEvent xvvideo; 1209f606849Smrg XvPortNotifyEvent xvport; 1219f606849Smrg long pad[24]; 1229f606849Smrg} XvEvent; 1239f606849Smrg 1249f606849Smrgtypedef struct { 1259f606849Smrg int id; /* Unique descriptor for the format */ 1269f606849Smrg int type; /* XvRGB, XvYUV */ 1279f606849Smrg int byte_order; /* LSBFirst, MSBFirst */ 1289f606849Smrg char guid[16]; /* Globally Unique IDentifier */ 1299f606849Smrg int bits_per_pixel; 1309f606849Smrg int format; /* XvPacked, XvPlanar */ 1319f606849Smrg int num_planes; 1329f606849Smrg 1339f606849Smrg /* for RGB formats only */ 1349f606849Smrg int depth; 135cdbfa18aSmrg unsigned int red_mask; 136cdbfa18aSmrg unsigned int green_mask; 137cdbfa18aSmrg unsigned int blue_mask; 1389f606849Smrg 1399f606849Smrg /* for YUV formats only */ 1409f606849Smrg unsigned int y_sample_bits; 1419f606849Smrg unsigned int u_sample_bits; 142cdbfa18aSmrg unsigned int v_sample_bits; 1439f606849Smrg unsigned int horz_y_period; 1449f606849Smrg unsigned int horz_u_period; 1459f606849Smrg unsigned int horz_v_period; 1469f606849Smrg unsigned int vert_y_period; 1479f606849Smrg unsigned int vert_u_period; 1489f606849Smrg unsigned int vert_v_period; 1499f606849Smrg char component_order[32]; /* eg. UYVY */ 1509f606849Smrg int scanline_order; /* XvTopToBottom, XvBottomToTop */ 151cdbfa18aSmrg} XvImageFormatValues; 1529f606849Smrg 1539f606849Smrgtypedef struct { 1549f606849Smrg int id; 1559f606849Smrg int width, height; 1569f606849Smrg int data_size; /* bytes */ 1579f606849Smrg int num_planes; 1589f606849Smrg int *pitches; /* bytes */ 1599f606849Smrg int *offsets; /* bytes */ 1609f606849Smrg char *data; 161cdbfa18aSmrg XPointer obdata; 1629f606849Smrg} XvImage; 1639f606849Smrg 1649f606849Smrg_XFUNCPROTOBEGIN 1659f606849Smrg 1669f606849Smrgextern int XvQueryExtension( 1679f606849Smrg Display* /* display */, 1689f606849Smrg unsigned int* /* p_version */, 1699f606849Smrg unsigned int* /* p_revision */, 1709f606849Smrg unsigned int* /* p_requestBase */, 171cdbfa18aSmrg unsigned int* /* p_eventBase */, 1729f606849Smrg unsigned int* /* p_errorBase */ 1739f606849Smrg); 1749f606849Smrg 1759f606849Smrgextern int XvQueryAdaptors( 1769f606849Smrg Display* /* display */, 1779f606849Smrg Window /* window */, 1789f606849Smrg unsigned int* /* p_nAdaptors */, 1799f606849Smrg XvAdaptorInfo** /* p_pAdaptors */ 1809f606849Smrg); 1819f606849Smrg 1829f606849Smrgextern int XvQueryEncodings( 1839f606849Smrg Display* /* display */, 1849f606849Smrg XvPortID /* port */, 1859f606849Smrg unsigned int* /* p_nEncoding */, 1869f606849Smrg XvEncodingInfo** /* p_pEncoding */ 1879f606849Smrg); 1889f606849Smrg 1899f606849Smrgextern int XvPutVideo( 1909f606849Smrg Display* /* display */, 1919f606849Smrg XvPortID /* port */, 1929f606849Smrg Drawable /* d */, 1939f606849Smrg GC /* gc */, 194cdbfa18aSmrg int /* vx */, 1959f606849Smrg int /* vy */, 196cdbfa18aSmrg unsigned int /* vw */, 1979f606849Smrg unsigned int /* vh */, 198cdbfa18aSmrg int /* dx */, 1999f606849Smrg int /* dy */, 2009f606849Smrg unsigned int /* dw */, 2019f606849Smrg unsigned int /* dh */ 2029f606849Smrg); 2039f606849Smrg 2049f606849Smrgextern int XvPutStill( 2059f606849Smrg Display* /* display */, 2069f606849Smrg XvPortID /* port */, 2079f606849Smrg Drawable /* d */, 2089f606849Smrg GC /* gc */, 209cdbfa18aSmrg int /* vx */, 2109f606849Smrg int /* vy */, 211cdbfa18aSmrg unsigned int /* vw */, 2129f606849Smrg unsigned int /* vh */, 213cdbfa18aSmrg int /* dx */, 2149f606849Smrg int /* dy */, 2159f606849Smrg unsigned int /* dw */, 2169f606849Smrg unsigned int /* dh */ 2179f606849Smrg); 2189f606849Smrg 2199f606849Smrgextern int XvGetVideo( 2209f606849Smrg Display* /* display */, 2219f606849Smrg XvPortID /* port */, 2229f606849Smrg Drawable /* d */, 2239f606849Smrg GC /* gc */, 224cdbfa18aSmrg int /* vx */, 2259f606849Smrg int /* vy */, 226cdbfa18aSmrg unsigned int /* vw */, 2279f606849Smrg unsigned int /* vh */, 228cdbfa18aSmrg int /* dx */, 2299f606849Smrg int /* dy */, 2309f606849Smrg unsigned int /* dw */, 2319f606849Smrg unsigned int /* dh */ 2329f606849Smrg); 2339f606849Smrg 2349f606849Smrgextern int XvGetStill( 2359f606849Smrg Display* /* display */, 2369f606849Smrg XvPortID /* port */, 2379f606849Smrg Drawable /* d */, 2389f606849Smrg GC /* gc */, 239cdbfa18aSmrg int /* vx */, 2409f606849Smrg int /* vy */, 241cdbfa18aSmrg unsigned int /* vw */, 2429f606849Smrg unsigned int /* vh */, 243cdbfa18aSmrg int /* dx */, 2449f606849Smrg int /* dy */, 2459f606849Smrg unsigned int /* dw */, 2469f606849Smrg unsigned int /* dh */ 2479f606849Smrg); 2489f606849Smrg 2499f606849Smrgextern int XvStopVideo( 2509f606849Smrg Display* /* display */, 2519f606849Smrg XvPortID /* port */, 2529f606849Smrg Drawable /* drawable */ 2539f606849Smrg); 2549f606849Smrg 2559f606849Smrgextern int XvGrabPort( 2569f606849Smrg Display* /* display */, 2579f606849Smrg XvPortID /* port */, 2589f606849Smrg Time /* time */ 2599f606849Smrg); 2609f606849Smrg 2619f606849Smrgextern int XvUngrabPort( 2629f606849Smrg Display* /* display */, 2639f606849Smrg XvPortID /* port */, 2649f606849Smrg Time /* time */ 2659f606849Smrg); 2669f606849Smrg 2679f606849Smrgextern int XvSelectVideoNotify( 2689f606849Smrg Display* /* display */, 2699f606849Smrg Drawable /* drawable */, 2709f606849Smrg Bool /* onoff */ 2719f606849Smrg); 2729f606849Smrg 2739f606849Smrgextern int XvSelectPortNotify( 2749f606849Smrg Display* /* display */, 2759f606849Smrg XvPortID /* port */, 2769f606849Smrg Bool /* onoff */ 2779f606849Smrg); 2789f606849Smrg 2799f606849Smrgextern int XvSetPortAttribute( 2809f606849Smrg Display* /* display */, 2819f606849Smrg XvPortID /* port */, 2829f606849Smrg Atom /* attribute */, 2839f606849Smrg int /* value */ 2849f606849Smrg); 2859f606849Smrg 2869f606849Smrgextern int XvGetPortAttribute( 2879f606849Smrg Display* /* display */, 2889f606849Smrg XvPortID /* port */, 2899f606849Smrg Atom /* attribute */, 2909f606849Smrg int* /* p_value */ 2919f606849Smrg); 2929f606849Smrg 2939f606849Smrgextern int XvQueryBestSize( 2949f606849Smrg Display* /* display */, 2959f606849Smrg XvPortID /* port */, 2969f606849Smrg Bool /* motion */, 297cdbfa18aSmrg unsigned int /* vid_w */, 2989f606849Smrg unsigned int /* vid_h */, 299cdbfa18aSmrg unsigned int /* drw_w */, 3009f606849Smrg unsigned int /* drw_h */, 301cdbfa18aSmrg unsigned int* /* p_actual_width */, 3029f606849Smrg unsigned int* /* p_actual_width */ 3039f606849Smrg); 3049f606849Smrg 3059f606849Smrgextern XvAttribute* XvQueryPortAttributes( 3069f606849Smrg Display* /* display */, 3079f606849Smrg XvPortID /* port */, 3089f606849Smrg int* /* number */ 3099f606849Smrg); 3109f606849Smrg 3119f606849Smrg 3129f606849Smrgextern void XvFreeAdaptorInfo( 3139f606849Smrg XvAdaptorInfo* /* adaptors */ 3149f606849Smrg); 3159f606849Smrg 3169f606849Smrgextern void XvFreeEncodingInfo( 3179f606849Smrg XvEncodingInfo* /* encodings */ 3189f606849Smrg); 3199f606849Smrg 3209f606849Smrg 3219f606849Smrgextern XvImageFormatValues * XvListImageFormats ( 3229f606849Smrg Display *display, 3239f606849Smrg XvPortID port_id, 3249f606849Smrg int *count_return 3259f606849Smrg); 3269f606849Smrg 3279f606849Smrgextern XvImage * XvCreateImage ( 3289f606849Smrg Display *display, 3299f606849Smrg XvPortID port, 3309f606849Smrg int id, 3319f606849Smrg char *data, 332cdbfa18aSmrg int width, 333cdbfa18aSmrg int height 3349f606849Smrg); 3359f606849Smrg 3369f606849Smrgextern int XvPutImage ( 3379f606849Smrg Display *display, 3389f606849Smrg XvPortID id, 3399f606849Smrg Drawable d, 3409f606849Smrg GC gc, 3419f606849Smrg XvImage *image, 3429f606849Smrg int src_x, 3439f606849Smrg int src_y, 3449f606849Smrg unsigned int src_w, 3459f606849Smrg unsigned int src_h, 346cdbfa18aSmrg int dest_x, 3479f606849Smrg int dest_y, 3489f606849Smrg unsigned int dest_w, 3499f606849Smrg unsigned int dest_h 3509f606849Smrg); 3519f606849Smrg 3529f606849Smrgextern int XvShmPutImage ( 3539f606849Smrg Display *display, 3549f606849Smrg XvPortID id, 3559f606849Smrg Drawable d, 3569f606849Smrg GC gc, 3579f606849Smrg XvImage *image, 3589f606849Smrg int src_x, 3599f606849Smrg int src_y, 3609f606849Smrg unsigned int src_w, 3619f606849Smrg unsigned int src_h, 362cdbfa18aSmrg int dest_x, 3639f606849Smrg int dest_y, 3649f606849Smrg unsigned int dest_w, 3659f606849Smrg unsigned int dest_h, 3669f606849Smrg Bool send_event 3679f606849Smrg); 3689f606849Smrg 3699f606849Smrgextern XvImage * XvShmCreateImage ( 3709f606849Smrg Display *display, 3719f606849Smrg XvPortID port, 3729f606849Smrg int id, 3739f606849Smrg char* data, 374cdbfa18aSmrg int width, 3759f606849Smrg int height, 3769f606849Smrg XShmSegmentInfo *shminfo 3779f606849Smrg); 3789f606849Smrg 3799f606849Smrg 3809f606849Smrg_XFUNCPROTOEND 3819f606849Smrg 3829f606849Smrg#endif /* XVLIB_H */ 383