shithub: opus

Download patch

ref: 74c67a8df5c588fd733820eb2f5f3ff59de0e4a3
parent: da60266f6e11cb8d2d28aafa8ea05e5dadf3e8b6
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon Oct 30 13:14:43 EDT 2023

Fix CELT PLC for single packet between losses

Avoids switching to CNG unless we just have a "refresh packet"

--- a/celt/celt_decoder.c
+++ b/celt/celt_decoder.c
@@ -708,6 +708,8 @@
 
       celt_synthesis(mode, X, out_syn, oldBandE, start, effEnd, C, C, 0, LM, st->downsample, 0, st->arch);
       st->prefilter_and_fold = 0;
+      /* Skip regular PLC until we get two consecutive packets. */
+      st->skip_plc = 1;
    } else {
       int exc_length;
       /* Pitch-based PLC */
@@ -1118,7 +1120,7 @@
 
    /* Check if there are at least two packets received consecutively before
     * turning on the pitch-based PLC */
-   st->skip_plc = st->loss_duration != 0;
+   if (st->loss_duration == 0) st->skip_plc = 0;
 
    if (dec == NULL)
    {
--