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