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

📄 gaecua.s55

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

;-------------------------------------------------------------------------

	
;-------------------------------------------------------------------------
	.global	_gaec_utl_avrg
;-------------------------------------------------------------------------
_gaec_utl_avrg
; S16 *psVal	= ar0
; S16 sNew		= t0
; S16 sCoef		= t1
;
	ac0 = t0 - *ar0;
	ac0 = ac0 << #16;
	ac0 = ac0 * t1;
	ac0 = ac0 + (*ar0 << #15);
	*ar0 = HI(rnd(ac0 << #1));
	return;
;-------------------------------------------------------------------------
	.global				_gaec_utl_pkt_energy
;-------------------------------------------------------------------------
_gaec_utl_pkt_energy
;	S16 *psData = xar0
;
;	return S16 logEn
;
	ac0 = *ar0+ * *ar0+;
	|| repeat (#(GAEC_FR_SZ/2-2))
		ac0 = ac0 + (*ar0+ * *ar0+);
		
	ac1 = *ar0+ * *ar0+;
	|| repeat (#(GAEC_FR_SZ/2-2))
		ac1 = ac1 + (*ar0+ * *ar0+);
	ac0 = ac0 << #-2;
	ac0 = ac0 + (ac1 << #-2);
	
    ac0 = ac0 + #1;
    ac0 = mant (ac0), t0 = -exp(ac0) || nop;
    ac0 = ac0 << #-21;
    ac0 = ac0 + #(0x780-1024); 
    ac0 = ac0 + (t0*#512);
    t0 = ac0;
	
	return
	
;-------------------------------------------------------------------------
	.global				_gaec_utl_pkt_norm
;-------------------------------------------------------------------------
_gaec_utl_pkt_norm
;	S16 *psData = xar0
;
;	return S32 En
;
	ac0 = *ar0+ * *ar0+;
	|| repeat (#(GAEC_FR_SZ/2-2))
		ac0 = ac0 + (*ar0+ * *ar0+);
	ac1 = *ar0+ * *ar0+;
	|| repeat (#(GAEC_FR_SZ/2-2))
		ac1 = ac1 + (*ar0+ * *ar0+);
	ac0 = ac0 << #-2;
	ac0 = ac0 + (ac1 << #-2);
	
	return
	
;-------------------------------------------------------------------------
	.global				_gaec_utl_pen2log
;-------------------------------------------------------------------------
_gaec_utl_pen2log
;	S32 slEn 	= ac0
; 	returns t0
    ac0 = ac0 + #1;
    ac0 = mant (ac0), t0 = -exp(ac0);
    ac0 = ac0 << #-21;
    ac0 = ac0 + #(0x780-1024); -136);
    ac0 = ac0 + (t0*#512);
    t0 = ac0;
    return

;-------------------------------------------------------------------------
	.global				_gaec_utl_en2log
;	.sym _gaec_en2log, _gaec_en2log, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_utl_en2log
;	S32 slEn 	= ac0
; 	returns t0
    ac0 = ac0 + #1;
    ac0 = mant (ac0), t0 = -exp(ac0);
    ac0 = ac0 << #-21;
    ac0 = ac0 + #(0x780-1024-6*170);
    ac0 = ac0 + (t0*#512);
    t0 = ac0;
    return
;-------------------------------------------------------------------------
	.global				_gaec_utl_exp
;	.sym _gaec_exp, _gaec_exp, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_utl_exp
;	S16 slog = t0
;	returns S16 sExp in t0
;
	sp = sp + #-1;
	ac0 = t0;
	ac1 = ac0 << #-10;
	ac0 = ac0 << #2;
	ac0 = ac0 & #4095;
	*sp(0) = ac0;
	ac0 = *sp(0) * *sp(0);
	ac0 = ac0 << #-13;
	ac0 = ac0 + *sp(0);
	ac0 = ac0 << #16
	ac0 = ac0 * #21845;
	ac0 = ac0 << #-15;
	t0 = ac1;
	ac0 = ac0 + #4096;
	ac0 = ac0 << t0;
	t0 = ac0;
	sp = sp + #1;
	return
	
;-------------------------------------------------------------------------
	.global				_memclr
;-------------------------------------------------------------------------
_memclr					; to avoid C compliler bug
; S16 *p	= ar0 	
; s16 sz 	= t0
	t0 = t0 - #1;
	CSR	= t0
	repeat (CSR)
		*ar0+ = #0
	return;

	.if 0
;-------------------------------------------------------------------------
	.global				_gaec_pkt_peak
;	.sym _gaec_pkt_peak, _gaec_pkt_peak, 32, 2, 0
;-------------------------------------------------------------------------
_gaec_pkt_peak
;	S16 *psIn = xar0
;	returns t0
    brc0 = #(GAEC_FR_SZ-1)
    t0 = #0
	|| localrepeat {
		t1 = *ar0+;
		t1 = |t1|;
		t0 = max(t1, t0);
	}
	return
	.endif

⌨️ 快捷键说明

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