annotate libtwamr/d_gain_c.h @ 547:f9535c1fbf70

efrtest: new program gsmefr-decode-tw5
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 04 Oct 2024 20:17:36 +0000
parents a723d9f9f697
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
339
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * R99 Version 3.3.0
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * REL-4 Version 4.1.0
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * File : d_gain_c.h
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * Purpose : Decode the fixed codebook gain using the received index.
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #ifndef d_gain_c_h
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #define d_gain_c_h "$Id $"
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 /*
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 * INCLUDE FILES
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #include "tw_amr.h"
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 #include "typedef.h"
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #include "gc_pred.h"
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 /*
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 * DECLARATION OF PROTOTYPES
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 ********************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 /*
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 **************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 * Function : d_gain_code
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 * Purpose : Decode the fixed codebook gain using the received index.
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 * Description : The received index gives the gain correction factor
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 * gamma. The quantized gain is given by g_q = g0 * gamma
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 * where g0 is the predicted gain. To find g0, 4th order
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 * MA prediction is applied to the mean-removed innovation
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 * energy in dB.
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 * Returns : void
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 *
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 **************************************************************************
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 void d_gain_code (
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 gc_predState *pred_state, /* i/o : MA predictor state */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 enum Mode mode, /* i : AMR mode */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 Word16 index, /* i : received quantization index */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 Word16 code[], /* i : innovation codevector */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 Word16 *gain_code /* o : decoded innovation gain */
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 );
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53
a723d9f9f697 libtwamr: integrate d_gain_c.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 #endif