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

📄 g729a_gainpred.c

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

void G729AGain_predict(Word16 past_qua_en[], Word16 code[], Word16 L_subfr, Word16 *gcode0, Word16 *exp_gcode0)
{
	Word16  i, exp, frac;
	Word32  L_tmp;
	
	L_tmp = 0;
	for(i=0; i<L_subfr; i++)
		L_tmp = _sadd(L_tmp, _smpy(code[i], code[i]));
	G729ALog2(L_tmp, &exp, &frac);                 
	L_tmp = _sadd(_smpy(exp, -24660), _smpy(_smpy(frac, -24660)>>16, 1));
	L_tmp = _sadd(L_tmp, _smpy(32588, 32)); 
	
	L_tmp = G729AL_shl(L_tmp, 10);                      
	for(i=0; i<4; i++)
		L_tmp = _sadd(L_tmp, _smpy(G729A_pred[i], past_qua_en[i])); 
	
	*gcode0 = L_tmp>>16; 
	
	L_tmp = G729AL_mult(*gcode0, 5439);       
	L_tmp = G729AL_shr(L_tmp, 8);                         
	G729AL_Extract(L_tmp, &exp, &frac);      
	
	*gcode0 = G729Aextract_l(G729APow2(14, frac));  
	*exp_gcode0 = G729Asub_s(14,exp);
}

void G729AGain_update(Word16 past_qua_en[], Word32  L_gbk12)
{
	Word16  i, tmp;
	Word16  exp, frac;
	Word32  L_acc;
	
	for(i=3; i>0; i--){
		past_qua_en[i] = past_qua_en[i-1];    
	}
	
	G729ALog2( L_gbk12, &exp, &frac );                
	L_acc = G729AL_Comp( G729Asub_s(exp,13), frac);         
	tmp = G729Aextract_h( G729AL_shl( L_acc,13 ) );              
	past_qua_en[0] = G729Amult( tmp, 24660 );        
}

void G729AGain_update_erasure(Word16 past_qua_en[])
{
	Word16  i, av_pred_en;
	Word32  L_tmp;
	
	L_tmp = 0; 
	for(i=0; i<4; i++)
		L_tmp = _sadd( L_tmp, (Word32)past_qua_en[i]);
	av_pred_en = (Word16)_sshvr(L_tmp, 2);
	av_pred_en = _ssub( av_pred_en, 4096 );                          
	
	if( G729Asub_s(av_pred_en, -14336) < 0 )
	{
		av_pred_en = -14336;                              
	}                             
	
	for(i=3; i>0; i--)
	{
		past_qua_en[i] = past_qua_en[i-1];
	}
	past_qua_en[0] = av_pred_en;
}

⌨️ 快捷键说明

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