?? g729a_cor_func.c
字號:
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_ld8a.h"
void G729ACorr_xy2(Word16 xn[], Word16 y1[], Word16 y2[], Word16 g_coeff[], Word16 exp_g_coeff[])
{
Word16 i,exp;
Word16 exp_y2y2,exp_xny2,exp_y1y2;
Word16 y2y2, xny2, y1y2;
Word32 L_acc;
Word16 scaled_y2[G729A_L_SUBFR];
Word32 *Temp0, *Temp1;
Temp0 = (Word32*)&y2[0];
Temp1 = (Word32*)&scaled_y2[0];
for(i = G729A_L_SUBFR>>1; i > 0; i--)
{
*Temp1++ = _shr2(*Temp0++, 3);
}
L_acc = 1;
for(i=0; i<G729A_L_SUBFR; i++)
L_acc = _sadd(L_acc, _smpy(scaled_y2[i], scaled_y2[i]));
exp = G729Anorm_l(L_acc);
y2y2 = (Word16)(_sadd(_sshl(L_acc, exp), (Word32)0x00008000L)>>16);
exp_y2y2 = G729Aadd_s(exp, 19-16);
g_coeff[2] = y2y2;
exp_g_coeff[2] = exp_y2y2;
L_acc = 1;
for(i=0; i<G729A_L_SUBFR; i++)
L_acc = _sadd(L_acc, _smpy(xn[i], scaled_y2[i]));
exp = G729Anorm_l(L_acc);
xny2 = (Word16)(_sadd(_sshl(L_acc, exp), (Word32)0x00008000L)>>16);
exp_xny2 = G729Aadd_s(exp, 10-16);
g_coeff[3] = G729Anegate(xny2);
exp_g_coeff[3] = G729Asub_s(exp_xny2,1);
L_acc = 1;
for(i=0; i<G729A_L_SUBFR; i++)
L_acc = _sadd(L_acc, _smpy(y1[i], scaled_y2[i]));
exp = G729Anorm_l(L_acc);
y1y2 = (Word16)(_sadd(_sshl(L_acc, exp), (Word32)0x00008000L)>>16);
exp_y1y2 = G729Aadd_s(exp, 10-16);
g_coeff[4] = y1y2;
exp_g_coeff[4] = _ssub(exp_y1y2,1);
return;
}
void G729ACor_h_X(Word16 h[], Word16 X[], Word16 D[])
{
Word16 i, j;
Word32 s, max;
Word32 y32[G729A_L_SUBFR];
max = 0;
for (i = 0; i < G729A_L_SUBFR; i++)
{
s = 0;
for (j = i; j < G729A_L_SUBFR; j++)
s = _sadd(s, _smpy(X[j], h[j-i]));
y32[i] = s;
s = G729AL_abs(s);
max = _max2(max, s);
}
j = G729Anorm_l(max);
j = _min2(j, 16);
j = _ssub(18, j);
for(i=0; i<G729A_L_SUBFR; i++)
{
D[i] = (Word16)_sshvr(y32[i], j);
}
return;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -