summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/g3dvl/vl_types.h
blob: 274e1f743778730cb2e089649fb93a62330dcdc5 (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
#ifndef vl_types_h
#define vl_types_h

#if 1 /*#ifdef X11*/
#include <X11/Xlib.h>

typedef Display* vlNativeDisplay;
typedef Drawable vlNativeDrawable;
#endif

struct vlDisplay;
struct vlScreen;
struct vlContext;
struct vlSurface;

enum vlResourceStatus
{
	vlResourceStatusFree,
	vlResourceStatusRendering,
	vlResourceStatusDisplaying
};

enum vlProfile
{
	vlProfileMpeg2Simple,
	vlProfileMpeg2Main,

	vlProfileCount
};

enum vlEntryPoint
{
	vlEntryPointIDCT,
	vlEntryPointMC,
	vlEntryPointCSC,

	vlEntryPointCount
};

enum vlFormat
{
	vlFormatYCbCr420,
	vlFormatYCbCr422,
	vlFormatYCbCr444
};

enum vlPictureType
{
	vlPictureTypeTopField,
	vlPictureTypeBottomField,
	vlPictureTypeFrame
};

enum vlMotionType
{
	vlMotionTypeField,
	vlMotionTypeFrame,
	vlMotionTypeDualPrime,
	vlMotionType16x8
};

enum vlFieldOrder
{
	vlFieldOrderFirst,
	vlFieldOrderSecond
};

enum vlDCTType
{
	vlDCTTypeFrameCoded,
	vlDCTTypeFieldCoded
};

struct vlVertex2f
{
	float x, y;
};

struct vlVertex4f
{
	float x, y, z, w;
};

enum vlMacroBlockType
{
	vlMacroBlockTypeIntra,
	vlMacroBlockTypeFwdPredicted,
	vlMacroBlockTypeBkwdPredicted,
	vlMacroBlockTypeBiPredicted,

	vlNumMacroBlockTypes
};

struct vlMpeg2MacroBlock
{
	unsigned int		mbx, mby;
	enum vlMacroBlockType	mb_type;
	enum vlMotionType	mo_type;
	enum vlDCTType		dct_type;
	int			PMV[2][2][2];
	unsigned int		cbp;
	short			*blocks;
};

struct vlMpeg2MacroBlockBatch
{
	struct vlSurface		*past_surface;
	struct vlSurface		*future_surface;
	enum vlPictureType		picture_type;
	enum vlFieldOrder		field_order;
	unsigned int			num_macroblocks;
	struct vlMpeg2MacroBlock	*macroblocks;
};

#endif