[an error occurred while processing this directive]
|
float CEchoCancel::Process (float near_end, float far_end)
{
float Result;
float r = 0.0;
float uen = 0.0;
int i;
//Dcnfdbkb d ,eaath
*hFarEndBuffer = far_end;
*hNearEndBuffer = near_end;
//прошли через КИХ
for (i = 0; i < Taps; i++)
r += *(hCoeff + i) * *(hFarEndBuffer + i);
//посчитали ошибку
Result = *hNearEndBuffer - r;
//получили коэффициент адоптации
uen = Mu * Result;
//сделали обновление коэффициентов LMS
for (i = 0; i < Taps; i++)
{
*hCoeff = uen * *(hCoeff + i) * *(hFarEndBuffer + i);
}
//Сдвинули буффер
for (i = Taps - 1; i > 0; i--)
{
*hFarEndBuffer = *(hFarEndBuffer + i -1);
}
//вернули результат
return Result;
}
E-mail: info@telesys.ru