g729a_pred_lt3.c

来自「DSP上优化的G.729A代码」· C语言 代码 · 共 39 行

C
39
字号
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_ld8a.h"
#include "../Include/G729A_tab_ld8a.h"

void G729APred_lt_3(Word16   exc[], Word16   T0, Word16   frac, Word16   L_subfr)
{
	Word16   i, j, k;
	Word16   *x0, *x1, *x2, *c1, *c2;
	Word32  s;
	
	x0 = &exc[-T0];
	
	frac = G729Anegate(frac);
	if (frac < 0)
	{
		frac = G729Aadd_s(frac, G729A_UP_SAMP);
		x0--;
	}
	
	for (j=0; j<L_subfr; j++)
	{
		x1 = x0++;
		x2 = x0;
		c1 = &G729A_inter_3l[frac];
		c2 = &G729A_inter_3l[G729Asub_s(G729A_UP_SAMP,frac)];
		s = 0;
		for(i=0, k=0; i< G729A_L_INTER10; i++, k+=G729A_UP_SAMP)
		{
			s = _sadd(s, _smpy(x1[-i], c1[k]));
			s = _sadd(s, _smpy(x2[i],  c2[k]));
		}
		exc[j] = (Word16)(_sadd(s, (Word32)0x00008000L)>>16);
	}
	
	return;
}

⌨️ 快捷键说明

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