comparison aacsbr.c @ 12156:b1c9654b8d68 libavcodec

aacsbr: Eliminate double precision arithmetic.
author alexc
date Tue, 13 Jul 2010 00:49:30 +0000
parents 8c657be75c11
children
comparison
equal deleted inserted replaced
12155:7f8b11d9c831 12156:b1c9654b8d68
1578 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) { 1578 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) {
1579 sum[0] += sbr->e_origmapped[e][m]; 1579 sum[0] += sbr->e_origmapped[e][m];
1580 sum[1] += sbr->e_curr[e][m]; 1580 sum[1] += sbr->e_curr[e][m];
1581 } 1581 }
1582 gain_max = limgain[sbr->bs_limiter_gains] * sqrtf((FLT_EPSILON + sum[0]) / (FLT_EPSILON + sum[1])); 1582 gain_max = limgain[sbr->bs_limiter_gains] * sqrtf((FLT_EPSILON + sum[0]) / (FLT_EPSILON + sum[1]));
1583 gain_max = FFMIN(100000, gain_max); 1583 gain_max = FFMIN(100000.f, gain_max);
1584 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) { 1584 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) {
1585 float q_m_max = sbr->q_m[e][m] * gain_max / sbr->gain[e][m]; 1585 float q_m_max = sbr->q_m[e][m] * gain_max / sbr->gain[e][m];
1586 sbr->q_m[e][m] = FFMIN(sbr->q_m[e][m], q_m_max); 1586 sbr->q_m[e][m] = FFMIN(sbr->q_m[e][m], q_m_max);
1587 sbr->gain[e][m] = FFMIN(sbr->gain[e][m], gain_max); 1587 sbr->gain[e][m] = FFMIN(sbr->gain[e][m], gain_max);
1588 } 1588 }
1592 sum[1] += sbr->e_curr[e][m] * sbr->gain[e][m] * sbr->gain[e][m] 1592 sum[1] += sbr->e_curr[e][m] * sbr->gain[e][m] * sbr->gain[e][m]
1593 + sbr->s_m[e][m] * sbr->s_m[e][m] 1593 + sbr->s_m[e][m] * sbr->s_m[e][m]
1594 + (delta && !sbr->s_m[e][m]) * sbr->q_m[e][m] * sbr->q_m[e][m]; 1594 + (delta && !sbr->s_m[e][m]) * sbr->q_m[e][m] * sbr->q_m[e][m];
1595 } 1595 }
1596 gain_boost = sqrtf((FLT_EPSILON + sum[0]) / (FLT_EPSILON + sum[1])); 1596 gain_boost = sqrtf((FLT_EPSILON + sum[0]) / (FLT_EPSILON + sum[1]));
1597 gain_boost = FFMIN(1.584893192, gain_boost); 1597 gain_boost = FFMIN(1.584893192f, gain_boost);
1598 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) { 1598 for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) {
1599 sbr->gain[e][m] *= gain_boost; 1599 sbr->gain[e][m] *= gain_boost;
1600 sbr->q_m[e][m] *= gain_boost; 1600 sbr->q_m[e][m] *= gain_boost;
1601 sbr->s_m[e][m] *= gain_boost; 1601 sbr->s_m[e][m] *= gain_boost;
1602 } 1602 }