[MPlayer-dev-eng] XviD B-Frame CBR and FQ encoding bugfix
Martin Drab
drab at kepler.fjfi.cvut.cz
Wed Apr 2 13:00:04 CEST 2003
Hi,
I'm sending a bugfix for XviD frame encoding. In fact there are two
bugfixes, both are related to encoding B-Frames.
First fixes the choice between CBR and Fixed Quantizer during setting of
the parameters for the XviD VBR engine. The condition was totally wrong.
Second fixes the setting of the quantizer parameter for the XviD VBR
engine during CBR frame encoding. It has to be set to 0 (and not -1) in
order for the XviD VBR engine to fill in the correct calculated value.
The patch can be applied to both CVS and 0.90 release.
Martin Drab
-------------- next part --------------
diff -Naur Mplayer.orig/libmpcodecs/ve_xvid.c Mplayer.fix/libmpcodecs/ve_xvid.c
--- Mplayer.orig/libmpcodecs/ve_xvid.c 2003-01-19 02:48:52.000000000 +0100
+++ Mplayer.fix/libmpcodecs/ve_xvid.c 2003-03-29 01:35:38.000000000 +0100
@@ -388,14 +388,15 @@
// get quantizers & I/P decision from the VBR engine
#ifdef XVID_API_UNSTABLE
if (xvidenc_max_bframes >= 1) {
- if (!xvidenc_fixed_quant) {
+ if (xvidenc_fixed_quant > 0) {
// hack, the internal VBR engine isn't fixed-quant aware
fp->enc_frame.quant = xvidenc_fixed_quant;
fp->enc_frame.intra = -1;
fp->enc_frame.bquant = (xvidenc_fixed_quant * xvidenc_bquant_ratio + xvidenc_bquant_offset) / 100;
} else
// use the internal VBR engine since the external one isn't bframe aware
- fp->enc_frame.quant = fp->enc_frame.intra = fp->enc_frame.bquant = -1;
+ fp->enc_frame.quant = 0;
+ fp->enc_frame.intra = fp->enc_frame.bquant = -1;
} else {
fp->enc_frame.quant = vbrGetQuant(&fp->vbr_state);
fp->enc_frame.intra = vbrGetIntra(&fp->vbr_state);
More information about the MPlayer-dev-eng
mailing list