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

📄 g729a_post_pro.c

📁 DSP上优化的G.729A代码
💻 C
字号:
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_oper_32b.h"
#include "../Include/G729A_ld8a.h"
#include "../Include/G729A_tab_ld8a.h"

static Word16 G729Ay2_hi, G729Ay2_lo, G729Ay1_hi, G729Ay1_lo, G729Ax0, G729Ax1;

void G729AInit_Post_Process(void)
{
	G729Ay2_hi = 0;
	G729Ay2_lo = 0;
	G729Ay1_hi = 0;
	G729Ay1_lo = 0;
	G729Ax0   = 0;
	G729Ax1   = 0;
}

void G729APost_Process(Word16 signal[], Word16 lg)    
{
	Word16 i, x2;
	Word32 L_tmp;

	for(i=0; i<lg; i++)
	{
		x2 = G729Ax1;
		G729Ax1 = G729Ax0;
		G729Ax0 = signal[i];
	
		L_tmp     = _sadd(_smpy(G729Ay1_hi, G729A_a100[1]), _smpy(G729Ay1_lo, G729A_a100[1])>>16);
		L_tmp     = _sadd(L_tmp, _sadd(_smpy(G729Ay2_hi, G729A_a100[2]), _smpy(G729Ay2_lo, G729A_a100[2])>>16));
		L_tmp     = _sadd(L_tmp, _smpy(G729Ax0, G729A_b100[0]));
		L_tmp     = _sadd(L_tmp, _smpy(G729Ax1, G729A_b100[1]));
		L_tmp     = _sadd(L_tmp, _smpy(x2, G729A_b100[2]));
		
		signal[i] = (Word16)(_sadd(_sshl(L_tmp, 3), (Word32)0x00008000L)>>16);
		
		G729Ay2_hi = G729Ay1_hi;
		G729Ay2_lo = G729Ay1_lo;
		
		G729Ay1_hi = _sshl(L_tmp, 2) >> 16;
	    G729Ay1_lo = (Word16)_ssub(_sshl(L_tmp, 1), _smpy(G729Ay1_hi, 16384));
	}
	
	return;
}

⌨️ 快捷键说明

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