251 |
|
|
252 |
case DEC_OPT_FRAME: |
case DEC_OPT_FRAME: |
253 |
{ |
{ |
254 |
int csp_tmp; |
int csp_tmp = 0; |
255 |
|
|
256 |
DEC_FRAME * dframe = (DEC_FRAME *)param1; |
DEC_FRAME * dframe = (DEC_FRAME *)param1; |
257 |
DINST * dcur = dinst_find(key); |
DINST * dcur = dinst_find(key); |
258 |
if (dcur == NULL) |
if (dcur == NULL) |
310 |
|
|
311 |
#define FRAMERATE_INCR 1001 |
#define FRAMERATE_INCR 1001 |
312 |
|
|
313 |
|
int divx4_motion_presets[7] = { |
314 |
|
0, PMV_QUICKSTOP16, PMV_EARLYSTOP16, PMV_EARLYSTOP16 | PMV_EARLYSTOP8, |
315 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, |
316 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, |
317 |
|
PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | |
318 |
|
PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 | PMV_HALFPELDIAMOND8 |
319 |
|
}; |
320 |
|
|
321 |
|
int quality; |
322 |
|
|
323 |
int encore(void * handle, int opt, void * param1, void * param2) |
int encore(void * handle, int opt, void * param1, void * param2) |
324 |
{ |
{ |
325 |
int xerr; |
int xerr; |
348 |
xparam.fbase = (int)(FRAMERATE_INCR * eparam->framerate); |
xparam.fbase = (int)(FRAMERATE_INCR * eparam->framerate); |
349 |
} |
} |
350 |
xparam.bitrate = eparam->bitrate; |
xparam.bitrate = eparam->bitrate; |
351 |
xparam.rc_buffersize = eparam->bitrate; |
xparam.rc_buffersize = 16; |
352 |
xparam.min_quantizer = eparam->min_quantizer; |
xparam.min_quantizer = eparam->min_quantizer; |
353 |
xparam.max_quantizer = eparam->max_quantizer; |
xparam.max_quantizer = eparam->max_quantizer; |
354 |
xparam.max_key_interval = eparam->max_key_interval; |
xparam.max_key_interval = eparam->max_key_interval; |
355 |
|
quality = eparam->quality; |
356 |
|
|
357 |
xerr = encoder_create(&xparam); |
xerr = encoder_create(&xparam); |
358 |
|
|
378 |
xframe.bitstream = eframe->bitstream; |
xframe.bitstream = eframe->bitstream; |
379 |
xframe.length = eframe->length; |
xframe.length = eframe->length; |
380 |
|
|
381 |
|
xframe.general = XVID_HALFPEL | XVID_H263QUANT; |
382 |
|
|
383 |
|
if(quality > 3) |
384 |
|
xframe.general |= XVID_INTER4V; |
385 |
|
|
386 |
|
xframe.motion = divx4_motion_presets[quality]; |
387 |
|
|
388 |
xframe.image = eframe->image; |
xframe.image = eframe->image; |
389 |
switch (eframe->colorspace) |
switch (eframe->colorspace) |
390 |
{ |
{ |