fix: crash can occurs with NaN or infinte PCM inputs, and fast-math enabled

This commit is contained in:
Antoine Soulier
2024-01-10 09:17:08 -08:00
parent 834826c9d7
commit 71ffd784d5

View File

@@ -605,25 +605,27 @@ LC3_HOT static void unquantize(int lfcb_idx, int hfcb_idx,
*/
static void enum_mvpq(const int *c, int n, int *idx, bool *ls)
{
int ci, i, j;
int ci, i;
/* --- Scan for 1st significant coeff --- */
for (i = 0, c += n; (ci = *(--c)) == 0 ; i++);
for (i = 0, c += n; (ci = *(--c)) == 0 && i < 15; i++);
*idx = 0;
*ls = ci < 0;
/* --- Scan remaining coefficients --- */
for (i++, j = LC3_ABS(ci); i < n; i++, j += LC3_ABS(ci)) {
unsigned j = LC3_ABS(ci);
for (i++; i < n; i++, j += LC3_ABS(ci)) {
if ((ci = *(--c)) != 0) {
*idx = (*idx << 1) | *ls;
*ls = ci < 0;
}
*idx += lc3_sns_mpvq_offsets[i][j];
*idx += lc3_sns_mpvq_offsets[i][LC3_MIN(j, 10)];
}
}