1d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/* ------------------------------------------------------------------
2d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Copyright (C) 1998-2009 PacketVideo
3d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
4d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * you may not use this file except in compliance with the License.
6d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * You may obtain a copy of the License at
7d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
8d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber *
10d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * Unless required by applicable law or agreed to in writing, software
11d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * express or implied.
14d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * See the License for the specific language governing permissions
15d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * and limitations under the License.
16d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber * -------------------------------------------------------------------
17d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber */
18d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/****************************************************************************************
19d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberPortions of this file are derived from the following 3GPP standard:
20d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
21d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    3GPP TS 26.073
22d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Available from http://www.3gpp.org
24d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
25d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26d49b526dd2009270cb15f7fe4e70b74673950608Andreas HuberPermission to distribute, modify and use this file under the standard license
27d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huberterms listed above has been obtained from the copyright holder.
28d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber****************************************************************************************/
29d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*
30d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
31d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
32d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
33d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
34d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Filename: /audio/gsm_amr/c/src/include/cod_amr.h
35d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
36d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     Date: 02/07/2002
37d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
38d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
39d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber REVISION HISTORY
40d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
41d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description: Added overflow flag as an element to the cod_amrState data
42d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              structure. Corrected the function prototype declaration for
43d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber              cod_amr().
44d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
45d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description:  Replaced "int" and/or "char" with OSCL defined types.
46d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
47d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description: Moved _cplusplus #ifdef after Include section.
48d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
49d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber Description:
50d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
51d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
52d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber INCLUDE DESCRIPTION
53d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
54d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber       File             : cod_amr.h
55d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber       Purpose          : Main encoder routine operating on a frame basis.
56d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
57d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber------------------------------------------------------------------------------
58d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber*/
59d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
60d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#ifndef cod_amr_h
61d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#define cod_amr_h "$Id $"
62d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
63d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*----------------------------------------------------------------------------
64d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber; INCLUDES
65d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber----------------------------------------------------------------------------*/
66d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "typedef.h"
67d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "cnst.h"
68d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "mode.h"
69d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "lpc.h"
70d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "lsp.h"
71d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "cl_ltp.h"
72d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "gain_q.h"
73d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "p_ol_wgh.h"
74d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "ton_stab.h"
75d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "vad.h"
76d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#include "dtx_enc.h"
77d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
78d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber/*--------------------------------------------------------------------------*/
79d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#ifdef __cplusplus
80d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huberextern "C"
81d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber{
82d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#endif
83d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
84d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
85d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; MACROS
86d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; [Define module specific macros here]
87d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
88d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
89d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
90d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; DEFINES
91d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; [Include all pre-processor statements here.]
92d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
93d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
94d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
95d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
96d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; EXTERNAL VARIABLES REFERENCES
97d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; [Declare variables used in this module but defined elsewhere]
98d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
99d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
100d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
101d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; SIMPLE TYPEDEF'S
102d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
103d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
104d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
105d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; ENUMERATED TYPEDEF'S
106d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
107d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
108d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
109d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; STRUCTURES TYPEDEF'S
110d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
111d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*-----------------------------------------------------------*
112d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *    Coder constant parameters (defined in "cnst.h")        *
113d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *-----------------------------------------------------------*
114d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_WINDOW    : LPC analysis window size.                 *
115d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_NEXT      : Samples of next frame needed for autocor. *
116d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_FRAME     : Frame size.                               *
117d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_FRAME_BY2 : Half the frame size.                      *
118d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_SUBFR     : Sub-frame size.                           *
119d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   M           : LPC order.                                *
120d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   MP1         : LPC order+1                               *
121d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_TOTAL7k4  : Total size of speech buffer.              *
122d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   PIT_MIN7k4  : Minimum pitch lag.                        *
123d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   PIT_MAX     : Maximum pitch lag.                        *
124d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   L_INTERPOL  : Length of filter for interpolation        *
125d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *-----------------------------------------------------------*/
126d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    typedef struct
127d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    {
128d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Speech vector */
129d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 old_speech[L_TOTAL];
130d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *speech, *p_window, *p_window_12k2;
131d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *new_speech;             /* Global variable */
132d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
133d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Weight speech vector */
134d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 old_wsp[L_FRAME + PIT_MAX];
135d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *wsp;
136d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
137d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* OL LTP states */
138d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 old_lags[5];
139d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 ol_gain_flg[2];
140d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
141d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Excitation vector */
142d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 old_exc[L_FRAME + PIT_MAX + L_INTERPOL];
143d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *exc;
144d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
145d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Zero vector */
146d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 ai_zero[L_SUBFR + MP1];
147d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *zero;
148d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
149d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Impulse response vector */
150d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 *h1;
151d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 hvec[L_SUBFR * 2];
152d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
153d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Substates */
154d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        lpcState   *lpcSt;
155d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        lspState   *lspSt;
156d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        clLtpState *clLtpSt;
157d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        gainQuantState  *gainQuantSt;
158d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        pitchOLWghtState *pitchOLWghtSt;
159d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        tonStabState *tonStabSt;
160d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        vadState *vadSt;
161d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Flag dtx;
162d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        dtx_encState *dtx_encSt;
163d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
164d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Filter's memory */
165d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 mem_syn[M], mem_w0[M], mem_w[M];
166d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 mem_err[M + L_SUBFR], *error;
167d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
168d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Word16 sharp;
169d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
170d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        /* Overflow flag */
171d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber        Flag   overflow;
172d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
173d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    } cod_amrState;
174d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
175d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
176d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*----------------------------------------------------------------------------
177d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; GLOBAL FUNCTION DEFINITIONS
178d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ; [List function prototypes here]
179d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    ----------------------------------------------------------------------------*/
180d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*
181d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
182d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
183d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Function    : cod_amr_init
184d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Purpose     : Allocates memory and initializes state variables
185d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Description : Stores pointer to filter status struct in *st. This
186d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *                pointer has to be passed to cod_amr in each call.
187d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *                 - initilize pointers to speech buffer
188d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *                 - initialize static  pointers
189d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *                 - set static vectors to zero
190d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Returns     : 0 on success
191d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
192d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
193d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    */
194d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Word16 cod_amr_init(cod_amrState **st, Flag dtx);
195d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
196d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*
197d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
198d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
199d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Function    : cod_amr_reset
200d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Purpose     : Resets state memory
201d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Returns     : 0 on success
202d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
203d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
204d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    */
205d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Word16 cod_amr_reset(cod_amrState *st);
206d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
207d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /*
208d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
209d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
210d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Function    : cod_amr_exit
211d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Purpose     : The memory used for state memory is freed
212d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *  Description : Stores NULL in *st
213d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    *
214d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    **************************************************************************
215d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    */
216d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    void cod_amr_exit(cod_amrState **st);
217d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
218d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /***************************************************************************
219d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   FUNCTION:   cod_amr_first
220d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
221d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   PURPOSE:  Copes with look-ahead.
222d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
223d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   INPUTS:
224d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       No input argument are passed to this function. However, before
225d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       calling this function, 40 new speech data should be copied to the
226d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       vector new_speech[]. This is a global pointer which is declared in
227d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       this file (it points to the end of speech buffer minus 200).
228d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
229d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     ***************************************************************************/
230d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
231d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Word16 cod_amr_first(cod_amrState *st,     /* i/o : State struct            */
232d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                         Word16 new_speech[]   /* i   : speech input (L_FRAME)  */
233d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                        );
234d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
235d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    /***************************************************************************
236d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   FUNCTION:   cod_amr
237d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
238d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   PURPOSE:  Main encoder routine.
239d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
240d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   DESCRIPTION: This function is called every 20 ms speech frame,
241d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       operating on the newly read 160 speech samples. It performs the
242d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       principle encoding functions to produce the set of encoded parameters
243d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       which include the LSP, adaptive codebook, and fixed codebook
244d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       quantization indices (addresses and gains).
245d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
246d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   INPUTS:
247d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       No input argument are passed to this function. However, before
248d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       calling this function, 160 new speech data should be copied to the
249d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       vector new_speech[]. This is a global pointer which is declared in
250d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       this file (it points to the end of speech buffer minus 160).
251d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
252d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *   OUTPUTS:
253d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
254d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       ana[]:     vector of analysis parameters.
255d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *       synth[]:   Local synthesis speech (for debugging purposes)
256d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     *
257d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber     ***************************************************************************/
258d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
259d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber    Word16 cod_amr(cod_amrState *st,         /* i/o : State struct                 */
260d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   enum Mode mode,           /* i   : AMR mode                     */
261d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   Word16 new_speech[],      /* i   : speech input (L_FRAME)       */
262d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   Word16 ana[],             /* o   : Analysis parameters          */
263d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   enum Mode *usedMode,      /* o   : used mode                    */
264d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                   Word16 synth[]            /* o   : Local synthesis              */
265d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber                  );
266d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
267d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
268d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#ifdef __cplusplus
269d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber}
270d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#endif
271d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
272d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber#endif  /* _cod_amr_h_ */
273d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
274d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
275d49b526dd2009270cb15f7fe4e70b74673950608Andreas Huber
276