From 03c1d66bab516edb80deb4ef0bf266ae4ee376ff Mon Sep 17 00:00:00 2001 From: Koen Vos <koen.vos@skype.net> Date: Thu, 17 Feb 2011 16:54:44 -0500 Subject: [PATCH] SILK can't use more than 80% of the bits in hybrid mode --- src/opus_encoder.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/opus_encoder.c b/src/opus_encoder.c index c4d2aa1fa..d69a062c9 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -128,6 +128,10 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size, st->silk_mode.bitRate = ( st->silk_mode.bitRate + 9000 + st->use_vbr * 1000 ) / 2; } } + /* don't let SILK use more than 80% */ + if( st->silk_mode.bitRate > ( st->bitrate_bps - 8*st->Fs/frame_size ) * 4/5 ) { + st->silk_mode.bitRate = ( st->bitrate_bps - 8*st->Fs/frame_size ) * 4/5; + } } st->silk_mode.payloadSize_ms = 1000 * frame_size / st->Fs; @@ -162,6 +166,8 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size, } else if( st->silk_mode.internalSampleRate == 16000 ) { silk_internal_bandwidth = BANDWIDTH_WIDEBAND; } + } else { + SKP_assert( st->silk_mode.internalSampleRate == 16000 ); } } -- GitLab