📄 g729a_oper_32b.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 + -