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