shithub: opus

Download patch

ref: 4d269fc90e6f4cd493193cc09145f44cd25c474c
parent: 38e08cf7de429dbfbee120409bd8583423f26ca7
author: Jean-Marc Valin <jeanmarcv@google.com>
date: Fri Jun 6 12:08:47 EDT 2025

Saturate dc_reject() input to prevent wrap-around

--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -457,7 +457,9 @@
       for (i=0;i<len;i++)
       {
          opus_val32 x, y;
-         x = SHL32((opus_val32)in[channels*i+c], 14-RES_SHIFT);
+         /* Saturate at +6 dBFS to avoid any wrap-around. */
+         x = SATURATE((opus_val32)in[channels*i+c], (1<<16<<RES_SHIFT)-1);
+         x = SHL32(x, 14-RES_SHIFT);
          y = x-hp_mem[2*c];
          hp_mem[2*c] = hp_mem[2*c] + PSHR32(x - hp_mem[2*c], shift);
 #ifdef ENABLE_RES24
--