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

📄 spbpfa.s54

📁 The line echo canceller (LEC) is designed to provide the maximum attainable transparent voice qualit
💻 S54
字号:
*---------------------------------------------------------------------*
*                                                                     *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION.  IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES:  *
*     "COPYRIGHT 2001 MICHAEL TSIROULNIKOV, ALL RIGHTS RESERVED"      *
*                                                                     *
*---------------------------------------------------------------------*/
	.mmregs
	.include "spdefs.inc"

_NEW_BP		.set 	1

	.if _NEW_BP
SPBPF_SSZ      	.set 	(31)
SPBPF_FSZ      	.set 	(32)
	.else
SPBPF_HSZ		.set 	(10)
SPBPF_SSZ      	.set 	(18)
SPBPF_FSZ      	.set 	(19)
	.endif
	
	.sect ".bpfd"

_SPBPF_aFlt
	.if _NEW_BP

  	.word  25404,   -267, -12669,   -363,  -8752,   -582,  -5330,   -768  
  	.word  -2592,   -780,   -661,   -544,    462,    -95,    922,    409
  	.word   1056,   1210,    893,    784,    571,    487,    346,    278
  	.word    196,    142,    100,     63,     43,     22,     12,      4

  	.else

	.word 29527, -9592, -7602, -5666, -3858 
	.word -2204,  -441,  -147,  -26,    5 

  	.endif
  	
	.text	
;-------------------------------------------------------------------------
	.global				_sp_bpf_init
	.sym _sp_bpf_init, _sp_bpf_init, 32, 2, 0
;-------------------------------------------------------------------------
_sp_bpf_init
; pDb		= a
	stlm	a, ar2
	ld 		#0, a
	rpt 	#(SPBPF_SSZ-1)
		stl 	a, *ar2+
	ret

;-------------------------------------------------------------------------
	.global				_sp_bpf
	.sym _sp_bpf, _sp_bpf, 32, 2, 0
;-------------------------------------------------------------------------
_sp_bpf
; pDb		= a
; pSc		= sp(1)
; psData	= sp(2)
;
	stlm	a, ar2
	ssbx	sxm
	ssbx	frct
	mvdk	*sp(1), ar3
;
; copy data from Db.Sav
	rpt		#(SPBPF_SSZ-1)
		mvdd	*ar2+, *ar3+
;
; append data from In
	mvdk	*sp(2), ar4
	rpt		#(SP_FR_SZ-1)
		mvdd	*ar4+, *ar3+				; at the end, 
;
; update Db.Sav
	mar		*ar2-
	mar		*ar4-
	rpt		#(SPBPF_SSZ-1)
		mvdd	*ar4-, *ar2-				;
;
; filter
	mvdk	*sp(1), ar3
	mar		*+ar3(#(SPBPF_FSZ-1))
	mvdk	*sp(2), ar4

	.if _NEW_BP
	stm		#(SP_FR_SZ-1), brc
	stm		#_SPBPF_aFlt, ar5
	
	rptb	L03-1
		rptz	a, #(SPBPF_FSZ-2)
			mac	*ar3-, *ar5+, a
		macr	*ar3-, *ar5+, a
		
		mar		*+ar5(#-SPBPF_FSZ)
		mar		*+ar3(#(1+SPBPF_FSZ))
		sth		a, *ar4+
L03
	.else
	
	stm		#-2, ar0
	stm		#(SP_FR_SZ-1), brc
	stm		#0, bk
	stm		#_SPBPF_aFlt, ar5
	rptb	L03-1
		rptz	a, #(SPBPF_HSZ-2)
			mac		*ar3+0%, *ar5+, a
		macr	*ar3+0%, *ar5+, a
		
		mar		*+ar5(#-SPBPF_HSZ)
		mar		*+ar2(#(1+SPBPF_HSZ*2))
		sth		a, *ar4+
L03
	.endif
	rsbx	frct
	ret


⌨️ 快捷键说明

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