ref: 7b317ceb12f33499b32690762d07f5f220a321fa
parent: a6d29ed5311896e72a57495c811b4633d4caaa69
author: Jean-Marc Valin <jeanmarcv@google.com>
date: Thu Jul 4 17:32:34 EDT 2024
celt_sqrt() can return 32-bit value 32768 EXTEND32() would warn that the input isn't 16-bit
--- a/celt/bands.c
+++ b/celt/bands.c
@@ -123,7 +123,7 @@
} while (++j<eBands[i+1]<<LM);
}
/* We're adding one here to ensure the normalized band isn't larger than unity norm */
- bandE[i+c*m->nbEBands] = EPSILON+VSHR32(EXTEND32(celt_sqrt(sum)),-shift);
+ bandE[i+c*m->nbEBands] = EPSILON+VSHR32(celt_sqrt(sum),-shift);
} else {
bandE[i+c*m->nbEBands] = EPSILON;
}
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -798,7 +798,7 @@
corr = SHR32(frac_div32(mem->XY,EPSILON+MULT16_16(sqrt_xx,sqrt_yy)),16);
/* Approximate loudness difference */
ldiff = MULT16_16(Q15ONE, ABS16(qrrt_xx-qrrt_yy))/(EPSILON+qrrt_xx+qrrt_yy);
- width = MULT16_16_Q15(celt_sqrt(QCONST32(1.f,30)-MULT16_16(corr,corr)), ldiff);
+ width = MULT16_16_Q15(MIN16(Q15ONE, celt_sqrt(QCONST32(1.f,30)-MULT16_16(corr,corr))), ldiff);
/* Smoothing over one second */
mem->smoothed_width += (width-mem->smoothed_width)/frame_rate;
/* Peak follower */
--
⑨