Forced intra now overrides intra avoidance at low rate. Also, using the number

of bands as criterion for auto-intra disabling.
This commit is contained in:
Jean-Marc Valin 2009-06-16 22:27:12 -04:00
parent a20500db0b
commit 5b9b51bc44

View file

@ -676,14 +676,12 @@ int celt_encode_float(CELTEncoder * restrict st, const celt_sig_t * pcm, celt_si
for (i=0;i<st->mode->nbEBands*C;i++) for (i=0;i<st->mode->nbEBands*C;i++)
bandLogE[i] = amp2Log(bandE[i]); bandLogE[i] = amp2Log(bandE[i]);
intra_ener = (st->force_intra || st->delayedIntra); /* Don't use intra energy when we're operating at low bit-rate */
intra_ener = st->force_intra || (st->delayedIntra && nbCompressedBytes > st->mode->nbEBands);
if (shortBlocks || intra_decision(bandLogE, st->oldBandE, st->mode->nbEBands)) if (shortBlocks || intra_decision(bandLogE, st->oldBandE, st->mode->nbEBands))
st->delayedIntra = 1; st->delayedIntra = 1;
else else
st->delayedIntra = 0; st->delayedIntra = 0;
/* Don't use intra energy when we're operating at low bit-rate */
if (nbCompressedBytes < 20)
intra_ener = 0;
/* Pitch analysis: we do it early to save on the peak stack space */ /* Pitch analysis: we do it early to save on the peak stack space */
/* Don't use pitch if there isn't enough data available yet, /* Don't use pitch if there isn't enough data available yet,