Xvlib.h revision fba89afe
19f606849Smrg/***********************************************************
29f606849SmrgCopyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
39f606849Smrgand the Massachusetts Institute of Technology, Cambridge, Massachusetts.
49f606849Smrg
59f606849Smrg                        All Rights Reserved
69f606849Smrg
79f606849SmrgPermission to use, copy, modify, and distribute this software and its
89f606849Smrgdocumentation for any purpose and without fee is hereby granted,
99f606849Smrgprovided that the above copyright notice appear in all copies and that
109f606849Smrgboth 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
139f606849Smrgsoftware 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/* $XFree86: xc/include/extensions/Xvlib.h,v 1.3 1999/12/11 19:28:48 mvojkovi Exp $ */
259f606849Smrg
269f606849Smrg#ifndef XVLIB_H
279f606849Smrg#define XVLIB_H
289f606849Smrg/*
299f606849Smrg** File:
309f606849Smrg**
319f606849Smrg**   Xvlib.h --- Xv library public header file
329f606849Smrg**
339f606849Smrg** Author:
349f606849Smrg**
359f606849Smrg**   David Carver (Digital Workstation Engineering/Project Athena)
369f606849Smrg**
379f606849Smrg** Revisions:
389f606849Smrg**
399f606849Smrg**   26.06.91 Carver
409f606849Smrg**     - changed XvFreeAdaptors to XvFreeAdaptorInfo
419f606849Smrg**     - changed XvFreeEncodings to XvFreeEncodingInfo
429f606849Smrg**
439f606849Smrg**   11.06.91 Carver
449f606849Smrg**     - changed SetPortControl to SetPortAttribute
459f606849Smrg**     - changed GetPortControl to GetPortAttribute
469f606849Smrg**     - changed QueryBestSize
479f606849Smrg**
489f606849Smrg**   05.15.91 Carver
499f606849Smrg**     - version 2.0 upgrade
509f606849Smrg**
519f606849Smrg**   01.24.91 Carver
529f606849Smrg**     - version 1.4 upgrade
539f606849Smrg**
549f606849Smrg*/
559f606849Smrg
569f606849Smrg#include <X11/Xfuncproto.h>
579f606849Smrg#include <X11/extensions/Xv.h>
58fba89afeSmrg#include <X11/extensions/XShm.h>
599f606849Smrg
609f606849Smrgtypedef struct {
619f606849Smrg  int numerator;
629f606849Smrg  int denominator;
639f606849Smrg} XvRational;
649f606849Smrg
659f606849Smrgtypedef struct {
669f606849Smrg  int flags;	/* XvGettable, XvSettable */
679f606849Smrg  int min_value;
689f606849Smrg  int max_value;
699f606849Smrg  char *name;
709f606849Smrg} XvAttribute;
719f606849Smrg
729f606849Smrgtypedef struct {
739f606849Smrg  XvEncodingID encoding_id;
749f606849Smrg  char *name;
759f606849Smrg  unsigned long width;
769f606849Smrg  unsigned long height;
779f606849Smrg  XvRational rate;
789f606849Smrg  unsigned long num_encodings;
799f606849Smrg} XvEncodingInfo;
809f606849Smrg
819f606849Smrgtypedef struct {
829f606849Smrg  char depth;
839f606849Smrg  unsigned long visual_id;
849f606849Smrg} XvFormat;
859f606849Smrg
869f606849Smrgtypedef struct {
879f606849Smrg  XvPortID base_id;
889f606849Smrg  unsigned long num_ports;
899f606849Smrg  char type;
909f606849Smrg  char *name;
919f606849Smrg  unsigned long num_formats;
929f606849Smrg  XvFormat *formats;
939f606849Smrg  unsigned long num_adaptors;
949f606849Smrg} XvAdaptorInfo;
959f606849Smrg
969f606849Smrgtypedef struct {
979f606849Smrg  int type;
989f606849Smrg  unsigned long serial;	   /* # of last request processed by server */
999f606849Smrg  Bool send_event;	   /* true if this came from a SendEvent request */
1009f606849Smrg  Display *display;	   /* Display the event was read from */
1019f606849Smrg  Drawable drawable;       /* drawable */
1029f606849Smrg  unsigned long reason;    /* what generated this event */
1039f606849Smrg  XvPortID port_id;        /* what port */
1049f606849Smrg  Time time;		   /* milliseconds */
1059f606849Smrg} XvVideoNotifyEvent;
1069f606849Smrg
1079f606849Smrgtypedef struct {
1089f606849Smrg  int type;
1099f606849Smrg  unsigned long serial;	   /* # of last request processed by server */
1109f606849Smrg  Bool send_event;	   /* true if this came from a SendEvent request */
1119f606849Smrg  Display *display;	   /* Display the event was read from */
1129f606849Smrg  XvPortID port_id;        /* what port */
1139f606849Smrg  Time time;		   /* milliseconds */
1149f606849Smrg  Atom attribute;           /* atom that identifies attribute */
1159f606849Smrg  long value;              /* value of attribute */
1169f606849Smrg} XvPortNotifyEvent;
1179f606849Smrg
1189f606849Smrgtypedef union {
1199f606849Smrg  int type;
1209f606849Smrg  XvVideoNotifyEvent xvvideo;
1219f606849Smrg  XvPortNotifyEvent xvport;
1229f606849Smrg  long pad[24];
1239f606849Smrg} XvEvent;
1249f606849Smrg
1259f606849Smrgtypedef struct {
1269f606849Smrg  int id;                      /* Unique descriptor for the format */
1279f606849Smrg  int type;                    /* XvRGB, XvYUV */
1289f606849Smrg  int byte_order;              /* LSBFirst, MSBFirst */
1299f606849Smrg  char guid[16];               /* Globally Unique IDentifier */
1309f606849Smrg  int bits_per_pixel;
1319f606849Smrg  int format;                  /* XvPacked, XvPlanar */
1329f606849Smrg  int num_planes;
1339f606849Smrg
1349f606849Smrg  /* for RGB formats only */
1359f606849Smrg  int depth;
1369f606849Smrg  unsigned int red_mask;
1379f606849Smrg  unsigned int green_mask;
1389f606849Smrg  unsigned int blue_mask;
1399f606849Smrg
1409f606849Smrg  /* for YUV formats only */
1419f606849Smrg  unsigned int y_sample_bits;
1429f606849Smrg  unsigned int u_sample_bits;
1439f606849Smrg  unsigned int v_sample_bits;
1449f606849Smrg  unsigned int horz_y_period;
1459f606849Smrg  unsigned int horz_u_period;
1469f606849Smrg  unsigned int horz_v_period;
1479f606849Smrg  unsigned int vert_y_period;
1489f606849Smrg  unsigned int vert_u_period;
1499f606849Smrg  unsigned int vert_v_period;
1509f606849Smrg  char component_order[32];    /* eg. UYVY */
1519f606849Smrg  int scanline_order;          /* XvTopToBottom, XvBottomToTop */
1529f606849Smrg} XvImageFormatValues;
1539f606849Smrg
1549f606849Smrgtypedef struct {
1559f606849Smrg  int id;
1569f606849Smrg  int width, height;
1579f606849Smrg  int data_size;              /* bytes */
1589f606849Smrg  int num_planes;
1599f606849Smrg  int *pitches;               /* bytes */
1609f606849Smrg  int *offsets;               /* bytes */
1619f606849Smrg  char *data;
1629f606849Smrg  XPointer obdata;
1639f606849Smrg} XvImage;
1649f606849Smrg
1659f606849Smrg_XFUNCPROTOBEGIN
1669f606849Smrg
1679f606849Smrgextern int XvQueryExtension(
1689f606849Smrg  Display*                 /* display */,
1699f606849Smrg  unsigned int*            /* p_version */,
1709f606849Smrg  unsigned int*            /* p_revision */,
1719f606849Smrg  unsigned int*            /* p_requestBase */,
1729f606849Smrg  unsigned int*            /* p_eventBase */,
1739f606849Smrg  unsigned int*            /* p_errorBase */
1749f606849Smrg);
1759f606849Smrg
1769f606849Smrgextern int XvQueryAdaptors(
1779f606849Smrg  Display*                 /* display */,
1789f606849Smrg  Window                   /* window */,
1799f606849Smrg  unsigned int*            /* p_nAdaptors */,
1809f606849Smrg  XvAdaptorInfo**          /* p_pAdaptors */
1819f606849Smrg);
1829f606849Smrg
1839f606849Smrgextern int XvQueryEncodings(
1849f606849Smrg  Display*                 /* display */,
1859f606849Smrg  XvPortID                 /* port */,
1869f606849Smrg  unsigned int*            /* p_nEncoding */,
1879f606849Smrg  XvEncodingInfo**         /* p_pEncoding */
1889f606849Smrg);
1899f606849Smrg
1909f606849Smrgextern int XvPutVideo(
1919f606849Smrg  Display*                 /* display */,
1929f606849Smrg  XvPortID                 /* port */,
1939f606849Smrg  Drawable                 /* d */,
1949f606849Smrg  GC                       /* gc */,
1959f606849Smrg  int                      /* vx */,
1969f606849Smrg  int                      /* vy */,
1979f606849Smrg  unsigned int             /* vw */,
1989f606849Smrg  unsigned int             /* vh */,
1999f606849Smrg  int                      /* dx */,
2009f606849Smrg  int                      /* dy */,
2019f606849Smrg  unsigned int             /* dw */,
2029f606849Smrg  unsigned int             /* dh */
2039f606849Smrg);
2049f606849Smrg
2059f606849Smrgextern int XvPutStill(
2069f606849Smrg  Display*                 /* display */,
2079f606849Smrg  XvPortID                 /* port */,
2089f606849Smrg  Drawable                 /* d */,
2099f606849Smrg  GC                       /* gc */,
2109f606849Smrg  int                      /* vx */,
2119f606849Smrg  int                      /* vy */,
2129f606849Smrg  unsigned int             /* vw */,
2139f606849Smrg  unsigned int             /* vh */,
2149f606849Smrg  int                      /* dx */,
2159f606849Smrg  int                      /* dy */,
2169f606849Smrg  unsigned int             /* dw */,
2179f606849Smrg  unsigned int             /* dh */
2189f606849Smrg);
2199f606849Smrg
2209f606849Smrgextern int XvGetVideo(
2219f606849Smrg  Display*                 /* display */,
2229f606849Smrg  XvPortID                 /* port */,
2239f606849Smrg  Drawable                 /* d */,
2249f606849Smrg  GC                       /* gc */,
2259f606849Smrg  int                      /* vx */,
2269f606849Smrg  int                      /* vy */,
2279f606849Smrg  unsigned int             /* vw */,
2289f606849Smrg  unsigned int             /* vh */,
2299f606849Smrg  int                      /* dx */,
2309f606849Smrg  int                      /* dy */,
2319f606849Smrg  unsigned int             /* dw */,
2329f606849Smrg  unsigned int             /* dh */
2339f606849Smrg);
2349f606849Smrg
2359f606849Smrgextern int XvGetStill(
2369f606849Smrg  Display*                 /* display */,
2379f606849Smrg  XvPortID                 /* port */,
2389f606849Smrg  Drawable                 /* d */,
2399f606849Smrg  GC                       /* gc */,
2409f606849Smrg  int                      /* vx */,
2419f606849Smrg  int                      /* vy */,
2429f606849Smrg  unsigned int             /* vw */,
2439f606849Smrg  unsigned int             /* vh */,
2449f606849Smrg  int                      /* dx */,
2459f606849Smrg  int                      /* dy */,
2469f606849Smrg  unsigned int             /* dw */,
2479f606849Smrg  unsigned int             /* dh */
2489f606849Smrg);
2499f606849Smrg
2509f606849Smrgextern int XvStopVideo(
2519f606849Smrg  Display*                /* display */,
2529f606849Smrg  XvPortID                /* port */,
2539f606849Smrg  Drawable                /* drawable */
2549f606849Smrg);
2559f606849Smrg
2569f606849Smrgextern int XvGrabPort(
2579f606849Smrg  Display*                /* display */,
2589f606849Smrg  XvPortID                /* port */,
2599f606849Smrg  Time                    /* time */
2609f606849Smrg);
2619f606849Smrg
2629f606849Smrgextern int XvUngrabPort(
2639f606849Smrg  Display*                /* display */,
2649f606849Smrg  XvPortID                /* port */,
2659f606849Smrg  Time                    /* time */
2669f606849Smrg);
2679f606849Smrg
2689f606849Smrgextern int XvSelectVideoNotify(
2699f606849Smrg  Display*                /* display */,
2709f606849Smrg  Drawable                /* drawable */,
2719f606849Smrg  Bool                    /* onoff */
2729f606849Smrg);
2739f606849Smrg
2749f606849Smrgextern int XvSelectPortNotify(
2759f606849Smrg  Display*                /* display */,
2769f606849Smrg  XvPortID                /* port */,
2779f606849Smrg  Bool                    /* onoff */
2789f606849Smrg);
2799f606849Smrg
2809f606849Smrgextern int XvSetPortAttribute(
2819f606849Smrg  Display*                /* display */,
2829f606849Smrg  XvPortID                /* port */,
2839f606849Smrg  Atom                    /* attribute */,
2849f606849Smrg  int                     /* value */
2859f606849Smrg);
2869f606849Smrg
2879f606849Smrgextern int XvGetPortAttribute(
2889f606849Smrg  Display*                /* display */,
2899f606849Smrg  XvPortID                /* port */,
2909f606849Smrg  Atom                    /* attribute */,
2919f606849Smrg  int*                    /* p_value */
2929f606849Smrg);
2939f606849Smrg
2949f606849Smrgextern int XvQueryBestSize(
2959f606849Smrg  Display*                /* display */,
2969f606849Smrg  XvPortID                /* port */,
2979f606849Smrg  Bool                    /* motion */,
2989f606849Smrg  unsigned int            /* vid_w */,
2999f606849Smrg  unsigned int            /* vid_h */,
3009f606849Smrg  unsigned int            /* drw_w */,
3019f606849Smrg  unsigned int            /* drw_h */,
3029f606849Smrg  unsigned int*           /* p_actual_width */,
3039f606849Smrg  unsigned int*           /* p_actual_width */
3049f606849Smrg);
3059f606849Smrg
3069f606849Smrgextern XvAttribute* XvQueryPortAttributes(
3079f606849Smrg  Display*                /* display */,
3089f606849Smrg  XvPortID                /* port */,
3099f606849Smrg  int*                    /* number */
3109f606849Smrg);
3119f606849Smrg
3129f606849Smrg
3139f606849Smrgextern void XvFreeAdaptorInfo(
3149f606849Smrg  XvAdaptorInfo*          /* adaptors */
3159f606849Smrg);
3169f606849Smrg
3179f606849Smrgextern void XvFreeEncodingInfo(
3189f606849Smrg  XvEncodingInfo*         /* encodings */
3199f606849Smrg);
3209f606849Smrg
3219f606849Smrg
3229f606849Smrgextern XvImageFormatValues * XvListImageFormats (
3239f606849Smrg   Display 	*display,
3249f606849Smrg   XvPortID 	port_id,
3259f606849Smrg   int 		*count_return
3269f606849Smrg);
3279f606849Smrg
3289f606849Smrgextern XvImage * XvCreateImage (
3299f606849Smrg   Display *display,
3309f606849Smrg   XvPortID port,
3319f606849Smrg   int id,
3329f606849Smrg   char *data,
3339f606849Smrg   int width,
3349f606849Smrg   int height
3359f606849Smrg);
3369f606849Smrg
3379f606849Smrgextern int XvPutImage (
3389f606849Smrg  Display *display,
3399f606849Smrg   XvPortID id,
3409f606849Smrg   Drawable d,
3419f606849Smrg   GC gc,
3429f606849Smrg   XvImage *image,
3439f606849Smrg   int src_x,
3449f606849Smrg   int src_y,
3459f606849Smrg   unsigned int src_w,
3469f606849Smrg   unsigned int src_h,
3479f606849Smrg   int dest_x,
3489f606849Smrg   int dest_y,
3499f606849Smrg   unsigned int dest_w,
3509f606849Smrg   unsigned int dest_h
3519f606849Smrg);
3529f606849Smrg
3539f606849Smrgextern int XvShmPutImage (
3549f606849Smrg   Display *display,
3559f606849Smrg   XvPortID id,
3569f606849Smrg   Drawable d,
3579f606849Smrg   GC gc,
3589f606849Smrg   XvImage *image,
3599f606849Smrg   int src_x,
3609f606849Smrg   int src_y,
3619f606849Smrg   unsigned int src_w,
3629f606849Smrg   unsigned int src_h,
3639f606849Smrg   int dest_x,
3649f606849Smrg   int dest_y,
3659f606849Smrg   unsigned int dest_w,
3669f606849Smrg   unsigned int dest_h,
3679f606849Smrg   Bool send_event
3689f606849Smrg);
3699f606849Smrg
3709f606849Smrgextern XvImage * XvShmCreateImage (
3719f606849Smrg   Display *display,
3729f606849Smrg   XvPortID port,
3739f606849Smrg   int id,
3749f606849Smrg   char* data,
3759f606849Smrg   int width,
3769f606849Smrg   int height,
3779f606849Smrg   XShmSegmentInfo *shminfo
3789f606849Smrg);
3799f606849Smrg
3809f606849Smrg
3819f606849Smrg_XFUNCPROTOEND
3829f606849Smrg
3839f606849Smrg#endif /* XVLIB_H */
384