diff --git a/src/opus_encoder.c b/src/opus_encoder.c index c151fd078b08e862a93a1ecf688d193e97d22806..f6f0ce5c3ad162e7a0fa67ed28d98b85b8549f1d 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -759,6 +759,11 @@ int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs, #endif #ifndef DISABLE_FLOAT_API +#ifdef FIXED_POINT +#define PCM2VAL(x) FLOAT2INT16(x) +#else +#define PCM2VAL(x) SCALEIN(x) +#endif void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C) { const float *x; @@ -766,18 +771,18 @@ void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, in int j; x = (const float *)_x; for (j=0;j<subframe;j++) - sub[j] = SCALEIN(x[(j+offset)*C+c1]); + sub[j] = PCM2VAL(x[(j+offset)*C+c1]); if (c2>-1) { for (j=0;j<subframe;j++) - sub[j] += SCALEIN(x[(j+offset)*C+c2]); + sub[j] += PCM2VAL(x[(j+offset)*C+c2]); } else if (c2==-2) { int c; for (c=1;c<C;c++) { for (j=0;j<subframe;j++) - sub[j] += SCALEIN(x[(j+offset)*C+c]); + sub[j] += PCM2VAL(x[(j+offset)*C+c]); } } #ifdef FIXED_POINT