ref: 8fe8b8e0b64a162bea4e1101ec7f094389108dc1
parent: 421a628f4da8dc700682ea0b0993853bbe6fcf98
author: Jean-Marc Valin <[email protected]>
date: Thu Aug 18 11:00:59 EDT 2011
Making sure the decoder always outputs at least 2.5 ms
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -103,6 +103,7 @@
celt_decoder_ctl(celt_dec, CELT_SET_SIGNALLING(0));
st->prev_mode = 0;
+ st->frame_size = Fs/400;
return st;
failure:
free(st);
@@ -179,6 +180,8 @@
F10 = F20>>1;
F5 = F10>>1;
F2_5 = F5>>1;
+ if (frame_size < F2_5)
+ return OPUS_BUFFER_TOO_SMALL;
/* Payloads of 1 (2 including ToC) or 0 trigger the PLC/DTX */
if (len<=1)
{
@@ -194,6 +197,7 @@
ec_dec_init(&dec,(unsigned char*)data,len);
} else {
audiosize = frame_size;
+
if (st->prev_mode == 0)
{
/* If we haven't got any packet yet, all we can do is return zeros */