From ec249d25f978418907dd6023974b1980a9da669f Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@amazon.com> Date: Sun, 9 Jul 2023 04:16:16 -0400 Subject: [PATCH] Make hybrid CBR use VBR SILK --- src/opus_encoder.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/opus_encoder.c b/src/opus_encoder.c index 2701488d7..081d7bf4c 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -1816,7 +1816,10 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_ { if (st->mode == MODE_HYBRID) { - st->silk_mode.maxBits = IMIN(st->silk_mode.maxBits, st->silk_mode.bitRate * frame_size / st->Fs); + /* Allow SILK to steal up to 25% of the remaining bits */ + opus_int16 other_bits = IMAX(0, st->silk_mode.maxBits - st->silk_mode.bitRate * frame_size / st->Fs); + st->silk_mode.maxBits = IMAX(0, st->silk_mode.maxBits - other_bits*3/4); + st->silk_mode.useCBR = 0; } } else { /* Constrained VBR. */ -- GitLab