61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef _XVMC_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _XVMC_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <X11/extensions/Xv.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "xvdix.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num_xvimages;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *xvimage_ids;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCImageIDList;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int surface_type_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int chroma_format;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int color_description;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short max_width;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short max_height;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short subpicture_max_width;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short subpicture_max_height;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int mc_type;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int flags;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCImageIDList *compatible_subpictures;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCSurfaceInfoRec, *XvMCSurfaceInfoPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XID context_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ScreenPtr pScreen;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int adapt_num;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int surface_type_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short width;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short height;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD32 flags;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int refcnt;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *port_priv;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *driver_priv;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCContextRec, *XvMCContextPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XID surface_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int surface_type_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCContextPtr context;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *driver_priv;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCSurfaceRec, *XvMCSurfacePtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XID subpicture_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int xvimage_id;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short width;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned short height;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num_palette_entries;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int entry_bytes;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char component_order[4];
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCContextPtr context;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *driver_priv;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCSubpictureRec, *XvMCSubpicturePtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef int (*XvMCCreateContextProcPtr) (XvPortPtr port,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCContextPtr context,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *num_priv, CARD32 **priv);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*XvMCDestroyContextProcPtr) (XvMCContextPtr context);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef int (*XvMCCreateSurfaceProcPtr) (XvMCSurfacePtr surface,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *num_priv, CARD32 **priv);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*XvMCDestroySurfaceProcPtr) (XvMCSurfacePtr surface);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef int (*XvMCCreateSubpictureProcPtr) (XvMCSubpicturePtr subpicture,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *num_priv, CARD32 **priv);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*XvMCDestroySubpictureProcPtr) (XvMCSubpicturePtr subpicture);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvAdaptorPtr xv_adaptor;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num_surfaces;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCSurfaceInfoPtr *surfaces;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num_subpictures;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvImagePtr *subpictures;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCCreateContextProcPtr CreateContext;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCDestroyContextProcPtr DestroyContext;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCCreateSurfaceProcPtr CreateSurface;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCDestroySurfaceProcPtr DestroySurface;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCCreateSubpictureProcPtr CreateSubpicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync XvMCDestroySubpictureProcPtr DestroySubpicture;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} XvMCAdaptorRec, *XvMCAdaptorPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern int (*XvMCScreenInitProc)(ScreenPtr, int, XvMCAdaptorPtr);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT int XvMCScreenInit(ScreenPtr pScreen,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int num, XvMCAdaptorPtr adapt);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT XvImagePtr XvMCFindXvImage(XvPortPtr pPort, CARD32 id);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT int xf86XvMCRegisterDRInfo(ScreenPtr pScreen, const char *name,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const char *busID, int major, int minor,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int patchLevel);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* _XVMC_H */