| Index: third_party/opus/src/celt/rate.c
|
| diff --git a/third_party/opus/src/celt/rate.c b/third_party/opus/src/celt/rate.c
|
| index 7dfa5be8a639268415ea1cf46b6e49730e389496..ca4cc870eaa412f52a45f41a938282b5a0c7d4e9 100644
|
| --- a/third_party/opus/src/celt/rate.c
|
| +++ b/third_party/opus/src/celt/rate.c
|
| @@ -348,12 +348,17 @@ static OPUS_INLINE int interp_bits2pulses(const CELTMode *m, int start, int end,
|
| /*This if() block is the only part of the allocation function that
|
| is not a mandatory part of the bitstream: any bands we choose to
|
| skip here must be explicitly signaled.*/
|
| - /*Choose a threshold with some hysteresis to keep bands from
|
| - fluctuating in and out.*/
|
| + int depth_threshold;
|
| + /*We choose a threshold with some hysteresis to keep bands from
|
| + fluctuating in and out, but we try not to fold below a certain point. */
|
| + if (codedBands > 17)
|
| + depth_threshold = j<prev ? 7 : 9;
|
| + else
|
| + depth_threshold = 0;
|
| #ifdef FUZZING
|
| if ((rand()&0x1) == 0)
|
| #else
|
| - if (codedBands<=start+2 || (band_bits > ((j<prev?7:9)*band_width<<LM<<BITRES)>>4 && j<=signalBandwidth))
|
| + if (codedBands<=start+2 || (band_bits > (depth_threshold*band_width<<LM<<BITRES)>>4 && j<=signalBandwidth))
|
| #endif
|
| {
|
| ec_enc_bit_logp(ec, 1, 1);
|
|
|