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

📄 g729a_oper_32b.c

📁 在DSP上实现的G.729优化代码 编译过的 大家快来下载啊
💻 C
字号:
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_oper_32b.h"

void G729AL_Extract(Word32 L_32, Word16 *hi, Word16 *lo)
{
	*hi  = G729Aextract_h(L_32);
	*lo  = G729Aextract_l( G729AL_msu( G729AL_shr(L_32, 1) , *hi, 16384));  
	return;
}

Word32 G729AL_Comp(Word16 hi, Word16 lo)
{
	Word32 L_32;
	
	L_32 = G729AL_deposit_h(hi);
	return( G729AL_mac(L_32, lo, 1));         
}

Word32 G729AMpy_32(Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2)
{
	Word32 L_32;
	
	L_32 = G729AL_mult(hi1, hi2);
	L_32 = G729AL_mac(L_32, G729Amult(hi1, lo2) , 1);
	L_32 = G729AL_mac(L_32, G729Amult(lo1, hi2) , 1);
	return( L_32 );
}

Word32 G729AMpy_32_16(Word16 hi, Word16 lo, Word16 n)
{
	Word32 L_32;
	
	L_32 = G729AL_mult(hi, n);
	L_32 = G729AL_mac(L_32, G729Amult(lo, n) , 1);
	
	return( L_32 );
}

Word32 G729ADiv_32(Word32 L_num, Word16 denom_hi, Word16 denom_lo)
{
	Word16 approx, hi, lo, n_hi, n_lo;
	Word32 L_32;
	Word32 tmp0, tmp1, tmp2, tmp3;	
	
	approx = G729Adiv_s( (Word16)0x3fff, denom_hi);
	
	tmp0 = _smpy(denom_hi, approx);
	tmp1 = _smpy(denom_lo, approx)>>16;
	
	L_32 = _sadd(tmp0, tmp1);
	
	L_32 = _ssub((Word32)0x7fffffffL, L_32);
	
	hi = L_32 >> 16;
	tmp2 = _sshvr(L_32, 1);
	lo = (Word16)_ssub(tmp2, _smpy(hi, 16384));
	
	tmp0 = _smpy(hi, approx);
	tmp1 = _smpy(lo, approx)>>16;
	L_32 = _sadd(tmp0, tmp1);
	
	hi = L_32 >> 16;
	tmp2 = _sshvr(L_32, 1);
	lo = (Word16)_ssub(tmp2, _smpy(hi, 16384));
	
	n_hi = L_num >> 16;
	tmp3 = _sshvr(L_num, 1);
	n_lo = (Word16)_ssub(tmp3, _smpy(n_hi, 16384));
	
	L_32 = _smpy(n_hi, hi);
	tmp0 = _smpy(n_hi, lo)>>16;
	tmp1 = _smpy(n_lo, hi)>>16;
	L_32 = _sadd(L_32, tmp0);
	L_32 = _sadd(L_32, tmp1);
	
	L_32 = _sshvl(L_32, 2); 
	
	return( L_32 );
}

⌨️ 快捷键说明

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