Boosting the high-band bitrate on transients for hybrid mode
authorJean-Marc Valin <jmvalin@jmvalin.ca>
Tue, 31 May 2016 21:54:20 +0000 (17:54 -0400)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Sun, 17 Jul 2016 19:05:54 +0000 (15:05 -0400)
celt/celt_encoder.c

index 544b7bc..7c949cc 100644 (file)
@@ -1939,10 +1939,13 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
         /* Tonal frames (offset<100) need more bits than noisy (offset>100) ones. */
         if (st->silk_info.offset < 100) target += 12 << BITRES >> (3-LM);
         if (st->silk_info.offset > 100) target -= 18 << BITRES >> (3-LM);
+        /* Boosting bitrate on transients and vowels with significant temporal
+           spikes. */
+        target += MULT16_16_Q14(tf_estimate-QCONST16(.25f,14), (50<<BITRES));
         /* If we have a strong transient, let's make sure it has enough bits to code
            the first two bands, so that it can use folding rather than noise. */
         if (tf_estimate > QCONST16(.7f,14))
-           target = IMAX(base_target, 50<<BITRES);
+           target = IMAX(target, 50<<BITRES);
      }
      /* The current offset is removed from the target and the space used
         so far is added*/