📄 echocancel.c
字号:
/* ***********************************************************
* THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
* REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
* COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
* TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
* POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
* INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
* YOUR USE OF THE PROGRAM.
*
* IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
* CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
* THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
* OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
* EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
* REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
* OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
* USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
* AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
* YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
* (U.S.$500).
*
* Unless otherwise stated, the Program written and copyrighted
* by Texas Instruments is distributed as "freeware". You may,
* only under TI's copyright in the Program, use and modify the
* Program without any charge or restriction. You may
* distribute to third parties, provided that you transfer a
* copy of this license to the third party and the third party
* agrees to these terms by its first use of the Program. You
* must reproduce the copyright notice and any other legend of
* ownership on each copy or partial copy, of the Program.
*
* You acknowledge and agree that the Program contains
* copyrighted material, trade secrets and other TI proprietary
* information and is protected by copyright laws,
* international copyright treaties, and trade secret laws, as
* well as other intellectual property laws. To protect TI's
* rights in the Program, you agree not to decompile, reverse
* engineer, disassemble or otherwise translate any object code
* versions of the Program to a human-readable form. You agree
* that in no event will you alter, remove or destroy any
* copyright notice included in the Program. TI reserves all
* rights not specifically granted under this license. Except
* as specifically provided herein, nothing in this agreement
* shall be construed as conferring by implication, estoppel,
* or otherwise, upon you, any license or other right under any
* TI patents, copyrights or trade secrets.
*
* You may not use the Program in non-TI devices.
* ********************************************************* */
/***********************************************************************
** File Name: EchoCancel.c
** Part Number: TLV320AIC10/11EVM-SW-00004
************************************************************************
** Copyright (c) Texas Instruments, Inc. 2000
************************************************************************
**
** Release History:
** Version Date Engr Description
** 1.00 10-11-2000 Wendy X Fang Original Release
**
************************************************************************
**
** Function:
** This routine will run at KHz through main routine, that cancels
** the echo from near end speaker to microphone.
**
** far end microphone SIn(n) --------> near end speaker Tonewave(n)
** |
** h(z)
** |
** e^(n) |+
** far end speaker SOut(n) <--------+---- near end mic SL_ADC
** r(n) - e(n)
**
** (The following code need further testing -WXF).
***********************************************************************/
/***********************************************************************
** Include Statements
***********************************************************************/
#include "EchoCancel.h"
/***********************************************************************
** Function Routine
***********************************************************************/
void EchoCancel(void)
{
/******* FIR Filter Output:
e^(n) = h(0)*SIn(0)+h(1)*SIn(1)+...+h(N-1)*SIn(N-1)
*******/
EchoEst = 0;
NCount = 0;
while (NCount < FilterLength)
{
EchoEst += h[NCount]*SIn[NCount];
NCount++;
}
/******* Compute Echo Residual:
r(n) = e(n) - e^(n)
where: e(n), Echo from Near End microphone
X(n)+e(n) = SL_ADC = e(n) if X(n)=0
*******/
EchoResid = SL_ADC - (EchoEst >> 16);
/******* Get Far-End Input Power:
P = P*(N-1)/N + SIn^2/N
********/
PowerSIn = ((PowerSIn*(FilterLength-1)) >> Alpha) +
((SIn[0]*SIn[0]) >> Alpha);
/******* Update Adaptive Filter Parameter
h(n) = h(n-1) + mu*r(n)*SIn(n)/P
*******/
NCount = FilterLength - 1;
while (NCount > 0)
{
h[NCount] += Mu*EchoResid*SIn[NCount]/PowerSIn;
SIn[NCount] = SIn[NCount-1];
NCount--;
}
h[0] += Mu*EchoResid*SIn[0]/PowerSIn;
SIn[0] = ToneWave;
/****** Output to Master Speaker
SOut = EchoResid/2
*******/
SOut = (EchoResid >> 1 ); /* scaled output to far end speaker */
SOut &= 0xFFFE;
}
/***********************************************************************
** End of File -- EchoCancel.c
***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -