www.pudn.com > g729Decoder.rar > 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