📄 gaecnra.s55
字号:
*-------------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2003 MIKET DSP SOLUTIONS, ALL RIGHTS RESERVED" *
* *
*-------------------------------------------------------------------------*/
.mmregs
.cpl_on
.arms_on
.include "gaeci.h55"
.sect ".ftext2"
;-------------------------------------------------------------------------
.ref _gaec_utl_exp
.ref _gaec_utl_en2log
;-------------------------------------------------------------------------
.global _gaec_nr_nrg
;-------------------------------------------------------------------------
_gaec_nr_nrg
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
;
xar2 = mar(*ar1(#(GAEC_tSc.u.aNr)))
xar3 = mar(*ar1(#(GAEC_tSc.asErrEn)))
xar4 = mar(*ar0(#(GAEC_tDb.asVadErrNse)))
mar (*+ar0(#(GAEC_tDb.aslNrPrior)))
xar1 = #(GAEC_BANDS+1-1)
L01
t0 = *ar3+;
t0 = t0 + #(GAEC_1DB*25);
t1 = #(GAEC_1DB*15)
t0 = min(t1, t0)
call _gaec_utl_exp
*ar2(#(GAEC_tScNr.sSig)) = t0;
ac0 = t0;
ac0 = ac0 << #16;
ac0 = ac0 * ac0;
dbl(*ar2(#(GAEC_tScNr.slSig))) = ac0;
t0 = *ar4+;
t0 = t0 + #(GAEC_1DB*25);
call _gaec_utl_exp
ac0 = t0;
ac0 = ac0 << #16;
ac0 = ac0 * ac0;
dbl(*ar2(#(GAEC_tScNr.slNse))) = ac0;
ac0 = dbl(*ar2(#(GAEC_tScNr.slSig)))
ac0 = ac0 - dbl(*ar2(#(GAEC_tScNr.slNse)))
ac1 = #0;
ac0 = max(ac1, ac0)
ac1 = dbl(*ar0+);
ac0 = ac0 - ac1;
ac1 = ac1 + (ac0 << #-6)
dbl(*ar2(#(GAEC_tScNr.slEst))) = ac1;
.if 0
.endif
mar (ar2 + #GAEC_tScNr_Sz)
if (*ar1- != 0) goto L01
return;
;-------------------------------------------------------------------------
.global _gaec_nr_coef
;-------------------------------------------------------------------------
_gaec_nr_coef
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
;
xar2 = mar(*ar1(#(GAEC_tSc.u.aNr)))
xar3 = #(GAEC_BANDS+1-1);
s1 .set 0
s2 .set 1
sp = sp - #2
L11
ac0 = dbl(*ar2(#(GAEC_tScNr.slNse)))
ac0 = ac0 + dbl(*ar2(#(GAEC_tScNr.slEst)))
call _gaec_utl_en2log
*sp(#s1) = t0;
ac0 = dbl(*ar2(#(GAEC_tScNr.slEst)))
call _gaec_utl_en2log
t0 = t0 - *sp(#s1)
*sp(#s1) = t0;
ac0 = dbl(*ar2(#(GAEC_tScNr.slSig)))
call _gaec_utl_en2log
*sp(#s2) = t0;
ac0 = dbl(*ar2(#(GAEC_tScNr.slNse)))
call _gaec_utl_en2log
t0 = t0 - *sp(#s2)
t1 = #(GAEC_1DB*8)
t0 = min(t1, t0)
*sp(#s2) = t0;
t0 = *sp(#s1);
t0 = t0 << #1
call _gaec_utl_exp
*sp(#s1) = t0;
t0 = *sp(#s2);
t0 = t0 << #1
call _gaec_utl_exp
*sp(#s2) = t0;
ac0 = *sp(#s1) << #16;
ac0 = ac0 + (*sp(#s2) << #16)
ac0 = ac0 * *sp(#s1)
ac0 = ac0 + #2048
ac0 = ac0 << #-12
call _gaec_utl_en2log
t0 = t0 + #8875
t1 = #0
t0 = min(t1, t0)
call _gaec_utl_exp
*ar2(#(GAEC_tScNr.sCoef)) = t0;
mar (ar2 + #GAEC_tScNr_Sz)
if (*ar3- != #0) goto L11
sp = sp + #2
return
;-------------------------------------------------------------------------
.global _gaec_nr_upd
;-------------------------------------------------------------------------
_gaec_nr_upd
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
;
xar2 = mar(*ar0(#(GAEC_tDb.asNrCoef)))
xar3 = mar(*ar0(#(GAEC_tDb.aslNrPrior)))
xar1 = mar(*ar1(#(GAEC_tSc.u.aNr)))
brc0 = #(GAEC_BANDS+1-1)
blockrepeat {
ac0 = *ar1(#(GAEC_tScNr.sCoef))
ac1 = ac0 - #1024;
if (ac1 > #0) goto L24
ac1 = ac0 - #720;
if (ac1 > #0) goto L22
ac1 = ac0 - #410;
if (ac1 > #0) goto L23
; less that 410
ac0 = #410
ac0 = ac0 - *ar2
ac0 = ac0 << #-3
ac0 = ac0 + *ar2
goto L24
L23
ac0 = ac0 - *ar2
ac0 = ac0 << #-2
ac0 = ac0 + *ar2
goto L24
L22
ac0 = ac0 - *ar2
ac0 = ac0 << #-1
ac0 = ac0 + *ar2
L24
*ar2 = ac0;
ac0 = *ar1(#(GAEC_tScNr.sSig)) << #16
ac0 = ac0 * *ar2+
ac0 = ac0 << #4
ac0 = ac0 * ac0
dbl(*ar3+) = ac0;
mar (ar1 + #GAEC_tScNr_Sz)
}
return
;-------------------------------------------------------------------------
.global _gaec_nr_att
;-------------------------------------------------------------------------
_gaec_nr_att
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
;
xar2 = mar(*ar0(#(GAEC_tDb.asNrCoef)))
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)))
repeat (#(GAEC_BANDS+1-1))
*ar3+ = *ar2+
xar2 = mar(*ar1(#(GAEC_tSc.u.asTmp+1)))
repeat (#(GAEC_BANDS-1-1))
*ar3+ = *ar2+
xar2 = mar(*ar1(#(GAEC_tSc.aasErr0)))
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)))
brc0 = #(GAEC_BANDS*2-1)
brc1 = #(GAEC_ERR_SZ-1)
localrepeat {
t0 = *ar3+
|| localrepeat {
ac0 = t0 * *ar2;
*ar2+ = HI(rnd(ac0 << #4))
}
}
return;
;-------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -