📄 pred_lt3.asm
字号:
;==========================================================================
; File Name
; ----------
; PRED_LT3.ASM
;
; Brief Description of the Code:
; ------------------------------
; Compute the result of long term prediction with fractional
; interpolation of resolution 1/3.
;
; Ref
; ------
; PRED_LT3.C
;==========================================================================
.mmregs
.include ..\include\const.h
.include ..\include\tab_ld8a.h
.include ..\include\ld8amem.h
.text
.def Pred_lt_3
;-----------------------------------------------------------------------
; Pred_lt_3
;-----------------------------------------------------------------------
; void Pred_lt_3(
; Word16 exc[], /* in/out: excitation buffer */
; Word16 T0, /* input : integer pitch lag */
; Word16 frac, /* input : fraction of lag */
; Word16 L_subfr /* input : subframe size */
; )
; {
; Word16 i, j, k;
; Word16 *x0, *x1, *x2, *c1, *c2;
; Word32 s;
;
; x0 = &exc[-T0];
;
; frac = negate(frac);
; if (frac < 0)
; {
; frac = add(frac, UP_SAMP);
; x0--;
; }
;
; for (j=0; j<L_subfr; j++)
; {
; x1 = x0++;
; x2 = x0;
; c1 = &inter_3l[frac];
; c2 = &inter_3l[sub(UP_SAMP,frac)];
;
; s = 0;
; for(i=0, k=0; i< L_INTER10; i++, k+=UP_SAMP)
; {
; s = L_mac(s, x1[-i], c1[k]);
; s = L_mac(s, x2[i], c2[k]);
; }
;
; exc[j] = round(s);
; }
;
; return;
; }
;-----------------------------------------------------------------------
; Constants : Addr_T0 -> T0
; Addr_T0_frac -> frac
; L_SUBFR = Lsubfr
;
; Pointers : ptr_exc_subfrm -> exc
;
; Buffer : Addr_pred_lt3_buf[32]
;-----------------------------------------------------------------------
; Modified registers : A, B, AR0 - AR6, BK, BRC , T
;-----------------------------------------------------------------------
.asg "AR1", pXn
.asg "AR2", pXn1
.asg "AR3", pXn2
.asg "AR7", pExc
.asg "AR2", pC1Ref
.asg "AR3", pC2Ref
.asg "AR4", pC1
.asg "AR5", pC2
.asg "Addr_local_buf1", C1
.asg "Addr_local_buf1+16", C2
Pred_lt_3:
PSHM AR7
MVDM Addr_T0, AR0
MVDM ptr_exc_subfrm, pXn
MVDM ptr_exc_subfrm, pExc
LD #Addr_T0_frac, DP
LD Addr_T0_frac, B
NEG B
MAR *pXn-0
LD #UP_SAMP, A
XC 2, BLT
ADD A, B
MAR *pXn-
STLM A, AR0
SUB B, A
ADD #Intpl_3l, B
ADD #Intpl_3l, A
STLM B, pC1Ref
STLM A, pC2Ref
STM #C1, pC1
STM #C2, pC2
STM #L_INTER10 - 1, BRC
STM #0, BK
RPTB SUM_S - 1
MVDD *pC1Ref+0%, *pC1+
MVDD *pC2Ref+0%, *pC2+
SUM_S:
MVMM pXn, pXn1 ;x1 = x0
NOP
MAR *pXn+ ;x0++
MVMM pXn, pXn2 ;x2 = x0
STM #C1, pC1
STM #C2, pC2
STM #L_INTER10 - 1, BRC
RPTBD End_Sum - 1
LD #0, A
NOP
MAC *pXn1-, *pC1+, A
MAC *pXn2+, *pC2+, A
End_Sum:
ADD #1,15,A
BANZD SUM_S,*AR6-
STL A, -16, *pExc+
EndPredLt3:
POPM AR7
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -