1
2#ifndef _XVMC_H
3#define _XVMC_H
4#include <X11/extensions/Xv.h>
5#include "xvdix.h"
6
7typedef struct {
8  int num_xvimages;
9  int *xvimage_ids;
10} XvMCImageIDList;
11
12typedef 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
25typedef 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
38typedef struct {
39  XID surface_id;
40  int surface_type_id;
41  XvMCContextPtr context;
42  pointer driver_priv;
43} XvMCSurfaceRec, *XvMCSurfacePtr;
44
45
46typedef struct {
47  XID subpicture_id;
48  int xvimage_id;
49  unsigned short width;
50  unsigned short height;
51  int num_palette_entries;
52  int entry_bytes;
53  char component_order[4];
54  XvMCContextPtr context;
55  pointer driver_priv;
56} XvMCSubpictureRec, *XvMCSubpicturePtr;
57
58typedef int (*XvMCCreateContextProcPtr) (
59  XvPortPtr port,
60  XvMCContextPtr context,
61  int *num_priv,
62  CARD32 **priv
63);
64
65typedef void (*XvMCDestroyContextProcPtr) (
66  XvMCContextPtr context
67);
68
69typedef int (*XvMCCreateSurfaceProcPtr) (
70  XvMCSurfacePtr surface,
71  int *num_priv,
72  CARD32 **priv
73);
74
75typedef void (*XvMCDestroySurfaceProcPtr) (
76  XvMCSurfacePtr surface
77);
78
79typedef int (*XvMCCreateSubpictureProcPtr) (
80  XvMCSubpicturePtr subpicture,
81  int *num_priv,
82  CARD32 **priv
83);
84
85typedef void (*XvMCDestroySubpictureProcPtr) (
86  XvMCSubpicturePtr subpicture
87);
88
89
90typedef struct {
91  XvAdaptorPtr			    xv_adaptor;
92  int				    num_surfaces;
93  XvMCSurfaceInfoPtr		    *surfaces;
94  int				    num_subpictures;
95  XvImagePtr			    *subpictures;
96  XvMCCreateContextProcPtr          CreateContext;
97  XvMCDestroyContextProcPtr         DestroyContext;
98  XvMCCreateSurfaceProcPtr          CreateSurface;
99  XvMCDestroySurfaceProcPtr         DestroySurface;
100  XvMCCreateSubpictureProcPtr       CreateSubpicture;
101  XvMCDestroySubpictureProcPtr      DestroySubpicture;
102} XvMCAdaptorRec, *XvMCAdaptorPtr;
103
104#ifndef XorgLoader
105extern _X_EXPORT void XvMCExtensionInit(void);
106
107extern _X_EXPORT int XvMCScreenInit(ScreenPtr pScreen,
108				    int num,
109				    XvMCAdaptorPtr adapt);
110
111extern _X_EXPORT XvImagePtr XvMCFindXvImage(XvPortPtr pPort, CARD32 id);
112
113extern _X_EXPORT int xf86XvMCRegisterDRInfo(ScreenPtr pScreen, char *name,
114			   char *busID, int major, int minor,
115			   int patchLevel);
116#endif
117
118#endif /* _XVMC_H */
119