104 |
#define XVID_HALFPEL 0x00000040 /* use halfpel interpolation */ |
#define XVID_HALFPEL 0x00000040 /* use halfpel interpolation */ |
105 |
#define XVID_ADAPTIVEQUANT 0x00000080 |
#define XVID_ADAPTIVEQUANT 0x00000080 |
106 |
#define XVID_LUMIMASKING 0x00000100 |
#define XVID_LUMIMASKING 0x00000100 |
107 |
|
#define XVID_LATEINTRA 0x00000200 |
108 |
|
|
109 |
#define XVID_INTER4V 0x00000800 |
#define XVID_INTERLACING 0x00000400 /* enable interlaced encoding */ |
110 |
|
#define XVID_TOPFIELDFIRST 0x00000800 /* set top-field-first flag (cosmetic only) */ |
111 |
#define XVID_ME_ZERO 0x00001000 |
#define XVID_ALTERNATESCAN 0x00001000 /* ?? sets alternate vertical scan flag */ |
112 |
#define XVID_ME_LOGARITHMIC 0x00002000 |
|
113 |
#define XVID_ME_FULLSEARCH 0x00004000 |
#define XVID_HINTEDME_GET 0x00002000 /* receive mv hint data from core (1st pass) */ |
114 |
#define XVID_ME_PMVFAST 0x00008000 |
#define XVID_HINTEDME_SET 0x00004000 /* send mv hint data to core (2nd pass) */ |
115 |
|
|
116 |
|
#define XVID_INTER4V 0x00008000 |
117 |
|
|
118 |
|
#define XVID_ME_ZERO 0x00010000 |
119 |
|
#define XVID_ME_LOGARITHMIC 0x00020000 |
120 |
|
#define XVID_ME_FULLSEARCH 0x00040000 |
121 |
|
#define XVID_ME_PMVFAST 0x00080000 |
122 |
|
#define XVID_ME_EPZS 0x00100000 |
123 |
|
|
124 |
#define PMV_HALFPELDIAMOND16 0x00010000 |
#define PMV_HALFPELDIAMOND16 0x00010000 |
125 |
#define PMV_HALFPELREFINE16 0x00020000 |
#define PMV_HALFPELREFINE16 0x00020000 |
128 |
#define PMV_QUICKSTOP16 0x00100000 /* like early, but without any more refinement */ |
#define PMV_QUICKSTOP16 0x00100000 /* like early, but without any more refinement */ |
129 |
#define PMV_UNRESTRICTED16 0x00200000 /* unrestricted ME, not implemented */ |
#define PMV_UNRESTRICTED16 0x00200000 /* unrestricted ME, not implemented */ |
130 |
#define PMV_OVERLAPPING16 0x00400000 /* overlapping ME, not implemented */ |
#define PMV_OVERLAPPING16 0x00400000 /* overlapping ME, not implemented */ |
131 |
|
#define PMV_USESQUARES16 0x00800000 |
132 |
|
|
133 |
#define PMV_HALFPELDIAMOND8 0x01000000 |
#define PMV_HALFPELDIAMOND8 0x01000000 |
134 |
#define PMV_HALFPELREFINE8 0x02000000 |
#define PMV_HALFPELREFINE8 0x02000000 |
137 |
#define PMV_QUICKSTOP8 0x10000000 /* like early, but without any more refinement */ |
#define PMV_QUICKSTOP8 0x10000000 /* like early, but without any more refinement */ |
138 |
#define PMV_UNRESTRICTED8 0x20000000 /* unrestricted ME, not implemented */ |
#define PMV_UNRESTRICTED8 0x20000000 /* unrestricted ME, not implemented */ |
139 |
#define PMV_OVERLAPPING8 0x40000000 /* overlapping ME, not implemented */ |
#define PMV_OVERLAPPING8 0x40000000 /* overlapping ME, not implemented */ |
140 |
|
#define PMV_USESQUARES8 0x80000000 |
141 |
|
|
142 |
|
|
143 |
typedef struct |
typedef struct |
144 |
{ |
{ |
157 |
|
|
158 |
typedef struct |
typedef struct |
159 |
{ |
{ |
160 |
|
int x; |
161 |
|
int y; |
162 |
|
} VECTOR; |
163 |
|
|
164 |
|
typedef struct |
165 |
|
{ |
166 |
|
int mode; // macroblock mode |
167 |
|
VECTOR mvs[4]; |
168 |
|
} MVBLOCKHINT; |
169 |
|
|
170 |
|
typedef struct |
171 |
|
{ |
172 |
|
int intra; // frame intra choice |
173 |
|
int fcode; // frame fcode |
174 |
|
MVBLOCKHINT * block; // caller-allocated array of block hints (mb_width * mb_height) |
175 |
|
} MVFRAMEHINT; |
176 |
|
|
177 |
|
typedef struct |
178 |
|
{ |
179 |
|
int rawhints; // if set, use MVFRAMEHINT, else use compressed buffer |
180 |
|
|
181 |
|
MVFRAMEHINT mvhint; |
182 |
|
void * hintstream; // compressed hint buffer |
183 |
|
int hintlength; // length of buffer (bytes) |
184 |
|
} HINTINFO; |
185 |
|
|
186 |
|
typedef struct |
187 |
|
{ |
188 |
int general; // [in] general options |
int general; // [in] general options |
189 |
int motion; // [in] ME options |
int motion; // [in] ME options |
190 |
void * bitstream; // [in] bitstream ptr |
void * bitstream; // [in] bitstream ptr |
198 |
int quant; // [in] frame quantizer (vbr) |
int quant; // [in] frame quantizer (vbr) |
199 |
int intra; // [in] force intra frame (vbr only) |
int intra; // [in] force intra frame (vbr only) |
200 |
// [out] intra state |
// [out] intra state |
201 |
|
HINTINFO hint; // [in/out] mv hint information |
202 |
} XVID_ENC_FRAME; |
} XVID_ENC_FRAME; |
203 |
|
|
204 |
|
|