• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  Filename: /audio/gsm_amr/c/include/lsp_avg.h
32 
33 ------------------------------------------------------------------------------
34  REVISION HISTORY
35 
36  Description: Placed header file in the proper template format.  Added
37  parameter pOverflow for the basic math ops.
38 
39  Description: Moved _cplusplus #ifdef after Include section.
40 
41  Who:                       Date:
42  Description:
43 
44 ------------------------------------------------------------------------------
45  INCLUDE DESCRIPTION
46 
47  This file contains all the constant definitions and prototype definitions
48  needed by the lsp_avg.c
49 
50 ------------------------------------------------------------------------------
51 */
52 
53 /*----------------------------------------------------------------------------
54 ; CONTINUE ONLY IF NOT ALREADY DEFINED
55 ----------------------------------------------------------------------------*/
56 #ifndef int_lpc_h
57 #define int_lpc_h "$Id $"
58 
59 /*----------------------------------------------------------------------------
60 ; INCLUDES
61 ----------------------------------------------------------------------------*/
62 #include "typedef.h"
63 
64 /*--------------------------------------------------------------------------*/
65 #ifdef __cplusplus
66 extern "C"
67 {
68 #endif
69 
70     /*----------------------------------------------------------------------------
71     ; MACROS
72     ; Define module specific macros here
73     ----------------------------------------------------------------------------*/
74 
75     /*----------------------------------------------------------------------------
76     ; DEFINES
77     ; Include all pre-processor statements here.
78     ----------------------------------------------------------------------------*/
79 
80     /*----------------------------------------------------------------------------
81     ; EXTERNAL VARIABLES REFERENCES
82     ; Declare variables used in this module but defined elsewhere
83     ----------------------------------------------------------------------------*/
84 
85     /*----------------------------------------------------------------------------
86     ; SIMPLE TYPEDEF'S
87     ----------------------------------------------------------------------------*/
88 
89     /*----------------------------------------------------------------------------
90     ; ENUMERATED TYPEDEF'S
91     ----------------------------------------------------------------------------*/
92 
93     /*----------------------------------------------------------------------------
94     ; STRUCTURES TYPEDEF'S
95     ----------------------------------------------------------------------------*/
96 
97     /*----------------------------------------------------------------------------
98     ; GLOBAL FUNCTION DEFINITIONS
99     ; Function Prototype declaration
100     ----------------------------------------------------------------------------*/
101 
102     /*
103     **************************************************************************
104     *
105     *  Function    : Int_lpc_1and3
106     *  Purpose     : Interpolates the LSPs and converts to LPC parameters
107     *                to get a different LP filter in each subframe.
108     *  Description : The 20 ms speech frame is divided into 4 subframes.
109     *                The LSPs are quantized and transmitted at the 2nd and
110     *                4th subframes (twice per frame) and interpolated at the
111     *                1st and 3rd subframe.
112     *
113     *                      |------|------|------|------|
114     *                         sf1    sf2    sf3    sf4
115     *                   F0            Fm            F1
116     *
117     *                 sf1:   1/2 Fm + 1/2 F0         sf3:   1/2 F1 + 1/2 Fm
118     *                 sf2:       Fm                  sf4:       F1
119     *  Returns     : void
120     *
121     **************************************************************************
122     */
123     void Int_lpc_1and3(
124         Word16 lsp_old[],  /* i : LSP vector at the 4th subfr. of past frame (M) */
125         Word16 lsp_mid[],  /* i : LSP vector at the 2nd subfr. of
126                               present frame (M)                              */
127         Word16 lsp_new[],  /* i : LSP vector at the 4th subfr. of
128                               present frame (M)                              */
129         Word16 Az[],       /* o : interpolated LP parameters in all subfr.
130                               (AZ_SIZE)                                      */
131         Flag   *pOverflow
132     );
133 
134     /*
135     **************************************************************************
136     *
137     *  Function    : Int_lpc_1and3_2
138     *  Purpose     : Interpolation of the LPC parameters. Same as the Int_lpc
139     *                function but we do not recompute Az() for subframe 2 and
140     *                4 because it is already available.
141     *  Returns     : void
142     *
143     **************************************************************************
144     */
145     void Int_lpc_1and3_2(
146         Word16 lsp_old[],  /* i : LSP vector at the 4th subfr. of past frame (M) */
147         Word16 lsp_mid[],  /* i : LSP vector at the 2nd subframe of
148                              present frame (M)                                  */
149         Word16 lsp_new[],  /* i : LSP vector at the 4th subframe of
150                              present frame (M)                                  */
151         Word16 Az[],       /* o :interpolated LP parameters
152                              in subframes 1 and 3 (AZ_SIZE)                     */
153         Flag   *pOverflow
154     );
155 
156     /*
157     **************************************************************************
158     *
159     *  Function    : Int_lpc_1to3
160     *  Purpose     : Interpolates the LSPs and converts to LPC parameters
161     *                to get a different LP filter in each subframe.
162     *  Description : The 20 ms speech frame is divided into 4 subframes.
163     *                The LSPs are quantized and transmitted at the 4th
164     *                subframes (once per frame) and interpolated at the
165     *                1st, 2nd and 3rd subframe.
166     *
167     *                      |------|------|------|------|
168     *                         sf1    sf2    sf3    sf4
169     *                   F0                          F1
170     *
171     *                 sf1:   3/4 F0 + 1/4 F1         sf3:   1/4 F0 + 3/4 F1
172     *                 sf2:   1/2 F0 + 1/2 F1         sf4:       F1
173     *  Returns     : void
174     *
175     **************************************************************************
176     */
177     void Int_lpc_1to3(
178         Word16 lsp_old[], /* i : LSP vector at the 4th SF of past frame (M)      */
179         Word16 lsp_new[], /* i : LSP vector at the 4th SF of present frame (M)   */
180         Word16 Az[],      /* o : interpolated LP parameters in all SFs (AZ_SIZE) */
181         Flag   *pOverflow
182     );
183 
184     /*
185     **************************************************************************
186     *
187     *  Function    : Int_lpc_1to3_2
188     *  Purpose     : Interpolation of the LPC parameters. Same as the Int_lpc
189     *                function but we do not recompute Az() for subframe 4
190     *                because it is already available.
191     *  Returns     : void
192     *
193     **************************************************************************
194     */
195     void Int_lpc_1to3_2(
196         Word16 lsp_old[],  /* i : LSP vector at the 4th SF of past frame (M) */
197         Word16 lsp_new[],  /* i : LSP vector at the 4th SF present frame (M) */
198         Word16 Az[],       /* o :interpolated LP parameters in SFs 1, 2, 3
199                              (AZ_SIZE)                                   */
200         Flag   *pOverflow
201     );
202 
203     /*----------------------------------------------------------------------------
204     ; END
205     ----------------------------------------------------------------------------*/
206 #ifdef __cplusplus
207 }
208 #endif
209 
210 #endif /* _INT_LPC_H_ */
211 
212 
213