Merge remote branch 'upstream/gallium-0.2' into nouveau-gallium-0.2
[mesa.git] / src / gallium / state_trackers / g3dvl / vl_types.h
1 #ifndef vl_types_h
2 #define vl_types_h
3
4 #if 1 /*#ifdef X11*/
5 #include <X11/Xlib.h>
6
7 typedef Display* vlNativeDisplay;
8 typedef Drawable vlNativeDrawable;
9 #endif
10
11 struct vlDisplay;
12 struct vlScreen;
13 struct vlContext;
14 struct vlSurface;
15
16 enum vlProfile
17 {
18 vlProfileMpeg2Simple,
19 vlProfileMpeg2Main,
20
21 vlProfileCount
22 };
23
24 enum vlEntryPoint
25 {
26 vlEntryPointIDCT,
27 vlEntryPointMC,
28 vlEntryPointCSC,
29
30 vlEntryPointCount
31 };
32
33 enum vlFormat
34 {
35 vlFormatYCbCr420,
36 vlFormatYCbCr422,
37 vlFormatYCbCr444
38 };
39
40 enum vlPictureType
41 {
42 vlPictureTypeTopField,
43 vlPictureTypeBottomField,
44 vlPictureTypeFrame
45 };
46
47 enum vlMotionType
48 {
49 vlMotionTypeField,
50 vlMotionTypeFrame,
51 vlMotionTypeDualPrime,
52 vlMotionType16x8
53 };
54
55 enum vlFieldOrder
56 {
57 vlFieldOrderFirst,
58 vlFieldOrderSecond
59 };
60
61 enum vlDCTType
62 {
63 vlDCTTypeFrameCoded,
64 vlDCTTypeFieldCoded
65 };
66
67 struct vlVertex2f
68 {
69 float x, y;
70 };
71
72 struct vlVertex4f
73 {
74 float x, y, z, w;
75 };
76
77 enum vlMacroBlockType
78 {
79 vlMacroBlockTypeIntra,
80 vlMacroBlockTypeFwdPredicted,
81 vlMacroBlockTypeBkwdPredicted,
82 vlMacroBlockTypeBiPredicted,
83
84 vlNumMacroBlockTypes
85 };
86
87 struct vlMpeg2MacroBlock
88 {
89 unsigned int mbx, mby;
90 enum vlMacroBlockType mb_type;
91 enum vlMotionType mo_type;
92 enum vlDCTType dct_type;
93 int PMV[2][2][2];
94 unsigned int cbp;
95 short *blocks;
96 };
97
98 struct vlMpeg2MacroBlockBatch
99 {
100 struct vlSurface *past_surface;
101 struct vlSurface *future_surface;
102 enum vlPictureType picture_type;
103 enum vlFieldOrder field_order;
104 unsigned int num_macroblocks;
105 struct vlMpeg2MacroBlock *macroblocks;
106 };
107
108 #endif