shithub: opus

Download patch

ref: 66ff26f3565820ce8acea5511a0a6ae7b1246a78
parent: 51ac8e68e660e22b444e85d345e73e4d8c844c8f
author: Jean-Marc Valin <[email protected]>
date: Mon Aug 15 18:37:11 EDT 2011

Define CELT bitrate=-1 as "unlimited" (i.e. all bytes given)

--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -997,7 +997,7 @@
    nbCompressedBytes = IMIN(nbCompressedBytes,1275);
    nbAvailableBytes = nbCompressedBytes - nbFilledBytes;
 
-   if (st->vbr)
+   if (st->vbr && st->bitrate!=-1)
    {
       opus_int32 den=st->mode->Fs>>BITRES;
       vbr_rate=(st->bitrate*frame_size+(den>>1))/den;
@@ -1010,8 +1010,9 @@
       tmp = st->bitrate*frame_size;
       if (tell>1)
          tmp += tell;
-      nbCompressedBytes = IMAX(2, IMIN(nbCompressedBytes,
-            (tmp+4*st->mode->Fs)/(8*st->mode->Fs)-!!st->signalling));
+      if (st->bitrate!=-1)
+         nbCompressedBytes = IMAX(2, IMIN(nbCompressedBytes,
+               (tmp+4*st->mode->Fs)/(8*st->mode->Fs)-!!st->signalling));
       effectiveBytes = nbCompressedBytes;
    }
 
@@ -1806,7 +1807,7 @@
       case CELT_SET_BITRATE_REQUEST:
       {
          opus_int32 value = va_arg(ap, opus_int32);
-         if (value<=500)
+         if (value<=500 && value!=-1)
             goto bad_arg;
          value = IMIN(value, 260000*st->channels);
          st->bitrate = value;
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -479,7 +479,7 @@
     if (st->mode != MODE_SILK_ONLY)
     {
         celt_encoder_ctl(celt_enc, CELT_SET_VBR(0));
-        celt_encoder_ctl(celt_enc, CELT_SET_BITRATE(510000));
+        celt_encoder_ctl(celt_enc, CELT_SET_BITRATE(-1));
         if (st->prev_mode == MODE_SILK_ONLY)
         {
             unsigned char dummy[10];