⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gaecnlpa.s54

📁 TI公司DSP/tms320c55x/tms320c54x系列的声学回声消除代码
💻 S54
字号:
*-------------------------------------------------------------------------*
*                                                                         *
*   THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY   *
*   INFORMATION.  IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES:    *
*      "COPYRIGHT 2003 MICHAEL TSIROULNIKOV, ALL RIGHTS RESERVED"         *
*                                                                         *
*-------------------------------------------------------------------------*/
	.mmregs
	.include "gaeci.h54"
	.sect ".ftext2"

_MULT                   	.set (31821)
_INC                    	.set (13849)

	.ref	_gaec_utl_exp

;-------------------------------------------------------------------------
	.global _gaec_nlp_add_noise
;-------------------------------------------------------------------------
_gaec_nlp_add_noise
; S16 *psSeed	= a				; ar2
; S16 *psTo		= sp(1)			; ar3
; S16 sLevel	= sp(2)			; ar4->sLevel
	stlm 	a, ar2
	ssbx	sxm
	orm		#1, *(pmst)
	mvdk	*sp(1), ar3
	mvmm	sp, ar4
	mar		*+ar4(#2)			
	stm		#GAEC_ERR_SZ-1, brc
	rptb	E11-1
		mpy 	*ar2, #_MULT, a
		add		#_INC, a
		stl 	a, *ar2
		mpy		*ar2, *ar4, a
		add 	*ar3, 15, a
		add		#1, 14, a
		sth		a,1, *ar3+
E11	
	andm	#~1, *(pmst)
	ret
;-------------------------------------------------------------------------
	.global _gaec_nlp_mix_noise
;-------------------------------------------------------------------------
_gaec_nlp_mix_noise
; GAEC_tDb *pDb,
; GAEC_tSc *pSc, 
; U16 uUseDtCrit
;
	stlm	a, ar2
	ssbx	sxm
	nop
	mvdk	*sp(1), ar3
;	
; copy nse to tmp	
	mvmm	ar2, ar4
	mar		*+ar4(#GAEC_tDb.asVadErrNse)
	mvmm	ar3, ar5
	mar		*+ar5(#GAEC_tSc.u.asTmp)
	bitf	*ar2(#GAEC_tDb.uControl), #IGAEC_CMD_NSE_RED_OFF
	ld 		#GAEC_1DB*13, b
	xc 		2, ntc
		ld 		#GAEC_1DB*6, b
	stm		#GAEC_BANDS, brc
	rptb	E21-1
		add		*ar4+, b, a
		stl		a, *ar5+
E21	
	mar		*+ar5(#-(GAEC_BANDS+1))
	stm		#GAEC_BANDS, brc
	rptb	E22-1
		ld 		*ar5, a
		call	_gaec_utl_exp
		stl 	a, *ar5+
E22
	mar		*+ar5(#-(GAEC_BANDS+1))
	cmpm	*sp(2), #0
	bc		E24, tc
		mvmm	ar3, ar4
		mar		*+ar4(#GAEC_tSc.asAttErr)
		stm		#GAEC_BANDS, brc
		rptb	E23-1
			ld 		#4096, 16, a
			sub		*ar4+, 16, a
			mpya 	*ar5
			add 	#1, 11, b
			sth		b, 4, *ar5+
E23			
		mar		*+ar5(#-(GAEC_BANDS+1))
E24	
	mvmm	ar5, ar4
	mar		*+ar4(#GAEC_BANDS+1)
	mar		*ar5+
	rpt		#GAEC_BANDS-2
		mvdd	*ar5+, *ar4+
	mar		*+ar4(#-(GAEC_BANDS*2))
	
	orm		#1, *(pmst)
	stm		#GAEC_BANDS*2-1, ar5
	mar		*+ar2(#GAEC_tDb.sNseSav)
	mar		*+ar3(#GAEC_tSc.aasErr0)
E25	
		stm		#GAEC_ERR_SZ-1, brc
		rptb	E26-1
			mpy 	*ar2, #_MULT, a
			add		#_INC, a
			stl 	a, *ar2
			mpy		*ar2, *ar4, a
			add 	*ar3, 15, a
			add		#1, 14, a
			sth		a, 1, *ar3+
E26	
		mar 	*ar4+
	banz	E25, *ar5-
	andm	#~1, *(pmst)
	ret
		
;-------------------------------------------------------------------------
	.global _gaec_nlp_att_rx
;-------------------------------------------------------------------------
_gaec_nlp_att_rx
; GAEC_tDb *pDb		= a
; GAEC_tSc *pSc 	= sp(1)
;
	stlm 	a, ar2
	ssbx	sxm
	orm		#1, *(pmst)
	mvdk	*sp(1), ar3
	
	mar		*+ar2(#GAEC_tDb.aasErrSav)
	mvmm	ar3, ar4
	mvmm	ar3, ar5
	mar		*+ar3(#GAEC_tSc.u.asTmp)
	mar		*+ar4(#GAEC_tSc.asAttErr)
	mar		*+ar5(#GAEC_tSc.aasErr0)
	
	rpt		#GAEC_BANDS
		mvdd	*ar4+, *ar3+
	mar		*+ar4(#-GAEC_BANDS)
	rpt		#GAEC_BANDS-2
		mvdd	*ar4+, *ar3+
	mar		*+ar3(#-2*GAEC_BANDS)
	
	stm		#2*GAEC_BANDS-1, ar4
E31
		stm		#GAEC_ERR_SZ-1, brc
		rptb	E32-1
			mpy 	*ar2+, *ar3, a
			add 	#1, 11, a
			sth		a, 4, *ar5+
E32			
		mar 	*ar3+
	banz	E31, *ar4-
	andm	#~1, *(pmst)
	ret			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -