From 1807301b5bdcb42b1aa0eec0f8f0434b8e783221 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Thu, 4 Jul 2024 21:32:34 -0400 Subject: [PATCH] celt_sqrt() can return 32-bit value 32768 EXTEND32() would warn that the input isn't 16-bit --- celt/bands.c | 2 +- src/opus_encoder.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/celt/bands.c b/celt/bands.c index 2d22cd29d..11631ae13 100644 --- a/celt/bands.c +++ b/celt/bands.c @@ -123,7 +123,7 @@ void compute_band_energies(const CELTMode *m, const celt_sig *X, celt_ener *band } while (++jnbEBands] = 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; } diff --git a/src/opus_encoder.c b/src/opus_encoder.c index d18d582f0..07b521c90 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -798,7 +798,7 @@ opus_val16 compute_stereo_width(const opus_val16 *pcm, int frame_size, opus_int3 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 */