shithub: opus

Download patch

ref: 0c6c569cabe696ab8042ed4ac71823d9d3d8152b
parent: a81a620d99bdb66bea020c9cc791ecabb6505539
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Sun May 14 22:40:56 EDT 2023

Decode RDO-VAE from stack-allocated state

--- a/dnn/dred_rdovae.c
+++ b/dnn/dred_rdovae.c
@@ -35,6 +35,21 @@
 #include "dred_rdovae_dec.h"
 #include "dred_rdovae_stats_data.h"
 
+void DRED_rdovae_decode_all(float *features, const float *state, const float *latents, int nb_latents)
+{
+    int i;
+    RDOVAEDec dec;
+    memset(&dec, 0, sizeof(dec));
+    DRED_rdovae_dec_init_states(&dec, state);
+    for (i = 0; i < 2*nb_latents; i += 2)
+    {
+        DRED_rdovae_decode_qframe(
+            &dec,
+            &features[2*i*DRED_NUM_FEATURES],
+            &latents[(i/2)*DRED_LATENT_DIM]);
+    }
+}
+
 size_t DRED_rdovae_get_enc_size()
 {
     return sizeof(RDOVAEEnc);
@@ -117,4 +132,4 @@
 const opus_uint16 * DRED_rdovae_get_quant_scales_pointer(void)
 {
     return &dred_quant_scales_q8[0];
-}
\ No newline at end of file
+}
--- a/dnn/include/dred_rdovae.h
+++ b/dnn/include/dred_rdovae.h
@@ -33,6 +33,9 @@
 typedef struct RDOVAEDecStruct RDOVAEDec;
 typedef struct RDOVAEEncStruct RDOVAEEnc;
 
+void DRED_rdovae_decode_all(float *features, const float *state, const float *latents, int nb_latents);
+
+
 size_t DRED_rdovae_get_enc_size(void);
 
 size_t DRED_rdovae_get_dec_size(void);
--