From 69f44c5cea57aa2eae1edf231250ac01081d07b9 Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
Date: Wed, 7 Sep 2011 02:43:23 -0400
Subject: [PATCH] Making the encoder more robust against extreme bitrate
 requests

---
 src/opus_encoder.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index ef62b9185..1aaeb65df 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -848,6 +848,8 @@ int opus_encode_float(OpusEncoder *st, const opus_val16 *pcm, int frame_size,
     if (st->mode != MODE_SILK_ONLY)
     {
         ret = celt_encode_with_ec(celt_enc, pcm_buf, frame_size, NULL, nb_compr_bytes, &enc);
+        if (ret < 0)
+           return OPUS_INTERNAL_ERROR;
     }
 
     /* 5 ms redundant frame for SILK->CELT */
@@ -958,6 +960,8 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...)
                     goto bad_arg;
                 else if (value <= 500)
                     value = 500;
+                else if (value > (opus_int32)300000*st->channels)
+                    value = (opus_int32)300000*st->channels;
             }
             st->user_bitrate_bps = value;
         }
-- 
GitLab