Initialize Tizen 2.3
[external/opencore-amr.git] / opencore / codecs_v2 / audio / gsm_amr / amr_nb / enc / src / g_adapt.h
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
20
21     3GPP TS 26.073
22     ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23     Available from http://www.3gpp.org
24
25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26 Permission to distribute, modify and use this file under the standard license
27 terms listed above has been obtained from the copyright holder.
28 ****************************************************************************************/
29 /*
30 ------------------------------------------------------------------------------
31
32
33
34  Filename: g_adapt.h
35
36 ------------------------------------------------------------------------------
37  INCLUDE DESCRIPTION
38
39  This file contains all the constant definitions and prototype definitions
40  needed by the file, g_adapt.c
41
42 ------------------------------------------------------------------------------
43 */
44
45 /*----------------------------------------------------------------------------
46 ; CONTINUE ONLY IF NOT ALREADY DEFINED
47 ----------------------------------------------------------------------------*/
48 #ifndef g_adapt_h
49 #define g_adapt_h "$Id $"
50
51 /*----------------------------------------------------------------------------
52 ; INCLUDES
53 ----------------------------------------------------------------------------*/
54 #include "typedef.h"
55
56 /*--------------------------------------------------------------------------*/
57 #ifdef __cplusplus
58 extern "C"
59 {
60 #endif
61
62     /*----------------------------------------------------------------------------
63     ; MACROS
64     ; Define module specific macros here
65     ----------------------------------------------------------------------------*/
66
67     /*----------------------------------------------------------------------------
68     ; DEFINES
69     ; Include all pre-processor statements here.
70     ----------------------------------------------------------------------------*/
71 #define LTPG_MEM_SIZE 5 /* number of stored past LTP coding gains + 1 */
72
73     /*----------------------------------------------------------------------------
74     ; EXTERNAL VARIABLES REFERENCES
75     ; Declare variables used in this module but defined elsewhere
76     ----------------------------------------------------------------------------*/
77
78     /*----------------------------------------------------------------------------
79     ; SIMPLE TYPEDEF'S
80     ----------------------------------------------------------------------------*/
81
82     /*----------------------------------------------------------------------------
83     ; ENUMERATED TYPEDEF'S
84     ----------------------------------------------------------------------------*/
85
86     /*----------------------------------------------------------------------------
87     ; STRUCTURES TYPEDEF'S
88     ----------------------------------------------------------------------------*/
89     typedef struct
90     {
91         Word16 onset;                   /* onset state,                   Q0  */
92         Word16 prev_alpha;              /* previous adaptor output,       Q15 */
93         Word16 prev_gc;                 /* previous code gain,            Q1  */
94
95         Word16 ltpg_mem[LTPG_MEM_SIZE]; /* LTP coding gain history,       Q13 */
96         /* (ltpg_mem[0] not used for history) */
97     } GainAdaptState;
98
99     /*----------------------------------------------------------------------------
100     ; GLOBAL FUNCTION DEFINITIONS
101     ; Function Prototype declaration
102     ----------------------------------------------------------------------------*/
103     Word16 gain_adapt_init(GainAdaptState **st);
104     /* initialize one instance of the gain adaptor
105        Stores pointer to state struct in *st. This pointer has to
106        be passed to gain_adapt and gain_adapt_update in each call.
107        returns 0 on success
108      */
109
110     Word16 gain_adapt_reset(GainAdaptState *st);
111     /* reset of gain adaptor state (i.e. set state memory to zero)
112        returns 0 on success
113      */
114
115     void gain_adapt_exit(GainAdaptState **st);
116     /* de-initialize gain adaptor state (i.e. free state struct)
117        stores NULL in *st
118      */
119
120     /*************************************************************************
121      *
122      *  Function:   gain_adapt()
123      *  Purpose:    calculate pitch/codebook gain adaptation factor alpha
124      *              (and update the adaptor state)
125      *
126      **************************************************************************
127      */
128     void gain_adapt(
129         GainAdaptState *st,  /* i  : state struct                  */
130         Word16 ltpg,         /* i  : ltp coding gain (log2()), Q   */
131         Word16 gain_cod,     /* i  : code gain,                Q13 */
132         Word16 *alpha,       /* o  : gain adaptation factor,   Q15 */
133         Flag   *pOverflow    /* o  : overflow indicator            */
134     );
135
136     /*----------------------------------------------------------------------------
137     ; END
138     ----------------------------------------------------------------------------*/
139 #ifdef __cplusplus
140 }
141 #endif
142
143 #endif /* _H_ */
144
145