www.pudn.com > g729Decoder.rar > G_PITCH.asm
;========================================================================== ; File Name ; ---------- ; G_PITCH.ASM ; ; Brief Description of the Code: ; ------------------------------ ; Compute correlationsand to use in gains quantizer. ; Also compute the gain of pitch. Result in Q14 ; if (gain < 0) gain = 0 ; if (gain >1.2) gain = 1.2 ; ; Ref ; ------ ; PITCH.C (G_pitch) ;========================================================================== .mmregs .include ..\include\const.h .include ..\include\tab_ld8a.h .include ..\include\ld8amem.h .def G_pitch .ref DIV16 ;---------------------------------------------------------------------- ; G_pitch ;---------------------------------------------------------------------- ; Word16 G_pitch( /* (o) Q14 : Gain of pitch lag saturated to 1.2 */ ; Word16 xn[], /* (i) : Pitch target. */ ; Word16 y1[], /* (i) : Filtered adaptive codebook. */ ; Word16 g_coeff[], /* (i) : Correlations need for gain quantization. */ ; Word16 L_subfr /* (i) : Length of subframe. */ ; ) ;---------------------------------------------------------------------- ; Contstants : Addr_xn1 -> xn ; Addr_yn1 -> y1 ; Addr_g_coeff -> g_coeff ; L_SUBFR = L_subfr ;---------------------------------------------------------------------- ; Output : A = G_pitch ;---------------------------------------------------------------------- .asg "AR1", pG_coeff .asg "AR2", pXn .asg "AR3", pYn .asg "AR4", pNumer .asg "AR5", pDemon G_pitch: STM #Addr_yn1, pYn STM #Addr_g_coeff, pG_coeff LD #0, DP LD #1, A ; avoid case of all zeros RPT #L_SUBFR - 1 SQURA *pYn+, A EXP A MVMM pG_coeff, pDemon NORM A ADD #1, 15, A SAT A STL A, -16, *pG_coeff+ LD #15, B SUB T, B STL B, *pG_coeff+ LD T,B STM #Addr_xn1, pXn STM #Addr_yn1, pYn RPTZ A, #L_SUBFR - 1 MAC *pXn+, *pYn+, A EXP A STM #TRN, pNumer NORM A ADD #1, 15, A SAT A STL A, -16, *pG_coeff+ SFTA A, -16 ST #-15, *pG_coeff+ RCD ALEQ ST #0, *pG_coeff- STL A, -1, *pNumer LD #15, A SUB T, A STL A, *pG_coeff+ LD T,A SUB A,B LD #-16,A SUB B,A NOP NOP XC 2,AGT LD #-16,B LD BL, ASM CALL DIV16 AND #0ffffh, A LD A, ASM, A LD #19661, B RETD MIN A STL A, *pG_coeff