2201d7b5b32a0d87461e461820a9ffc6e4801767
[deb_xorg-server.git] / Xext / xvmcext.h
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 pointer port_priv;
35 pointer driver_priv;
36 } XvMCContextRec, *XvMCContextPtr;
37
38 typedef struct {
39 XID surface_id;
40 int surface_type_id;
41 XvMCContextPtr context;
42 pointer 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 pointer 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, char *name,
95 char *busID, int major, int minor,
96 int patchLevel);
97
98 #endif /* _XVMC_H */