www.pudn.com > g729Decoder.rar > INT_QLPC.asm


;========================================================================== 
;  File Name 
;  ---------- 
;  INT_QLPC.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Interpolation of the quantized LSP's 
; 
;  Ref 
;  ------ 
;  LPCFUNC.C 
;========================================================================== 
;--------------------------------------------------------------------- 
; procedure Int_qlpc 
;--------------------------------------------------------------------- 
;  void Int_qlpc( 
;   Word16 lsp_old[], /* input : LSP vector of past frame              */ 
;   Word16 lsp_new[], /* input : LSP vector of present frame           */ 
;   Word16 Az[]       /* output: interpolated Az() for the 2 subframes */ 
;  ) 
;--------------------------------------------------------------------- 
;               C code          Asm code 
;               ------          -------- 
;               Az[0] = 1        skip 
;               Az[1]       =    Az[0] 
;               Az[2]       =    Az[1] 
;                 :         :      : 
;               Az[10]      =    Az[9] 
;                                (circular buffer size of 10) 
;               Az[12]      =    Az[16] 
;               Az[21]      =    Az[25] 
;--------------------------------------------------------------------- 
;  Constants : Addr_lsp_vec_buf1 -> lsp 
; 
;  Pointers  : ptr_Az -> Az 
;              ptr_qlsp_old -> lsp_old 
;              ptr_lsp_new -> lsp_new 
;--------------------------------------------------------------------- 
		.mmregs 
        .include ..\include\const.h 
        .include ..\include\ld8amem.h 
 
        .text 
        .def     Int_qlpc 
        .ref     lsp_lpc 
 
        .asg     "AR2", pLspNew 
        .asg     "AR3", pLspOld 
        .asg     "AR4", pLsp 
 
        .asg     "Addr_lsp_vec_buf1", lsp 
        .asg     "ptr_lsp_coef", pLsp_coef 
        .asg     "ptr_Az", pAz 
        .asg     "ptr_lsp_new",  pLsp_new 
        .asg     "ptr_qlsp_old",  pLsp_old 
 
Int_qlpc: 
        LD      #pLsp_new, DP            ; set DP to pointers' page 
        MVDM    #pLsp_new, pLspNew 
        MVDM    #pLsp_old, pLspOld 
 
        STM     #M-1, BRC 
        STM     #-1, T 
        RPTBD   BLK_END-1 
        STM     #lsp, pLsp 
 
                LD       *pLspNew+, TS, A 
                ADD      *pLspOld+, TS, A 
                STL      A, *pLsp+ 
 
BLK_END 
        CALLD   lsp_lpc 
        ST      #lsp, pLsp_coef 
 
        ADDM    #16, pAz 
        CALLD   lsp_lpc 
        MVKD    #pLsp_new, pLsp_coef 
 
        RET