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


;========================================================================== 
;  File Name 
;  ---------- 
;  LSP_DIST.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Compute mean square error for lsp vectors. 
; 
;  Ref 
;  ------ 
;  QUA_LSP.C 
;========================================================================== 
 
        .mmregs 
 
        .include  ..\include\const.h 
        .include  ..\include\ld8amem.h 
 
        .text 
        .def    Lsp_get_tdist 
 
 
 
;----------------------------------------------------------------------- 
;  Lsp_get_tdist 
;----------------------------------------------------------------------- 
;  void Lsp_get_tdist( 
;    Word16 wegt[],        /* (i) norm: weight coef.                */ 
;    Word16 buf[],         /* (i) Q13 : candidate LSP vector        */ 
;    Word32 *L_tdist,      /* (o) Q27 : distortion                  */ 
;    Word16 rbuf[],        /* (i) Q13 : target vector               */ 
;    Word16 fg_sum[]       /* (i) Q15 : present MA prediction coef. */ 
;  ) 
;----------------------------------------------------------------------- 
;  *L_tist = 0 ; 
;  for(i=0; i<10; i++) 
;  { 
;    *L_tdisk += wegt[i] * pow(((buf[i] - rbuf[i]) * fg_sum[i]), 2) ; 
;  } 
;----------------------------------------------------------------------- 
;  Constants : Addr_lsp_vecQ13 -> rbuf 
;              Addr_wegtQ11 -> wegt 
; 
;  Pointers  : ptr_MA_sum -> fg_sum 
;              ptr_mean_sqr_err -> &L_tdist 
;              ptr_lsp_vec -> buf 
;----------------------------------------------------------------------- 
;  Output : *ptr_mean_sqr_err++ = distortion 
;----------------------------------------------------------------------- 
 
        .asg    "AR1", pLerror 
 
        .asg    "AR2", pLspVec1Q13 
        .asg    "AR3", pLspVec2Q13 
        .asg    "AR4", pMAsum 
        .asg    "AR5", pWegtQ11 
 
Lsp_get_tdist: 
        STM     #M - 1, BRC 
        STM     Addr_wegtQ11, pWegtQ11 
        STM     #Addr_lsp_vecQ13, pLspVec1Q13 
        MVDM    ptr_lsp_vec , pLspVec2Q13 
        MVDM    ptr_MA_sum, pMAsum 
 
 
        LD      #0, B 
        RPTBD   EndGetDist - 1 
        MVDM    ptr_mean_sqr_err, pLerror 
 
                LD      *pMAsum+, T 
                SUB     *pLspVec2Q13+, *pLspVec1Q13+, A 
                MPYA    A                       ; A = (buf[i] - rbuf[i]) * fg_sum[i]) 
				STL      A,-16,*AR0 
				LD       *AR0,T 
				MPY  *pWegtQ11+,A 
				LD     A,4,A 
				MACA    T,B 
EndGetDist: 
        DST     B, *pLerror+ 
        RETD 
        MVMD    pLerror, ptr_mean_sqr_err