⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decodeacelp.dsp

📁 基于ADSP的G.729语音编解码程序
💻 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 + -