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

This commit is contained in:
Jean-Marc Valin 2011-08-15 22:37:11 -04:00
parent 51ac8e68e6
commit 66ff26f356
2 changed files with 6 additions and 5 deletions

View file

@ -997,7 +997,7 @@ int celt_encode_with_ec_float(CELTEncoder * restrict st, const celt_sig * pcm, i
nbCompressedBytes = IMIN(nbCompressedBytes,1275); nbCompressedBytes = IMIN(nbCompressedBytes,1275);
nbAvailableBytes = nbCompressedBytes - nbFilledBytes; nbAvailableBytes = nbCompressedBytes - nbFilledBytes;
if (st->vbr) if (st->vbr && st->bitrate!=-1)
{ {
opus_int32 den=st->mode->Fs>>BITRES; opus_int32 den=st->mode->Fs>>BITRES;
vbr_rate=(st->bitrate*frame_size+(den>>1))/den; vbr_rate=(st->bitrate*frame_size+(den>>1))/den;
@ -1010,8 +1010,9 @@ int celt_encode_with_ec_float(CELTEncoder * restrict st, const celt_sig * pcm, i
tmp = st->bitrate*frame_size; tmp = st->bitrate*frame_size;
if (tell>1) if (tell>1)
tmp += tell; tmp += tell;
nbCompressedBytes = IMAX(2, IMIN(nbCompressedBytes, if (st->bitrate!=-1)
(tmp+4*st->mode->Fs)/(8*st->mode->Fs)-!!st->signalling)); nbCompressedBytes = IMAX(2, IMIN(nbCompressedBytes,
(tmp+4*st->mode->Fs)/(8*st->mode->Fs)-!!st->signalling));
effectiveBytes = nbCompressedBytes; effectiveBytes = nbCompressedBytes;
} }
@ -1806,7 +1807,7 @@ int celt_encoder_ctl(CELTEncoder * restrict st, int request, ...)
case CELT_SET_BITRATE_REQUEST: case CELT_SET_BITRATE_REQUEST:
{ {
opus_int32 value = va_arg(ap, opus_int32); opus_int32 value = va_arg(ap, opus_int32);
if (value<=500) if (value<=500 && value!=-1)
goto bad_arg; goto bad_arg;
value = IMIN(value, 260000*st->channels); value = IMIN(value, 260000*st->channels);
st->bitrate = value; st->bitrate = value;

View file

@ -479,7 +479,7 @@ int opus_encode(OpusEncoder *st, const opus_int16 *pcm, int frame_size,
if (st->mode != MODE_SILK_ONLY) if (st->mode != MODE_SILK_ONLY)
{ {
celt_encoder_ctl(celt_enc, CELT_SET_VBR(0)); 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) if (st->prev_mode == MODE_SILK_ONLY)
{ {
unsigned char dummy[10]; unsigned char dummy[10];