shithub: opus

Download patch

ref: 5b9b51bc44d105e48796b455676c68efdd33d807
parent: a20500db0b694ebc3c24e72b72031f57abe42518
author: Jean-Marc Valin <[email protected]>
date: Tue Jun 16 18:27:12 EDT 2009

Forced intra now overrides intra avoidance at low rate. Also, using the number
of bands as criterion for auto-intra disabling.

--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -676,14 +676,12 @@
    for (i=0;i<st->mode->nbEBands*C;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))
       st->delayedIntra = 1;
    else
       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 */
    /* Don't use pitch if there isn't enough data available yet,