summaryrefslogtreecommitdiff
path: root/Xext/xvmcext.h
blob: 77af41d41b7505fc3efcba73f6de104b7e51e714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* $XFree86: xc/programs/Xserver/Xext/xvmcext.h,v 1.1 2001/04/07 11:04:21 alanh Exp $ */

#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif

#ifndef _XVMC_H
#define _XVMC_H
#include <X11/extensions/Xv.h>
#include "xvdix.h"

typedef struct {
  int num_xvimages;
  int *xvimage_ids;
} XvMCImageIDList;

typedef struct {
  int surface_type_id;
  int chroma_format;
  int color_description;
  unsigned short max_width;
  unsigned short max_height;
  unsigned short subpicture_max_width;
  unsigned short subpicture_max_height;
  int mc_type;
  int flags;
  XvMCImageIDList *compatible_subpictures;
} XvMCSurfaceInfoRec, *XvMCSurfaceInfoPtr;

typedef struct {
  XID context_id;
  ScreenPtr pScreen;
  int adapt_num;
  int surface_type_id;
  unsigned short width;
  unsigned short height;
  CARD32 flags;
  int refcnt;
  pointer port_priv;
  pointer driver_priv;
} XvMCContextRec, *XvMCContextPtr;

typedef struct {
  XID surface_id;
  int surface_type_id;
  XvMCContextPtr context;
  pointer driver_priv;
} XvMCSurfaceRec, *XvMCSurfacePtr;


typedef struct {
  XID subpicture_id;
  int xvimage_id;
  unsigned short width;
  unsigned short height;
  int num_palette_entries;
  int entry_bytes;
  char component_order[4];
  XvMCContextPtr context;
  pointer driver_priv;
} XvMCSubpictureRec, *XvMCSubpicturePtr;

typedef int (*XvMCCreateContextProcPtr) (
  XvPortPtr port,
  XvMCContextPtr context,
  int *num_priv,
  CARD32 **priv 
);

typedef void (*XvMCDestroyContextProcPtr) (
  XvMCContextPtr context
);

typedef int (*XvMCCreateSurfaceProcPtr) (
  XvMCSurfacePtr surface,
  int *num_priv,
  CARD32 **priv
);

typedef void (*XvMCDestroySurfaceProcPtr) (
  XvMCSurfacePtr surface
);

typedef int (*XvMCCreateSubpictureProcPtr) (
  XvMCSubpicturePtr subpicture,
  int *num_priv,
  CARD32 **priv
);

typedef void (*XvMCDestroySubpictureProcPtr) (
  XvMCSubpicturePtr subpicture
);


typedef struct {
  XvAdaptorPtr			    xv_adaptor;
  int				    num_surfaces;
  XvMCSurfaceInfoPtr		    *surfaces;
  int				    num_subpictures;
  XvImagePtr			    *subpictures;
  XvMCCreateContextProcPtr          CreateContext; 
  XvMCDestroyContextProcPtr         DestroyContext; 
  XvMCCreateSurfaceProcPtr          CreateSurface;  
  XvMCDestroySurfaceProcPtr         DestroySurface; 
  XvMCCreateSubpictureProcPtr       CreateSubpicture; 
  XvMCDestroySubpictureProcPtr      DestroySubpicture;
} XvMCAdaptorRec, *XvMCAdaptorPtr;

void XvMCExtensionInit(void);

int XvMCScreenInit(ScreenPtr pScreen, int num, XvMCAdaptorPtr adapt);

XvImagePtr XvMCFindXvImage(XvPortPtr pPort, CARD32 id);

int xf86XvMCRegisterDRInfo(ScreenPtr pScreen, char *name,
			   char *busID, int major, int minor, 
			   int patchLevel);


#endif /* _XVMC_H */