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

📄 lsp_extr.asm

📁 TI C54写的G729代码,视线8kbps高质量语音编码,汇编优化
💻 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 + -