📄 decodeacelp.dsp
字号:
/************************************************************************/
/* $$01/10/2000 checked decode ACELP module data function */
/* $$01/16/2001 modified and printed,Author: Jason.wang (zhigang wang) */
/* $$01/16/2001 Email: wzg119@yeah.net, BP: 86+02195950-161452 */
/* $$01/16/2001 This modlue is not optimized! should be test on Emulator*/
/************************************************************************/
.MODULE/SEG=App_PM DecodeAcelp;
/************************************************************************/
#include "ld8a.inc"
/************************************************************************
* Algebraic codebook decoder. *
* $$01/10/2000 used only in decoder *
* Calling Parameters *
* MR0 : signs of 4 pulses. *
* MR1 : Positions of the 4 pulses. *
* Return Values *
* I1 : Q13 algebraic (fixed) codebook excitation *
* Altered Registers: MR,SR,SE,AR,AF,I0,I1,I2,AY0 *
* Computation Time : 18 cycles *
*************************************************************************/
.ENTRY Decode_ACELP;
.VAR/DM/RAM/SEG=App_DMbuf posi[4];
Decode_ACELP: SE=-3;
I0=^posi;
AF=PASS H#0007;
{------------Decode the positions---------------------}
AR=MR1 AND AF;
SR=ASHIFT AR BY 2(LO);
SR=ASHIFT MR1 (LO),AY0=SR0;
AR=AR+AY0,MR1=SR0;
AR=MR1 AND AF,DM(I0,M1)=AR;
SR=ASHIFT AR BY 2(LO);
SR=ASHIFT MR1 (LO),AY0=SR0;
AR=AR+AY0,MR1=SR0;
AR=AR+1;
AR=MR1 AND AF,DM(I0,M1)=AR;
SR=ASHIFT AR BY 2(LO);
SR=ASHIFT MR1 (LO),AY0=SR0;
AR=AR+AY0,MR1=SR0;
AR=AR+2;
SE=-1;
SR=ASHIFT MR1 (LO),DM(I0,M1)=AR;
AR=MR1 AND H#0001;
AR=SR0 AND AF,AY0=AR;
SR=ASHIFT AR BY 2(LO);
AF=PASS AY0,AY0=SR0;
AR=AR+AY0;
AR=AR+3;
AR=AR+AF;
{------------decode the signs and build the codeword--------}
I2=I1;
DM(I0,M1)=AR;
CNTR=L_SUBFR;
DO zero_code UNTIL CE;
zero_code: DM(I2,M1)=0;
nop;
I0=^posi;
CNTR=4;
DO build_word UNTIL CE;
AR=MR0 AND H#0001;
SR=ASHIFT MR0 (LO),AY0=DM(I0,M1);
AF=PASS AR,MR0=SR0;
AR=H#1FFF;
IF EQ AR=PASS H#E000;
I2=I1;
M3=AY0;
MODIFY(I2,M3);
build_word: DM(I2,M1)=AR;
RTS;
/************************************************************************/
.ENDMOD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -