From 579c9d6b0ec2e96d47c9c5245f4b1eb2cc45ada9 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@amazon.com> Date: Tue, 20 Dec 2022 22:04:15 -0500 Subject: [PATCH] Clear FEC buffer on new dred packet Fixes "FEC buffer full" issue --- lpcnet | 2 +- src/opus_decoder.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lpcnet b/lpcnet index dc30fbef3..0ac0d1df9 160000 --- a/lpcnet +++ b/lpcnet @@ -1 +1 @@ -Subproject commit dc30fbef3fe48fa9e5d87860c6b21efb02db5f45 +Subproject commit 0ac0d1df9a586db99b7ee00b69b3542d701c220e diff --git a/src/opus_decoder.c b/src/opus_decoder.c index f8de4e490..4c238a8ac 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; } -- GitLab