📄 lsp_extr.asm
字号:
;==========================================================================
; File Name
; ----------
; LSP_EXTR.ASM
;
; Brief Description of the Code:
; ------------------------------
; Extract elementary LSP from composed LSP with previous LSP.
;
; Ref
; ------
; LSPGETQ.C
;==========================================================================
.mmregs
.include ..\include\const.h
.text
.def Lsp_prev_extract
.ref Addr_lsf_coefQ13 ; ld8a.mem
.ref Addr_lsp_vecQ13 ; ld8a.mem
.ref ptr_MA_coef ; ld8a.mem
.ref ptr_prev_lsp_vec ; ld8a.mem
.ref ptr_MA_sum_inv ; ld8a.mem
;-----------------------------------------------------------------------
; Lsp_prev_extract
;-----------------------------------------------------------------------
; void Lsp_prev_extract(
; Word16 lsp[M], /* (i) Q13 : unquantized LSP parameters */
; Word16 lsp_ele[M], /* (o) Q13 : target vector */
; Word16 fg[M][MA_NP], /* (i) Q15 : MA prediction coef. */
; Word16 freq_prev[M][MA_NP], /* (i) Q13 : previous LSP vector */
; Word16 fg_sum_inv[M] /* (i) Q12 : inverse previous LSP vector */
; )
;-----------------------------------------------------------------------
; Equation 23
;-----------------------------------------------------------------------
; Constants : AR3 -> lsp
; Addr_lsp_vecQ13 -> lsp_ele[]
;
; Pointers : ptr_MA_coef -> fg
; ptr_prev_lsp_vec -> freq_prev
; ptr_MA_sum_inv -> fg_sum_inv
;-----------------------------------------------------------------------
;
; Modified Registers : A, B, AR1, AR2, AR3, AR4, AR5
; OVM
;---------------------------------------------------------------------------
.asg "AR2", pLspVecQ13
.asg "AR3", pLsfCoefQ13
.asg "AR4", pPrevLspVecQ13
.asg "AR5", pMA_Coef
.asg "AR1", pMA_SumInvQ12
Lsp_prev_extract:
SSBX OVM ; set saturate mode
STM #M - 1, BRC
MVDM ptr_MA_coef, pMA_Coef
MVDM ptr_prev_lsp_vec, pPrevLspVecQ13
MVDM ptr_MA_sum_inv, pMA_SumInvQ12
LD #0, ASM
LD *pLsfCoefQ13+, 16, A
RPTBD EndLspVector - 1
STM #Addr_lsp_vecQ13, pLspVecQ13
RPT #4-1
MAS *pPrevLspVecQ13+, *pMA_Coef+, A
MPYA *pMA_SumInvQ12+
LD B, 3, B ; B = sat(B << 3)
; if overflow is not possible
; remove LD B, 3, B
; and set ASM = 3
ST B, *pLspVecQ13+
||LD *pLsfCoefQ13+, A
EndLspVector:
RSBX OVM ; unset saturate mode
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -