--- trunk/vfw/src/codec.c 2002/04/08 12:51:41 109 +++ trunk/vfw/src/codec.c 2002/05/13 10:07:41 176 @@ -23,6 +23,9 @@ * * History: * + * 25.04.2002 ICDECOMPRESS_PREROLL + * 17.04.2002 re-enabled lumi masking for 1st pass + * 15.04.2002 updated cbr support * 04.04.2002 separated 2-pass code to 2pass.c * interlacing support * hinted ME support @@ -236,24 +239,26 @@ switch (codec->config.mode) { case DLG_MODE_CBR : - param.bitrate = codec->config.bitrate; - param.rc_buffersize = codec->config.rc_buffersize; + param.rc_bitrate = codec->config.rc_bitrate; + param.rc_reaction_delay_factor = codec->config.rc_reaction_delay_factor; + param.rc_averaging_period = codec->config.rc_averaging_period; + param.rc_buffer = codec->config.rc_buffer; break; case DLG_MODE_VBR_QUAL : codec->config.fquant = 0; - param.bitrate = 0; + param.rc_bitrate = 0; break; case DLG_MODE_VBR_QUANT : codec->config.fquant = (float) codec->config.quant; - param.bitrate = 0; + param.rc_bitrate = 0; break; case DLG_MODE_2PASS_1 : case DLG_MODE_2PASS_2_INT : case DLG_MODE_2PASS_2_EXT : - param.bitrate = 0; + param.rc_bitrate = 0; codec->twopass.max_framesize = (int)((double)codec->config.twopass_max_bitrate / 8.0 / ((double)codec->fbase / (double)codec->fincr)); break; @@ -280,8 +285,6 @@ param.fincr = codec->fincr; param.fbase = codec->fbase; - param.rc_buffersize = codec->config.rc_buffersize; - param.min_quantizer = codec->config.min_pquant; param.max_quantizer = codec->config.max_pquant; param.max_key_interval = codec->config.max_key_interval; @@ -363,14 +366,20 @@ frame.general |= XVID_HALFPEL; - if(codec->config.motion_search > 4) + if (codec->config.motion_search > 4) frame.general |= XVID_INTER4V; - if(((codec->config.mode == DLG_MODE_2PASS_1) ? 0 : codec->config.lum_masking) == 1) + if (codec->config.lum_masking) frame.general |= XVID_LUMIMASKING; if (codec->config.interlacing) frame.general |= XVID_INTERLACING; +// fix 1pass modes/hinted MV by koepi + if (codec->config.hinted_me && (codec->config.mode == DLG_MODE_CBR || codec->config.mode == DLG_MODE_VBR_QUAL || codec->config.mode == DLG_MODE_VBR_QUANT)) + { + codec->config.hinted_me = 0; + } +// end of ugly hack if (codec->config.hinted_me && codec->config.mode == DLG_MODE_2PASS_1) { @@ -665,7 +674,7 @@ frame.image = icd->lpOutput; frame.stride = icd->lpbiOutput->biWidth; - if (~((icd->dwFlags & ICDECOMPRESS_HURRYUP) | (icd->dwFlags & ICDECOMPRESS_UPDATE))) + if (~((icd->dwFlags & ICDECOMPRESS_HURRYUP) | (icd->dwFlags & ICDECOMPRESS_UPDATE) | (icd->dwFlags & ICDECOMPRESS_PREROLL))) { if ((frame.colorspace = get_colorspace(icd->lpbiOutput)) == XVID_CSP_NULL) {