📄 g729a_dec_gain.c
字号:
#include "../Common/typedef.h"
#include "../Include/G729A_basic_op.h"
#include "../Include/G729A_ld8a.h"
#include "../Include/G729A_tab_ld8a.h"
void G729ADec_gain(Word16 index, Word16 code[], Word16 L_subfr, Word16 bfi, Word16 *gain_pit, Word16 *gain_cod)
{
Word16 index1, index2, tmp;
Word16 gcode0, exp_gcode0;
Word32 L_gbk12, L_acc, L_accb;
void G729AGain_predict( Word16 past_qua_en[], Word16 code[], Word16 L_subfr,
Word16 *gcode0, Word16 *exp_gcode0 );
void G729AGain_update( Word16 past_qua_en[], Word32 L_gbk12 );
void G729AGain_update_erasure( Word16 past_qua_en[] );
static Word16 G729A_past_qua_en[4] = { -14336, -14336, -14336, -14336 };
if(bfi != 0)
{
*gain_pit = G729Amult( *gain_pit, 29491 );
*gain_pit = _min2(*gain_pit, 29491);
*gain_cod = G729Amult( *gain_cod, 32111 );
G729AGain_update_erasure(G729A_past_qua_en);
return;
}
index1 = G729A_imap1[ G729Ashr_s(index,G729A_NCODE2_B) ] ;
index2 = G729A_imap2[ index & (G729A_NCODE2-1) ] ;
*gain_pit = G729Aadd_s( G729A_gbk1[index1][0], G729A_gbk2[index2][0] );
G729AGain_predict( G729A_past_qua_en, code, L_subfr, &gcode0, &exp_gcode0 );
L_acc = G729AL_deposit_l( G729A_gbk1[index1][1] );
L_accb = G729AL_deposit_l( G729A_gbk2[index2][1] );
L_gbk12 = G729AL_add( L_acc, L_accb );
tmp = G729Aextract_l( G729AL_shr( L_gbk12,1 ) );
L_acc = G729AL_mult(tmp, gcode0);
L_acc = G729AL_shl(L_acc, G729Aadd_s( G729Anegate(exp_gcode0),(-12-1+1+16) ));
*gain_cod = G729Aextract_h( L_acc );
G729AGain_update( G729A_past_qua_en, L_gbk12 );
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -