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/****************************************************************************************
19Portions 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)
26Permission to distribute, modify and use this file under the standard license
27terms listed above has been obtained from the copyright holder.
28****************************************************************************************/
29/*
30------------------------------------------------------------------------------
31
32
33
34 Filename: /audio/gsm_amr/c/src/include/levinson.h
35
36     Date: 01/29/2002
37
38------------------------------------------------------------------------------
39 REVISION HISTORY
40 Description: 1. Modified "int" definition by Word16
41
42 Description:  Replaced "int" and/or "char" with OSCL defined types.
43
44 Description: Moved _cplusplus #ifdef after Include section.
45
46 Description:
47
48------------------------------------------------------------------------------
49 INCLUDE DESCRIPTION
50
51      File             : lag_wind.h
52      Purpose          : Lag windowing of autocorrelations.
53
54------------------------------------------------------------------------------
55*/
56
57#ifndef _LEVINSON_H_
58#define _LEVINSON_H_
59#define levinson_h "$Id $"
60
61/*----------------------------------------------------------------------------
62; INCLUDES
63----------------------------------------------------------------------------*/
64#include "typedef.h"
65#include "cnst.h"
66
67/*--------------------------------------------------------------------------*/
68#ifdef __cplusplus
69extern "C"
70{
71#endif
72
73    /*----------------------------------------------------------------------------
74    ; MACROS
75    ; [Define module specific macros here]
76    ----------------------------------------------------------------------------*/
77
78    /*----------------------------------------------------------------------------
79    ; DEFINES
80    ; [Include all pre-processor statements here.]
81    ----------------------------------------------------------------------------*/
82
83    /*----------------------------------------------------------------------------
84    ; EXTERNAL VARIABLES REFERENCES
85    ; [Declare variables used in this module but defined elsewhere]
86    ----------------------------------------------------------------------------*/
87
88    /*----------------------------------------------------------------------------
89    ; SIMPLE TYPEDEF'S
90    ----------------------------------------------------------------------------*/
91
92    /*----------------------------------------------------------------------------
93    ; ENUMERATED TYPEDEF'S
94    ----------------------------------------------------------------------------*/
95
96    /*----------------------------------------------------------------------------
97    ; STRUCTURES TYPEDEF'S
98    ----------------------------------------------------------------------------*/
99    typedef struct
100    {
101        Word16 old_A[M + 1];     /* Last A(z) for case of unstable filter */
102    } LevinsonState;
103
104    /*----------------------------------------------------------------------------
105    ; GLOBAL FUNCTION DEFINITIONS
106    ; [List function prototypes here]
107    ----------------------------------------------------------------------------*/
108    Word16 Levinson_init(LevinsonState **st);
109    /* initialize one instance of the pre processing state.
110       Stores pointer to filter status struct in *st. This pointer has to
111       be passed to Levinson in each call.
112       returns 0 on success
113     */
114
115    Word16 Levinson_reset(LevinsonState *st);
116    /* reset of pre processing state (i.e. set state memory to zero)
117       returns 0 on success
118     */
119    void Levinson_exit(LevinsonState **st);
120    /* de-initialize pre processing state (i.e. free status struct)
121       stores NULL in *st
122     */
123
124    Word16 Levinson(
125        LevinsonState *st,
126        Word16 Rh[],       /* i : Rh[m+1] Vector of autocorrelations (msb) */
127        Word16 Rl[],       /* i : Rl[m+1] Vector of autocorrelations (lsb) */
128        Word16 A[],        /* o : A[m]    LPC coefficients  (m = 10)       */
129        Word16 rc[],        /* o : rc[4]   First 4 reflection coefficients  */
130        Flag   *pOverflow
131    );
132
133
134
135#ifdef __cplusplus
136}
137#endif
138
139#endif  /* _LEVINSON_H_ */
140
141
142
143
144