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: /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 69 extern "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