comparison acelp_pitch_delay.c @ 7186:ff5ef7becd94 libavcodec

make sum_of_squares() more generic
author michael
date Thu, 03 Jul 2008 11:50:44 +0000
parents 04da42c2b7b4
children ecb1962c12f3
comparison
equal deleted inserted replaced
7185:82ab987bca8a 7186:ff5ef7becd94
101 101
102 for(i=0; i<ma_pred_order; i++) 102 for(i=0; i<ma_pred_order; i++)
103 mr_energy += quant_energy[i] * ma_prediction_coeff[i]; 103 mr_energy += quant_energy[i] * ma_prediction_coeff[i];
104 104
105 #ifdef G729_BITEXACT 105 #ifdef G729_BITEXACT
106 mr_energy += (((-6165LL * ff_log2(sum_of_squares(fc_v, subframe_size, 0, 0))) >> 3) & ~0x3ff); 106 mr_energy += (((-6165LL * ff_log2(dot_product(fc_v, fc_v, subframe_size, 0))) >> 3) & ~0x3ff);
107 107
108 mr_energy = (5439 * (mr_energy >> 15)) >> 8; // (0.15) = (0.15) * (7.23) 108 mr_energy = (5439 * (mr_energy >> 15)) >> 8; // (0.15) = (0.15) * (7.23)
109 109
110 return bidir_sal( 110 return bidir_sal(
111 ((ff_exp2(mr_energy & 0x7fff) + 16) >> 5) * (gain_corr_factor >> 1), 111 ((ff_exp2(mr_energy & 0x7fff) + 16) >> 5) * (gain_corr_factor >> 1),
112 (mr_energy >> 15) - 25 112 (mr_energy >> 15) - 25
113 ); 113 );
114 #else 114 #else
115 mr_energy = gain_corr_factor * exp(M_LN10 / (20 << 23) * mr_energy) / 115 mr_energy = gain_corr_factor * exp(M_LN10 / (20 << 23) * mr_energy) /
116 sqrt(sum_of_squares(fc_v, subframe_size, 0, 0)); 116 sqrt(dot_product(fc_v, fc_v, subframe_size, 0));
117 return mr_energy >> 12; 117 return mr_energy >> 12;
118 #endif 118 #endif
119 } 119 }