cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/***********************************************************
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncand the Massachusetts Institute of Technology, Cambridge, Massachusetts.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync All Rights Reserved
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, and distribute this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose and without fee is hereby granted,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncprovided that the above copyright notice appear in all copies and that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncboth that copyright notice and this permission notice appear in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsupporting documentation, and that the names of Digital or MIT not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or publicity pertaining to distribution of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsoftware without specific, written prior permission.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncSOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync******************************************************************/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef XVDIX_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define XVDIX_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** File:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** xvdix.h --- Xv device independent header file
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** Author:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** David Carver (Digital Workstation Engineering/Project Athena)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** Revisions:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** 29.08.91 Carver
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - removed UnrealizeWindow wrapper unrealizing windows no longer
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** preempts video
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** 11.06.91 Carver
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - changed SetPortControl to SetPortAttribute
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - changed GetPortControl to GetPortAttribute
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - changed QueryBestSize
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** 15.05.91 Carver
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - version 2.0 upgrade
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** 24.01.91 Carver
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync** - version 1.4 upgrade
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync**
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "scrnintstr.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <X11/extensions/Xvproto.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef XorgLoader
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvExtensionGeneration;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvScreenGeneration;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvResourceGeneration;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvReqCode;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvEventBase;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvErrorBase;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTPort;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTEncoding;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTGrab;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTVideoNotify;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTVideoNotifyList;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvRTPortNotify;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int numerator;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int denominator;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvRationalRec, *XvRationalPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char depth;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long visual;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvFormatRec, *XvFormatPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ClientPtr client;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvGrabRec, *XvGrabPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _XvVideoNotifyRec {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _XvVideoNotifyRec *next;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ClientPtr client;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long mask;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvVideoNotifyRec, *XvVideoNotifyPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _XvPortNotifyRec {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _XvPortNotifyRec *next;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ClientPtr client;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvPortNotifyRec, *XvPortNotifyPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char *name;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short width, height;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvRationalRec rate;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvEncodingRec, *XvEncodingPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _XvAttributeRec {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int flags;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int min_value;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int max_value;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char *name;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvAttributeRec, *XvAttributePtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int type;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int byte_order;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char guid[16];
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int bits_per_pixel;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int format;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int num_planes;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* for RGB formats only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int depth;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int red_mask;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int green_mask;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int blue_mask;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* for YUV formats only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int y_sample_bits;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int u_sample_bits;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int v_sample_bits;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int horz_y_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int horz_u_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int horz_v_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int vert_y_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int vert_u_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int vert_v_period;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char component_order[32];
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int scanline_order;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvImageRec, *XvImagePtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long base_id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned char type;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char *name;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nEncodings;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvEncodingPtr pEncodings;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nFormats;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvFormatPtr pFormats;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nAttributes;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvAttributePtr pAttributes;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nImages;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvImagePtr pImages;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nPorts;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _XvPortRec *pPorts;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddAllocatePort)(unsigned long, struct _XvPortRec*,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct _XvPortRec**);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddFreePort)(struct _XvPortRec*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddPutVideo)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddPutStill)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddGetVideo)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddGetStill)(ClientPtr, DrawablePtr,struct _XvPortRec*, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddStopVideo)(ClientPtr, struct _XvPortRec*, DrawablePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddSetPortAttribute)(ClientPtr, struct _XvPortRec*, Atom, INT32);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddGetPortAttribute)(ClientPtr, struct _XvPortRec*, Atom, INT32*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddQueryBestSize)(ClientPtr, struct _XvPortRec*, CARD8,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CARD16, CARD16,CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned int*, unsigned int*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddPutImage)(ClientPtr, DrawablePtr, struct _XvPortRec*, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvImagePtr, unsigned char*, Bool,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddQueryImageAttributes)(ClientPtr, struct _XvPortRec*, XvImagePtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CARD16*, CARD16*, int*, int*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevUnion devPriv;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvAdaptorRec, *XvAdaptorPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _XvPortRec {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned long id;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvAdaptorPtr pAdaptor;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvPortNotifyPtr pNotify;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DrawablePtr pDraw;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ClientPtr client;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvGrabRec grab;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync TimeStamp time;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevUnion devPriv;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvPortRec, *XvPortPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define VALIDATE_XV_PORT(portID, pPort, mode)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync {\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int rc = dixLookupResourceByType((pointer *)&(pPort), portID,\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvRTPort, client, mode);\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync if (rc != Success)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync return rc;\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync }
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int version, revision;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int nAdaptors;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvAdaptorPtr pAdaptors;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DestroyWindowProcPtr DestroyWindow;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DestroyPixmapProcPtr DestroyPixmap;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CloseScreenProcPtr CloseScreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Bool (* ddCloseScreen)(int, ScreenPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int (* ddQueryAdaptors)(ScreenPtr, XvAdaptorPtr*, int*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync DevUnion devPriv;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} XvScreenRec, *XvScreenPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define SCREEN_PROLOGUE(pScreen, field) ((pScreen)->field = ((XvScreenPtr) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync dixLookupPrivate(&(pScreen)->devPrivates, XvScreenKey))->field)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define SCREEN_EPILOGUE(pScreen, field, wrapper)\
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((pScreen)->field = wrapper)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Errors */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _XvBadPort (XvBadPort+XvErrorBase)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _XvBadEncoding (XvBadEncoding+XvErrorBase)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef XorgLoader
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int ProcXvDispatch(ClientPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int SProcXvDispatch(ClientPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT void XvExtensionInit(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvScreenInit(ScreenPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT DevPrivateKey XvGetScreenKey(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT unsigned long XvGetRTPort(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiSendPortNotify(XvPortPtr, Atom, INT32);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiVideoStopped(XvPortPtr, int);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiPutVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiPutStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiGetVideo(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiGetStill(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiPutImage(ClientPtr, DrawablePtr, XvPortPtr, GCPtr,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync INT16, INT16, CARD16, CARD16,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XvImagePtr, unsigned char*, Bool,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync CARD16, CARD16);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiSelectVideoNotify(ClientPtr, DrawablePtr, BOOL);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiSelectPortNotify(ClientPtr, XvPortPtr, BOOL);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiSetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiGetPortAttribute(ClientPtr, XvPortPtr, Atom, INT32*);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiStopVideo(ClientPtr, XvPortPtr, DrawablePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiPreemptVideo(ClientPtr, XvPortPtr, DrawablePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiMatchPort(XvPortPtr, DrawablePtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiGrabPort(ClientPtr, XvPortPtr, Time, int *);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT int XvdiUngrabPort( ClientPtr, XvPortPtr, Time);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* XorgLoader */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* XVDIX_H */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync