shithub: opus

Download patch

ref: 93d0ef5b2e7c8d7d6288eb1fe0c334e63643eb2e
parent: 3b147202eed3ce461f4be25dce0dfdf127284062
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Fri Jun 16 09:49:15 EDT 2023

Making DRED encoder run for CELT too

--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -1469,10 +1469,6 @@
     {
         silk_EncControlStruct dummy;
         silk_InitEncoder( silk_enc, st->arch, &dummy);
-#ifdef ENABLE_NEURAL_FEC
-        /* Initialize DRED Encoder */
-        dred_encoder_reset( &st->dred_encoder );
-#endif
         prefill=1;
     }
 
@@ -1686,6 +1682,14 @@
     }
 #endif
 
+#ifdef ENABLE_NEURAL_FEC
+    if ( st->dred_duration > 0 ) {
+        /* DRED Encoder */
+        dred_compute_latents( &st->dred_encoder, &pcm_buf[total_buffer*st->channels], frame_size );
+    } else {
+        st->dred_encoder.latents_buffer_fill = 0;
+    }
+#endif
 
     /* SILK processing */
     HB_gain = Q15ONE;
@@ -1826,15 +1830,6 @@
            }
         }
 
-#ifdef ENABLE_NEURAL_FEC
-            if ( st->dred_duration > 0 ) {
-                /* DRED Encoder */
-                dred_compute_latents( &st->dred_encoder, &pcm_buf[total_buffer*st->channels], frame_size );
-            } else {
-                st->dred_encoder.latents_buffer_fill = 0;
-            }
-#endif
-
         if (prefill)
         {
             opus_int32 zero=0;
@@ -1905,13 +1900,6 @@
            celt_to_silk = 0;
            st->silk_bw_switch = 1;
         }
-    } else {
-#ifdef ENABLE_NEURAL_FEC
-        /* If we're not in SILK mode, delete all the processed DRED.
-           TODO: Remove this if/when DRED gets encoded for CELT. */
-        DREDEnc *dred = &st->dred_encoder;
-        dred->latents_buffer_fill = 0;
-#endif
     }
 
     /* CELT processing */
--