ref: f74bff74f6c3961eb4e3b73cd38a4aff71aff5f4
parent: d80f99f78b05154df47a348a53e45e56430cb28e
author: Jan Buethe <jbuethe@amazon.de>
date: Fri Oct 21 11:37:23 EDT 2022
aded api for DRED/RDOVAE to circumvent conflicts between Opus and LPCNet repo
--- /dev/null
+++ b/dnn/dred_rdovae.c
@@ -1,0 +1,57 @@
+#include "dred_rdovae.h"
+
+#include "dred_rdovae_enc.h"
+#include "dred_rdovae_dec.h"
+
+size_t DRED_rdovae_get_enc_size()
+{
+ return sizeof(RDOVAEEnc);
+}
+
+size_t DRED_rdovae_get_dec_size()
+{
+ return sizeof(RDOVAEDec);
+}
+
+void DRED_rdovae_init_encoder(RDOVAEEnc *enc_state)
+{
+ memset(enc_state, 0, sizeof(*enc_state));
+
+}
+
+void DRED_rdovae_init_decoder(RDOVAEDec *dec_state)
+{
+ memset(dec_state, 0, sizeof(*dec_state));
+}
+
+
+RDOVAEEnc * DRED_rdovae_create_encoder()
+{
+ RDOVAEEnc *enc;
+ enc = (RDOVAEEnc*) calloc(sizeof(*enc), 1);
+ DRED_rdovae_init_encoder(enc);
+ return enc;
+}
+
+RDOVAEEnc * DRED_rdovae_create_decoder()
+{
+ RDOVAEDec *dec;
+ dec = (RDOVAEDec*) calloc(sizeof(*dec), 1);
+ DRED_rdovae_init_encoder(dec);
+ return dec;
+}
+
+void DRED_rdovae_encode_dframe(RDOVAEEnc *enc_state, float *latents, float *initial_state, const float *input)
+{
+ dred_rdovae_encode_dframe(enc_state, latents, initial_state, input);
+}
+
+void DRED_rdovae_dec_init_states(RDOVAEDec *h, const float * initial_state)
+{
+ dred_rdovae_dec_init_states(h, initial_state);
+}
+
+void DRED_rdovae_decode_qframe(RDOVAEDec *h, float *qframe, const float *z)
+{
+ dred_rdovae_decode_qframe(h, qframe, z);
+}
\ No newline at end of file
--- a/dnn/dred_rdovae_dec.h
+++ b/dnn/dred_rdovae_dec.h
@@ -1,14 +1,15 @@
#ifndef _DRED_RDOVAE_DEC_H
#define _DRED_RDOVAE_DEC_H
+#include "dred_rdovae.h"
#include "dred_rdovae_dec_data.h"
#include "dred_rdovae_stats_data.h"
-typedef struct {
+struct RDOVAEDecStruct {
float dense2_state[DEC_DENSE2_STATE_SIZE];
float dense4_state[DEC_DENSE2_STATE_SIZE];
float dense6_state[DEC_DENSE2_STATE_SIZE];
-} RDOVAEDec;
+};
void dred_rdovae_dec_init_states(RDOVAEDec *h, const float * initial_state);
void dred_rdovae_decode_qframe(RDOVAEDec *h, float *qframe, const float * z);
--- a/dnn/dred_rdovae_enc.h
+++ b/dnn/dred_rdovae_enc.h
@@ -1,14 +1,16 @@
#ifndef _DRED_RDOVAE_ENC_H
#define _DRED_RDOVAE_ENC_H
+#include "dred_rdovae.h"
+
#include "dred_rdovae_enc_data.h"
-typedef struct {
+struct RDOVAEEncStruct {
float dense2_state[3 * ENC_DENSE2_STATE_SIZE];
float dense4_state[3 * ENC_DENSE4_STATE_SIZE];
float dense6_state[3 * ENC_DENSE6_STATE_SIZE];
float bits_dense_state[BITS_DENSE_STATE_SIZE];
-} RDOVAEEnc;
+};
void dred_rdovae_encode_dframe(RDOVAEEnc *enc_state, float *latents, float *initial_state, const float *input);
--- /dev/null
+++ b/dnn/include/dred_rdovae.h
@@ -1,0 +1,21 @@
+#include <stdlib.h>
+
+
+typedef struct RDOVAEDecStruct RDOVAEDec;
+typedef struct RDOVAEEncStruct RDOVAEEnc;
+
+size_t DRED_rdovae_get_enc_size(void);
+
+size_t DRED_rdovae_get_dec_size(void);
+
+RDOVAEEnc * DRED_rdovae_create_decoder(void);
+
+RDOVAEEnc * DRED_rdovae_create_encoder(void);
+
+void DRED_rdovae_init_encoder(RDOVAEEnc *enc_state);
+
+void DRED_rdovae_encode_dframe(RDOVAEEnc *enc_state, float *latents, float *initial_state, const float *input);
+
+void DRED_rdovae_dec_init_states(RDOVAEDec *h, const float * initial_state);
+
+void DRED_rdovae_decode_qframe(RDOVAEDec *h, float *qframe, const float * z);
\ No newline at end of file
--
⑨