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