1 2 #ifndef _XVMC_H 3 #define _XVMC_H 4 #include <X11/extensions/Xv.h> 5 #include "xvdix.h" 6 7 typedef struct { 8 int num_xvimages; 9 int *xvimage_ids; 10 } XvMCImageIDList; 11 12 typedef struct { 13 int surface_type_id; 14 int chroma_format; 15 int color_description; 16 unsigned short max_width; 17 unsigned short max_height; 18 unsigned short subpicture_max_width; 19 unsigned short subpicture_max_height; 20 int mc_type; 21 int flags; 22 XvMCImageIDList *compatible_subpictures; 23 } XvMCSurfaceInfoRec, *XvMCSurfaceInfoPtr; 24 25 typedef struct { 26 XID context_id; 27 ScreenPtr pScreen; 28 int adapt_num; 29 int surface_type_id; 30 unsigned short width; 31 unsigned short height; 32 CARD32 flags; 33 int refcnt; 34 void *port_priv; 35 void *driver_priv; 36 } XvMCContextRec, *XvMCContextPtr; 37 38 typedef struct { 39 XID surface_id; 40 int surface_type_id; 41 XvMCContextPtr context; 42 void *driver_priv; 43 } XvMCSurfaceRec, *XvMCSurfacePtr; 44 45 typedef struct { 46 XID subpicture_id; 47 int xvimage_id; 48 unsigned short width; 49 unsigned short height; 50 int num_palette_entries; 51 int entry_bytes; 52 char component_order[4]; 53 XvMCContextPtr context; 54 void *driver_priv; 55 } XvMCSubpictureRec, *XvMCSubpicturePtr; 56 57 typedef int (*XvMCCreateContextProcPtr) (XvPortPtr port, 58 XvMCContextPtr context, 59 int *num_priv, CARD32 **priv); 60 61 typedef void (*XvMCDestroyContextProcPtr) (XvMCContextPtr context); 62 63 typedef int (*XvMCCreateSurfaceProcPtr) (XvMCSurfacePtr surface, 64 int *num_priv, CARD32 **priv); 65 66 typedef void (*XvMCDestroySurfaceProcPtr) (XvMCSurfacePtr surface); 67 68 typedef int (*XvMCCreateSubpictureProcPtr) (XvMCSubpicturePtr subpicture, 69 int *num_priv, CARD32 **priv); 70 71 typedef void (*XvMCDestroySubpictureProcPtr) (XvMCSubpicturePtr subpicture); 72 73 typedef struct { 74 XvAdaptorPtr xv_adaptor; 75 int num_surfaces; 76 XvMCSurfaceInfoPtr *surfaces; 77 int num_subpictures; 78 XvImagePtr *subpictures; 79 XvMCCreateContextProcPtr CreateContext; 80 XvMCDestroyContextProcPtr DestroyContext; 81 XvMCCreateSurfaceProcPtr CreateSurface; 82 XvMCDestroySurfaceProcPtr DestroySurface; 83 XvMCCreateSubpictureProcPtr CreateSubpicture; 84 XvMCDestroySubpictureProcPtr DestroySubpicture; 85 } XvMCAdaptorRec, *XvMCAdaptorPtr; 86 87 extern int (*XvMCScreenInitProc)(ScreenPtr, int, XvMCAdaptorPtr); 88 89 extern _X_EXPORT int XvMCScreenInit(ScreenPtr pScreen, 90 int num, XvMCAdaptorPtr adapt); 91 92 extern _X_EXPORT XvImagePtr XvMCFindXvImage(XvPortPtr pPort, CARD32 id); 93 94 extern _X_EXPORT int xf86XvMCRegisterDRInfo(ScreenPtr pScreen, const char *name, 95 const char *busID, int major, int minor, 96 int patchLevel); 97 98 #endif /* _XVMC_H */ 99