summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@amazon.com>2022-12-06 18:01:53 -0500
committerJean-Marc Valin <jmvalin@amazon.com>2022-12-06 18:01:53 -0500
commit97fa4393589d00fbc541d7b7fb36c82032ab9e09 (patch)
treea4cea343563295d84fe4776a62a1319a5837a97b /src
parent9e1ee2db214da345720d619ebc82a1b03198d961 (diff)
downloadopus-97fa4393589d00fbc541d7b7fb36c82032ab9e09.tar.gz
DRED cleanup, support for variable number of frames
Diffstat (limited to 'src')
-rw-r--r--src/opus_decoder.c4
-rw-r--r--src/opus_encoder.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index 2ca93f44..ac308754 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -150,6 +150,9 @@ int opus_decoder_init(OpusDecoder *st, opus_int32 Fs, int channels)
celt_decoder_ctl(celt_dec, CELT_SET_SIGNALLING(0));
+#ifdef ENABLE_NEURAL_FEC
+ init_dred_decoder(&((silk_decoder_state*)silk_dec)->sPLC.dred_decoder);
+#endif
st->prev_mode = 0;
st->frame_size = Fs/400;
st->arch = opus_select_arch();
@@ -1089,6 +1092,7 @@ int opus_decoder_dred_input(OpusDecoder *st, const unsigned char *data,
{
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);*/
dred_decode_redundancy_package(&silk_dec->sPLC.dred_decoder, silk_dec->sPLC.fec_features, payload, payload_len);
/* Found something -- do the decoding. */
return 1;
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index 474fd04f..4354a249 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -2182,7 +2182,7 @@ opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_
#ifdef ENABLE_NEURAL_FEC
if (1) {
DREDEnc *dred = &((silk_encoder*)silk_enc)->state_Fxx[0].sCmn.dred_encoder;
- opus_extension_data extension = {127, 0, dred->ec_buffer, dred->ec_encoder.storage};
+ opus_extension_data extension = {127, 0, dred->ec_buffer, dred->ec_buffer_fill};
ret = opus_packet_pad_impl(data, ret, max_data_bytes, !st->use_vbr, &extension, 1);
if (ret < 0)
{