📄 g_pitch.asm
字号:
;==========================================================================
; File Name
; ----------
; G_PITCH.ASM
;
; Brief Description of the Code:
; ------------------------------
; Compute correlations <xn,y1> and <y1,y1> 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -