📄 lsp_lsf.asm
字号:
;==========================================================================
; File Name
; ----------
; LSP_LSF.ASM
;
; Brief Description of the Code:
; ------------------------------
; Lsp_Lsf2 : convert lsp coefficients to lsf coefficients.
; Lsf_Lsp2 : convert lsf coefficients to lsp coefficients.
;
; Ref
; ------
; LPCFUNC.C
;==========================================================================
.mmregs
.include ..\include\const.h
.include ..\include\tab_ld8a.h
.include ..\include\ld8amem.h
.text
.def Lsp_Lsf
.def Lsp_Lsf2
.def Lsf_Lsp2
;-----------------------------------------------------------------------
; Lsp_Lsf
;-----------------------------------------------------------------------
; void Lsp_lsf(
; Word16 lsp[], /* (i) Q15 : lsp[m] (range: -1<=val<1) */
; Word16 lsf[], /* (o) Q15 : lsf[m] normalized (range: 0.0<=val<=1) */
; Word16 m /* (i) : LPC order */
; )
;-----------------------------------------------------------------------
; Pointers : ptr_lsp_coef -> lsp
; ptr_lsf_coef -> lsf
;
; Input : BRC = m - 1
;
;-----------------------------------------------------------------------
; Note : output of ASM code = output of C code << 1
;
; There is no need to shift lsf[] left one bit in Perc_var().
;-----------------------------------------------------------------------
.asg "AR1", AR_Index
.asg "AR2", pLspCoef
.asg "AR3", pLsfCoef
.asg "AR4", pCosTable
.asg "AR5", pSlopeACosQ12
Lsp_Lsf:
MVDM ptr_lsp_coef, pLspCoef
MVDM ptr_lsf_coef, pLsfCoef
STM #CosTable+63, pCosTable
STM #SlopeACosQ12+63, pSlopeACosQ12
MAR *+pLspCoef(M-1)
MAR *+pLsfCoef(M-1)
RPTBD End_Lsp_Lsf1-1
STM #63, AR_Index
LD *pLspCoef-, 16, B
FindCosIndex1:
SUB *pCosTable-, 16, B, A
BCD FindCosIndex1, AGT
MAR *pSlopeACosQ12-
MAR *AR_Index-
MAR *pSlopeACosQ12+
MAR *AR_Index+
; acos(lsp[i])= ind*512 + (slope_acos[ind]*offset >> 11)
MPYA *pSlopeACosQ12 ; B = SlopeACosQ12[ind]*offset
LDM AR_Index, A
MAR *pCosTable+
SFTA A, 9
sfta b,4,b
add #1,16,b
ADD B, -16, A
ld a,-1,a
ld a,1,a
STL A, *pLsfCoef-
End_Lsp_Lsf1:
RET
;-----------------------------------------------------------------------
; Lsp_Lsf2
;-----------------------------------------------------------------------
; void Lsp_lsf2(
; Word16 lsp[], /* (i) Q15 : lsp[m] (range: -1<=val<1) */
; Word16 lsf[], /* (o) Q13 : lsf[m] (range: 0.0<=val<PI) */
; Word16 m /* (i) : LPC order */
; )
;-----------------------------------------------------------------------
; Constants : Addr_lsp_coef -> lsp[]
; Addr_lsf_coefQ13 -> lsf[]
;
; Input : BRC = m - 1
;
;-----------------------------------------------------------------------
; note : *(Addr_lsf_coefQ13 - 1) = PI04 = 0.4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -