FreeCalypso > hg > gsm-codec-lib
diff libtwamr/d_gain_p.c @ 340:e18452a4fbac
libtwamr: integrate d_gain_p.c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 18 Apr 2024 23:45:25 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libtwamr/d_gain_p.c Thu Apr 18 23:45:25 2024 +0000 @@ -0,0 +1,71 @@ +/* +******************************************************************************** +* +* GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001 +* R99 Version 3.3.0 +* REL-4 Version 4.1.0 +* +******************************************************************************** +* +* File : d_gain_p.c +* +******************************************************************************** +*/ + + +/* +******************************************************************************** +* MODULE INCLUDE FILE AND VERSION ID +******************************************************************************** +*/ +#include "namespace.h" +#include "d_gain_p.h" + +/* +******************************************************************************** +* INCLUDE FILES +******************************************************************************** +*/ +#include "tw_amr.h" +#include "typedef.h" +#include "basic_op.h" +#include "oper_32b.h" +#include "no_count.h" +#include "cnst.h" +#include "gains_tab.h" + +/* +******************************************************************************** +* PUBLIC PROGRAM CODE +******************************************************************************** +*/ + +/* +************************************************************************** +* +* Function : d_gain_pitch +* Purpose : Decodes the pitch gain using the received index. +* output is in Q14 +* +************************************************************************** +*/ +Word16 d_gain_pitch ( /* return value: gain (Q14) */ + enum Mode mode, /* i : AMR mode */ + Word16 index /* i : index of quantization */ +) +{ + Word16 gain; + + test (); + if (sub(mode, MR122) == 0) + { + /* clear 2 LSBits */ + gain = shl (shr (qua_gain_pitch[index], 2), 2); move16 (); + } + else + { + gain = qua_gain_pitch[index]; move16 (); + } + + return gain; +}