summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@amazon.com>2022-12-20 22:04:15 -0500
committerJean-Marc Valin <jmvalin@amazon.com>2022-12-20 22:04:15 -0500
commit032d047ae912c9350f5d0cd04903af6830d2fb4d (patch)
treed4308b7c64415a08321575cd44a8f2472006152a
parent145d0515a364e85d1f483b4606b05e0650bac793 (diff)
downloadopus-032d047ae912c9350f5d0cd04903af6830d2fb4d.tar.gz
Clear FEC buffer on new dred packet
Fixes "FEC buffer full" issue
m---------lpcnet0
-rw-r--r--src/opus_decoder.c5
2 files changed, 4 insertions, 1 deletions
diff --git a/lpcnet b/lpcnet
-Subproject dc30fbef3fe48fa9e5d87860c6b21efb02db5f4
+Subproject 0ac0d1df9a586db99b7ee00b69b3542d701c220
diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index f8de4e49..4c238a8a 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -1118,10 +1118,13 @@ int opus_decoder_dred_input(OpusDecoder *st, const unsigned char *data,
if (payload != NULL)
{
int min_feature_frames;
+ silk_decoder_state *silk_dec;
+ silk_dec = (silk_decoder_state*)((char*)st+st->silk_dec_offset);
/*printf("Found: %p of size %d\n", payload, payload_len);*/
min_feature_frames = IMIN(2 + offset, 2*DRED_NUM_REDUNDANCY_FRAMES);
st->nb_fec_frames = dred_decode_redundancy_package(&st->dred_decoder, st->fec_features, payload, payload_len, min_feature_frames);
- return 1;
+ lpcnet_plc_fec_clear(silk_dec->sPLC.lpcnet);
+ return st->nb_fec_frames;
}
return 0;
}