--- divx4.c 2002/03/08 22:26:15 1.3 +++ divx4.c 2002/04/27 23:51:59 1.8 @@ -39,8 +39,11 @@ * *************************************************************************/ - +#ifndef FREEBSD #include +#else +#include +#endif #include // memset #include "xvid.h" @@ -251,7 +254,8 @@ case DEC_OPT_FRAME: { - int csp_tmp; + int csp_tmp = 0; + DEC_FRAME * dframe = (DEC_FRAME *)param1; DINST * dcur = dinst_find(key); if (dcur == NULL) @@ -310,11 +314,24 @@ #define FRAMERATE_INCR 1001 int divx4_motion_presets[7] = { - 0, PMV_QUICKSTOP16, PMV_EARLYSTOP16, PMV_EARLYSTOP16 | PMV_EARLYSTOP8, + 0, + PMV_QUICKSTOP16, + PMV_EARLYSTOP16, + PMV_EARLYSTOP16 | PMV_HALFPELREFINE16, PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELDIAMOND8, - PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | - PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 | PMV_HALFPELDIAMOND8 + PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EXTSEARCH16 | PMV_EARLYSTOP8 | PMV_HALFPELREFINE8 | PMV_HALFPELDIAMOND8 +}; + + +int divx4_general_presets[7] = { + 0, + XVID_H263QUANT, + XVID_H263QUANT, + XVID_H263QUANT | XVID_HALFPEL, + XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL, + XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL, + XVID_H263QUANT | XVID_INTER4V | XVID_HALFPEL }; int quality; @@ -346,8 +363,10 @@ xparam.fincr = FRAMERATE_INCR; xparam.fbase = (int)(FRAMERATE_INCR * eparam->framerate); } - xparam.bitrate = eparam->bitrate; - xparam.rc_buffersize = 10 * eparam->bitrate; + xparam.rc_bitrate = eparam->bitrate; + xparam.rc_reaction_delay_factor = 16; + xparam.rc_averaging_period = 100; + xparam.rc_buffer = 100; xparam.min_quantizer = eparam->min_quantizer; xparam.max_quantizer = eparam->max_quantizer; xparam.max_key_interval = eparam->max_key_interval; @@ -377,12 +396,8 @@ xframe.bitstream = eframe->bitstream; xframe.length = eframe->length; - xframe.general = XVID_HALFPEL | XVID_H263QUANT; - - if(quality > 3) - xframe.general |= XVID_INTER4V; - xframe.motion = divx4_motion_presets[quality]; + xframe.general = divx4_general_presets[quality]; xframe.image = eframe->image; switch (eframe->colorspace)