39 |
* |
* |
40 |
*************************************************************************/ |
*************************************************************************/ |
41 |
|
|
42 |
|
#ifndef FREEBSD |
43 |
#include <malloc.h> |
#include <malloc.h> |
44 |
|
#else |
45 |
|
#include <stdlib.h> |
46 |
|
#endif |
47 |
#include <string.h> // memset |
#include <string.h> // memset |
48 |
|
|
49 |
#include "xvid.h" |
#include "xvid.h" |
254 |
|
|
255 |
case DEC_OPT_FRAME: |
case DEC_OPT_FRAME: |
256 |
{ |
{ |
257 |
int csp_tmp; |
int csp_tmp = 0; |
258 |
|
|
259 |
DEC_FRAME * dframe = (DEC_FRAME *)param1; |
DEC_FRAME * dframe = (DEC_FRAME *)param1; |
260 |
DINST * dcur = dinst_find(key); |
DINST * dcur = dinst_find(key); |
261 |
if (dcur == NULL) |
if (dcur == NULL) |
313 |
|
|
314 |
#define FRAMERATE_INCR 1001 |
#define FRAMERATE_INCR 1001 |
315 |
|
|
316 |
|
int divx4_motion_presets[7] = { |
317 |
|
0, |
318 |
|
PMV_QUICKSTOP16, |
319 |
|
PMV_EARLYSTOP16, |
320 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, |
321 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, |
322 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, |
323 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 | PMV_HALFPELDIAMOND8 |
324 |
|
}; |
325 |
|
|
326 |
|
|
327 |
|
int divx4_general_presets[7] = { |
328 |
|
0, |
329 |
|
XVID_H263QUANT, |
330 |
|
XVID_H263QUANT, |
331 |
|
XVID_H263QUANT | XVID_HALFPEL, |
332 |
|
XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL, |
333 |
|
XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL, |
334 |
|
XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL |
335 |
|
}; |
336 |
|
|
337 |
|
int quality; |
338 |
|
|
339 |
int encore(void * handle, int opt, void * param1, void * param2) |
int encore(void * handle, int opt, void * param1, void * param2) |
340 |
{ |
{ |
341 |
int xerr; |
int xerr; |
363 |
xparam.fincr = FRAMERATE_INCR; |
xparam.fincr = FRAMERATE_INCR; |
364 |
xparam.fbase = (int)(FRAMERATE_INCR * eparam->framerate); |
xparam.fbase = (int)(FRAMERATE_INCR * eparam->framerate); |
365 |
} |
} |
366 |
xparam.bitrate = eparam->bitrate; |
xparam.rc_bitrate = eparam->bitrate; |
367 |
xparam.rc_buffersize = eparam->bitrate; |
xparam.rc_reaction_delay_factor = 16; |
368 |
|
xparam.rc_averaging_period = 100; |
369 |
|
xparam.rc_buffer = 100; |
370 |
xparam.min_quantizer = eparam->min_quantizer; |
xparam.min_quantizer = eparam->min_quantizer; |
371 |
xparam.max_quantizer = eparam->max_quantizer; |
xparam.max_quantizer = eparam->max_quantizer; |
372 |
xparam.max_key_interval = eparam->max_key_interval; |
xparam.max_key_interval = eparam->max_key_interval; |
373 |
|
quality = eparam->quality; |
374 |
|
|
375 |
xerr = encoder_create(&xparam); |
xerr = encoder_create(&xparam); |
376 |
|
|
396 |
xframe.bitstream = eframe->bitstream; |
xframe.bitstream = eframe->bitstream; |
397 |
xframe.length = eframe->length; |
xframe.length = eframe->length; |
398 |
|
|
399 |
|
xframe.motion = divx4_motion_presets[quality]; |
400 |
|
xframe.general = divx4_general_presets[quality]; |
401 |
|
|
402 |
xframe.image = eframe->image; |
xframe.image = eframe->image; |
403 |
switch (eframe->colorspace) |
switch (eframe->colorspace) |
404 |
{ |
{ |