148 |
**/ |
**/ |
149 |
typedef struct _ENC_PARAM_ |
typedef struct _ENC_PARAM_ |
150 |
{ |
{ |
151 |
int x_dim; // the x dimension of the frames to be encoded |
int x_dim; /* the x dimension of the frames to be encoded */ |
152 |
int y_dim; // the y dimension of the frames to be encoded |
int y_dim; /* the y dimension of the frames to be encoded */ |
153 |
float framerate; // the frame rate of the sequence to be encoded, in frames/second |
float framerate; /* the frame rate of the sequence to be encoded, in frames/second */ |
154 |
int bitrate; // the bitrate of the target encoded stream, in bits/second |
int bitrate; /* the bitrate of the target encoded stream, in bits/second */ |
155 |
int rc_period; // the intended rate control averaging period |
int rc_period; /* the intended rate control averaging period */ |
156 |
int rc_reaction_period; // the reaction period for rate control |
int rc_reaction_period; /* the reaction period for rate control */ |
157 |
int rc_reaction_ratio; // the ratio for down/up rate control |
int rc_reaction_ratio; /* the ratio for down/up rate control */ |
158 |
int max_quantizer; // the upper limit of the quantizer |
int max_quantizer; /* the upper limit of the quantizer */ |
159 |
int min_quantizer; // the lower limit of the quantizer |
int min_quantizer; /* the lower limit of the quantizer */ |
160 |
int max_key_interval; // the maximum interval between key frames |
int max_key_interval; /* the maximum interval between key frames */ |
161 |
int use_bidirect; // use bidirectional coding |
int use_bidirect; /* use bidirectional coding */ |
162 |
int deinterlace; // fast deinterlace |
int deinterlace; /* fast deinterlace */ |
163 |
int quality; // the quality of compression ( 1 - fastest, 5 - best ) |
int quality; /* the quality of compression ( 1 - fastest, 5 - best ) */ |
164 |
int obmc; // flag to enable overlapped block motion compensation mode |
int obmc; /* flag to enable overlapped block motion compensation mode */ |
165 |
void *handle; // will be filled by encore |
void *handle; /* will be filled by encore */ |
166 |
} |
} |
167 |
ENC_PARAM; |
ENC_PARAM; |
168 |
|
|
169 |
|
|
170 |
// encore2 |
/* encore2 */ |
171 |
|
|
172 |
|
|
173 |
/** |
/** |
183 |
**/ |
**/ |
184 |
typedef struct _ENC_FRAME_ |
typedef struct _ENC_FRAME_ |
185 |
{ |
{ |
186 |
void *image; // the image frame to be encoded |
void *image; /* the image frame to be encoded */ |
187 |
void *bitstream; // the buffer for encoded bitstream |
void *bitstream; /* the buffer for encoded bitstream */ |
188 |
int length; // the length of the encoded bitstream |
int length; /* the length of the encoded bitstream */ |
189 |
int colorspace; // the format of image frame |
int colorspace; /* the format of image frame */ |
190 |
int quant; // quantizer for this frame; only used in VBR modes |
int quant; /* quantizer for this frame; only used in VBR modes */ |
191 |
int intra; // force this frame to be intra/inter; only used in VBR 2-pass |
int intra; /* force this frame to be intra/inter; only used in VBR 2-pass */ |
192 |
void *mvs; // optional pointer to array of motion vectors |
void *mvs; /* optional pointer to array of motion vectors */ |
193 |
} |
} |
194 |
ENC_FRAME; |
ENC_FRAME; |
195 |
|
|
200 |
**/ |
**/ |
201 |
typedef struct _ENC_RESULT_ |
typedef struct _ENC_RESULT_ |
202 |
{ |
{ |
203 |
int is_key_frame; // the current frame is encoded as a key frame |
int is_key_frame; /* the current frame is encoded as a key frame */ |
204 |
int quantizer; // the quantizer used for this frame |
int quantizer; /* the quantizer used for this frame */ |
205 |
int texture_bits; // amount of bits spent on coding DCT coeffs |
int texture_bits; /* amount of bits spent on coding DCT coeffs */ |
206 |
int motion_bits; // amount of bits spend on coding motion |
int motion_bits; /* amount of bits spend on coding motion */ |
207 |
int total_bits; // sum of two previous fields |
int total_bits; /* sum of two previous fields */ |
208 |
} |
} |
209 |
ENC_RESULT; |
ENC_RESULT; |
210 |
|
|
211 |
// the prototype of the encore() - main encode engine entrance |
/* the prototype of the encore() - main encode engine entrance */ |
212 |
int encore(void *handle, // handle - the handle of the calling entity, must be unique |
int encore(void *handle, /* handle - the handle of the calling entity, must be unique */ |
213 |
|
|
214 |
int enc_opt, // enc_opt - the option for encoding, see below |
int enc_opt, /* enc_opt - the option for encoding, see below */ |
215 |
|
|
216 |
void *param1, // param1 - the parameter 1 (its actually meaning depends on enc_opt |
void *param1, /* param1 - the parameter 1 (its actually meaning depends on enc_opt */ |
217 |
|
|
218 |
void *param2); // param2 - the parameter 2 (its actually meaning depends on enc_opt |
void *param2); /* param2 - the parameter 2 (its actually meaning depends on enc_opt */ |
219 |
|
|
220 |
// encore options (the enc_opt parameter of encore()) |
/* encore options (the enc_opt parameter of encore()) */ |
221 |
#define ENC_OPT_INIT 0 // initialize the encoder, return a handle |
#define ENC_OPT_INIT 0 /* initialize the encoder, return a handle */ |
222 |
#define ENC_OPT_RELEASE 1 // release all the resource associated with the handle |
#define ENC_OPT_RELEASE 1 /* release all the resource associated with the handle */ |
223 |
#define ENC_OPT_ENCODE 2 // encode a single frame |
#define ENC_OPT_ENCODE 2 /* encode a single frame */ |
224 |
#define ENC_OPT_ENCODE_VBR 3 // encode a single frame, not using internal rate control algorithm |
#define ENC_OPT_ENCODE_VBR 3 /* encode a single frame, not using internal rate control algorithm */ |
225 |
#define ENC_OPT_VERSION 4 |
#define ENC_OPT_VERSION 4 |
226 |
|
|
227 |
#define ENCORE_VERSION 20010807 |
#define ENCORE_VERSION 20010807 |
228 |
|
|
229 |
|
|
230 |
|
|
231 |
// return code of encore() |
/* return code of encore() */ |
232 |
#define ENC_FAIL -1 |
#define ENC_FAIL -1 |
233 |
#define ENC_OK 0 |
#define ENC_OK 0 |
234 |
#define ENC_MEMORY 1 |
#define ENC_MEMORY 1 |
258 |
} |
} |
259 |
#endif |
#endif |
260 |
|
|
261 |
#endif // _DIVX4_H_ |
#endif /* _DIVX4_H_ */ |