ref: c8a3659265964ea81ae664d80adbe28cd4528dad
parent: 71d5edcffbf520792a4e11959945735a0f9822e7
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon May 15 11:35:03 EDT 2023
No longer include pointers in the SILK structs Everything can now be shallow-copied again
--- a/silk/dred_config.h
+++ b/silk/dred_config.h
@@ -25,6 +25,9 @@
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#ifndef DRED_CONFIG_H
+#define DRED_CONFIG_H
+
#define DRED_VERSION 0
#define DRED_MIN_BYTES 16
@@ -32,7 +35,6 @@
#define DRED_NUM_FEATURES 20
#define DRED_LATENT_DIM 80
#define DRED_STATE_DIM 24
-#define DRED_NUM_QUANTIZATION_LEVELS 40
#define DRED_MAX_FRAMES 100
#define DRED_SILK_ENCODER_DELAY 79
#define DRED_FRAME_SIZE 160
@@ -41,3 +43,5 @@
#define DRED_ENC_Q0 9
#define DRED_ENC_Q1 15
#define DRED_NUM_REDUNDANCY_FRAMES 50
+
+#endif
--- a/silk/dred_encoder.c
+++ b/silk/dred_encoder.c
@@ -45,8 +45,8 @@
void init_dred_encoder(DREDEnc* enc)
{
memset(enc, 0, sizeof(*enc));
- enc->lpcnet_enc_state = lpcnet_encoder_create();
- enc->rdovae_enc = DRED_rdovae_create_encoder();
+ lpcnet_encoder_init(&enc->lpcnet_enc_state);
+ DRED_rdovae_init_encoder(&enc->rdovae_enc);
}
void dred_process_silk_frame(DREDEnc *enc, const opus_int16 *silk_frame)
@@ -62,8 +62,8 @@
memmove(enc->latents_buffer + DRED_LATENT_DIM, enc->latents_buffer, (DRED_MAX_FRAMES - 1) * DRED_LATENT_DIM * sizeof(*enc->latents_buffer));
/* calculate LPCNet features */
- lpcnet_compute_single_frame_features(enc->lpcnet_enc_state, enc->input_buffer, feature_buffer);
- lpcnet_compute_single_frame_features(enc->lpcnet_enc_state, enc->input_buffer + DRED_FRAME_SIZE, feature_buffer + 36);
+ lpcnet_compute_single_frame_features(&enc->lpcnet_enc_state, enc->input_buffer, feature_buffer);
+ lpcnet_compute_single_frame_features(&enc->lpcnet_enc_state, enc->input_buffer + DRED_FRAME_SIZE, feature_buffer + 36);
/* prepare input buffer (discard LPC coefficients) */
memcpy(input_buffer, feature_buffer, DRED_NUM_FEATURES * sizeof(input_buffer[0]));
@@ -70,7 +70,7 @@
memcpy(input_buffer + DRED_NUM_FEATURES, feature_buffer + 36, DRED_NUM_FEATURES * sizeof(input_buffer[0]));
/* run RDOVAE encoder */
- DRED_rdovae_encode_dframe(enc->rdovae_enc, enc->latents_buffer, enc->state_buffer, input_buffer);
+ DRED_rdovae_encode_dframe(&enc->rdovae_enc, enc->latents_buffer, enc->state_buffer, input_buffer);
enc->latents_buffer_fill = IMIN(enc->latents_buffer_fill+1, DRED_NUM_REDUNDANCY_FRAMES);
}
--- a/silk/dred_encoder.h
+++ b/silk/dred_encoder.h
@@ -32,16 +32,17 @@
#include "dred_config.h"
#include "dred_rdovae.h"
#include "entcode.h"
+#include "lpcnet/src/lpcnet_private.h"
+#include "lpcnet/src/dred_rdovae_enc.h"
-
typedef struct {
opus_int16 input_buffer[DRED_DFRAME_SIZE + DRED_SILK_ENCODER_DELAY];
float latents_buffer[DRED_MAX_FRAMES * DRED_LATENT_DIM];
int latents_buffer_fill;
float state_buffer[24];
- LPCNetEncState *lpcnet_enc_state;
- RDOVAEEnc *rdovae_enc;
+ LPCNetEncState lpcnet_enc_state;
+ RDOVAEEnc rdovae_enc;
} DREDEnc;
--
⑨