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];