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

📄 decodelag.dsp

📁 基于ADSP的G.729语音编解码程序
💻 DSP
字号:
/************************************************************************/
/* $$01/10/2000 checked decode pitch lag module data and 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        Decodelag;

/************************************************************************/
#include       "ld8a.inc"

/*************************************************************************
* Decoding of fractional pitch lag with 1/3 resolution.                  *
* See "Enc_lag3.c" for more details about the encoding procedure.        *
* $$01/10/2000 used only in decoder                                      *
* $$01/11/2000 modify pointer and varaibles to adapt table change        *
* Calling Parameters													 *	
*       AX0 : received pitch index						    			 *
*       AY0 : minimum pitch lag										     *
*       AY1 : maximum pitch lag										     *
*       AX1 : subframe flag											     *
* Return Values														 	 *
*       MR1 : integer part of pitch lag								     *
*       AR  : fractional part of pitch lag							     *
* Altered Registers: MR,SR,AR,AF,AX0,AX1,AY0,AY1,MY0                     *	
* Computation Time : 18 cycles											 *	
**************************************************************************/
.ENTRY		   Dec_lag3;

Dec_lag3:	   AR=PASS AX1;
			   IF NE JUMP second_frame;
first_frame:   AY0=197;	
			   AR=AX0-AY0;
			   IF GE JUMP first_branch;
			   AR=AX0 + 2;
			   MY0=H#2AAB; 
			   MR=AR * MY0 (SS);
			   AY0=19;
			   AR=MR1+AY0;		
			   AY0=58;       
			   AR=AX0+AY0,AY0=AR;
			   AR=AR-AY0,MR1=AY0;
			   AR=AR-AY0;
			   AR=AR-AY0; 
			   RTS;
first_branch:  AY0=112;
			   AR=AX0-AY0;       
			   AR=PASS 0,MR1=AR;             
			   RTS;
	 {---------find T0_min and T0_max for 2nd subframe-------} 
second_frame:  AR=MR1-5;         
			   AF=AR-AY0;
			   IF LT  AR=PASS AY0;
			   AY0=AR;
			   AR=AR+9;           
			   AF=AR-AY1;
			   IF LE JUMP second_branch;
			   AX1=9;
			   AR=AY1-AX1;          
			   AR=PASS AY1,AY0=AR;
second_branch: AY1=AR;
			   AR=AX0 + 2;
			   MY0=H#2AAB;        
			   MR=AR * MY0 (SS);  
			   AR=MR1-1;		  
			   AR=AR+AY0,AY0=AR;  
			   AR=AX0-AY0,MR1=AR;         
			   AR=AR-AY0;         
			   AR=AR-AY0;         
			   AR=AR-2;
			   RTS;
/**********************************************************************/
.ENDMOD;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -