1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/******************************************************************
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBC Speech Coder ANSI-C Source Code
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org define.h
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org******************************************************************/
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_MAIN_SOURCE_DEFINES_H_
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_MAIN_SOURCE_DEFINES_H_
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2169370488385c14d73e6ae8a3d5001c42884f9275henrike@webrtc.org#include <string.h>
22a11402cdbf99a12d58421d5b446982e8d30c40caandresp@webrtc.org#include "signal_processing_library.h"
23a11402cdbf99a12d58421d5b446982e8d30c40caandresp@webrtc.org#include "webrtc/typedefs.h"
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* general codec settings */
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FS       8000
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BLOCKL_20MS     160
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BLOCKL_30MS     240
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BLOCKL_MAX     240
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NSUB_20MS     4
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NSUB_30MS     6
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NSUB_MAX     6
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NASUB_20MS     2
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NASUB_30MS     4
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NASUB_MAX     4
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define SUBL      40
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define STATE_LEN     80
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define STATE_SHORT_LEN_30MS  58
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define STATE_SHORT_LEN_20MS  57
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* LPC settings */
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_FILTERORDER    10
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_LOOKBACK    60
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_N_20MS     1
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_N_30MS     2
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_N_MAX     2
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_ASYMDIFF    20
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LSF_NSPLIT     3
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LSF_NUMBER_OF_STEPS   4
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define LPC_HALFORDER    5
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define COS_GRID_POINTS 60
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* cb settings */
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_NSTAGES     3
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_EXPAND     2
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_MEML      147
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_FILTERLEN    (2*4)
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_HALFFILTERLEN   4
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_RESRANGE     34
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_MAXGAIN_FIXQ6   83 /* error = -0.24% */
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define CB_MAXGAIN_FIXQ14   21299
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* enhancer */
67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_BLOCKL     80  /* block length */
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_BLOCKL_HALF    (ENH_BLOCKL/2)
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_HL      3  /* 2*ENH_HL+1 is number blocks
71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                           in said second sequence */
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_SLOP     2  /* max difference estimated and
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                           correct pitch period */
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_PLOCSL     8  /* pitch-estimates and
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                                           pitch-locations buffer length */
76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_OVERHANG    2
77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_UPS0     4  /* upsampling rate */
78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_FL0      3  /* 2*FLO+1 is the length of each filter */
79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_FLO_MULT2_PLUS1   7
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_VECTL     (ENH_BLOCKL+2*ENH_FL0)
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_CORRDIM     (2*ENH_SLOP+1)
82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_NBLOCKS     (BLOCKL/ENH_BLOCKL)
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_NBLOCKS_EXTRA   5
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_NBLOCKS_TOT    8 /* ENH_NBLOCKS+ENH_NBLOCKS_EXTRA */
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_BUFL     (ENH_NBLOCKS_TOT)*ENH_BLOCKL
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_BUFL_FILTEROVERHEAD  3
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_A0      819   /* Q14 */
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_A0_MINUS_A0A0DIV4  848256041 /* Q34 */
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ENH_A0DIV2     26843546 /* Q30 */
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* PLC */
92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* Down sampling */
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FILTERORDER_DS_PLUS1  7
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define DELAY_DS     3
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define FACTOR_DS     2
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* bit stream defs */
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NO_OF_BYTES_20MS   38
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NO_OF_BYTES_30MS   50
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NO_OF_WORDS_20MS   19
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define NO_OF_WORDS_30MS   25
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define STATE_BITS     3
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define BYTE_LEN     8
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ULP_CLASSES     3
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* help parameters */
110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define TWO_PI_FIX     25736 /* Q12 */
112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* Constants for codebook search and creation */
114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ST_MEM_L_TBL  85
116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define MEM_LF_TBL  147
117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* Struct for the bits */
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtypedef struct iLBC_bits_t_ {
121fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lsf[LSF_NSPLIT*LPC_N_MAX];
122fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t cb_index[CB_NSTAGES*(NASUB_MAX+1)];  /* First CB_NSTAGES values contains extra CB index */
123fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t gain_index[CB_NSTAGES*(NASUB_MAX+1)]; /* First CB_NSTAGES values contains extra CB gain */
124fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t idxForMax;
125fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t state_first;
126fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t idxVec[STATE_SHORT_LEN_30MS];
127fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t firstbits;
128fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t startIdx;
129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} iLBC_bits;
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* type definition encoder instance */
132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtypedef struct iLBC_Enc_Inst_t_ {
133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* flag for frame size mode */
135fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t mode;
136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* basic parameters for different frame sizes */
138fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t blockl;
139fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t nsub;
140fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t nasub;
141fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t no_of_bytes, no_of_words;
142fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lpc_n;
143fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t state_short_len;
144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* analysis filter state */
146fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t anaMem[LPC_FILTERORDER];
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* Fix-point old lsf parameters for interpolation */
149fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lsfold[LPC_FILTERORDER];
150fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lsfdeqold[LPC_FILTERORDER];
151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* signal buffer for LP analysis */
153fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lpc_buffer[LPC_LOOKBACK + BLOCKL_MAX];
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* state of input HP filter */
156fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t hpimemx[2];
157fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t hpimemy[4];
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef SPLIT_10MS
160fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t weightdenumbuf[66];
161fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t past_samples[160];
162fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  uint16_t bytes[25];
163fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t section;
164fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t Nfor_flag;
165fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t Nback_flag;
166fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t start_pos;
167fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t diff;
168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} iLBC_Enc_Inst_t;
171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* type definition decoder instance */
173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtypedef struct iLBC_Dec_Inst_t_ {
174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* flag for frame size mode */
176fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t mode;
177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* basic parameters for different frame sizes */
179fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t blockl;
180fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t nsub;
181fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t nasub;
182fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t no_of_bytes, no_of_words;
183fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lpc_n;
184fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t state_short_len;
185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* synthesis filter state */
187fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t syntMem[LPC_FILTERORDER];
188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* old LSF for interpolation */
190fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t lsfdeqold[LPC_FILTERORDER];
191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* pitch lag estimated in enhancer and used in PLC */
193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  int last_lag;
194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* PLC state information */
196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  int consPLICount, prev_enh_pl;
197fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t perSquare;
198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
199fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t prevScale, prevPLI;
200fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t prevLag, prevLpc[LPC_FILTERORDER+1];
201fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t prevResidual[NSUB_MAX*SUBL];
202fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t seed;
203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* previous synthesis filter parameters */
205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
206fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t old_syntdenum[(LPC_FILTERORDER + 1)*NSUB_MAX];
207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* state of output HP filter */
209fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t hpimemx[2];
210fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t hpimemy[4];
211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  /* enhancer state information */
213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  int use_enhancer;
214fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t enh_buf[ENH_BUFL+ENH_BUFL_FILTEROVERHEAD];
215fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org  int16_t enh_period[ENH_NBLOCKS_TOT];
216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} iLBC_Dec_Inst_t;
218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
220