1/******************************************************************************
2 *
3 *  Copyright (C) 1999-2012 Broadcom Corporation
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19/******************************************************************************
20 *
21 *  This file contains the Windowing coeffs for synthesis filter
22 *
23 ******************************************************************************/
24
25#include "sbc_encoder.h"
26
27#if (SBC_ARM_ASM_OPT==FALSE && SBC_IPAQ_OPT==FALSE)
28#if (SBC_IS_64_MULT_IN_WINDOW_ACCU ==  FALSE)
29/*Window coeff for 4 sub band case*/
30const SINT16 gas32CoeffFor4SBs[] =
31{
32    (SINT16)((SINT32)0x00000000 >> 16),	(SINT16)0x00000000,
33	(SINT16)((SINT32)0x001194E6 >> 16),	(SINT16)0x001194E6,
34	(SINT16)((SINT32)0x0030E2D3 >> 16),	(SINT16)0x0030E2D3,
35	(SINT16)((SINT32)0x00599403 >> 16),	(SINT16)0x00599403,
36	(SINT16)((SINT32)0x007DBCC8 >> 16),	(SINT16)0x007DBCC8,
37	(SINT16)((SINT32)0x007F88E4 >> 16),	(SINT16)0x007F88E4,
38	(SINT16)((SINT32)0x003D239B >> 16),	(SINT16)0x003D239B,
39	(SINT16)((SINT32)0xFF9BB9D5 >> 16),	(SINT16)0xFF9BB9D5,
40
41	(SINT16)((SINT32)0x01659F45 >> 16),	(SINT16)0x01659F45,
42	(SINT16)((SINT32)0x029DBAA3 >> 16),	(SINT16)0x029DBAA3,
43	(SINT16)((SINT32)0x03B23341 >> 16),	(SINT16)0x03B23341,
44	(SINT16)((SINT32)0x041EEE40 >> 16),	(SINT16)0x041EEE40,
45	(SINT16)((SINT32)0x034FEE2C >> 16),	(SINT16)0x034FEE2C,
46	(SINT16)((SINT32)0x00C8F2BC >> 16),	(SINT16)0x00C8F2BC,
47	(SINT16)((SINT32)0xFC4F91D4 >> 16),	(SINT16)0xFC4F91D4,
48	(SINT16)((SINT32)0xF60FAF37 >> 16),	(SINT16)0xF60FAF37,
49
50	(SINT16)((SINT32)0x115B1ED2 >> 16),	(SINT16)0x115B1ED2,
51	(SINT16)((SINT32)0x18F55C90 >> 16),	(SINT16)0x18F55C90,
52	(SINT16)((SINT32)0x1F91CA46 >> 16),	(SINT16)0x1F91CA46,
53	(SINT16)((SINT32)0x2412F251 >> 16),	(SINT16)0x2412F251,
54	(SINT16)((SINT32)0x25AC1FF2 >> 16),	(SINT16)0x25AC1FF2,
55	(SINT16)((SINT32)0x2412F251 >> 16),	(SINT16)0x2412F251,
56	(SINT16)((SINT32)0x1F91CA46 >> 16),	(SINT16)0x1F91CA46,
57	(SINT16)((SINT32)0x18F55C90 >> 16),	(SINT16)0x18F55C90,
58
59	(SINT16)((SINT32)0xEEA4E12E >> 16),	(SINT16)0xEEA4E12E,
60	(SINT16)((SINT32)0xF60FAF37 >> 16),	(SINT16)0xF60FAF37,
61	(SINT16)((SINT32)0xFC4F91D4 >> 16),	(SINT16)0xFC4F91D4,
62	(SINT16)((SINT32)0x00C8F2BC >> 16),	(SINT16)0x00C8F2BC,
63	(SINT16)((SINT32)0x034FEE2C >> 16),	(SINT16)0x034FEE2C,
64	(SINT16)((SINT32)0x041EEE40 >> 16),	(SINT16)0x041EEE40,
65	(SINT16)((SINT32)0x03B23341 >> 16),	(SINT16)0x03B23341,
66	(SINT16)((SINT32)0x029DBAA3 >> 16),	(SINT16)0x029DBAA3,
67
68	(SINT16)((SINT32)0xFE9A60BB >> 16),	(SINT16)0xFE9A60BB,
69	(SINT16)((SINT32)0xFF9BB9D5 >> 16),	(SINT16)0xFF9BB9D5,
70	(SINT16)((SINT32)0x003D239B >> 16),	(SINT16)0x003D239B,
71	(SINT16)((SINT32)0x007F88E4 >> 16),	(SINT16)0x007F88E4,
72	(SINT16)((SINT32)0x007DBCC8 >> 16),	(SINT16)0x007DBCC8,
73	(SINT16)((SINT32)0x00599403 >> 16),	(SINT16)0x00599403,
74	(SINT16)((SINT32)0x0030E2D3 >> 16),	(SINT16)0x0030E2D3,
75	(SINT16)((SINT32)0x001194E6 >> 16),	(SINT16)0x001194E6
76};
77
78/*Window coeff for 8 sub band case*/
79const SINT16 gas32CoeffFor8SBs[] =
80{
81    (SINT16)((SINT32)0x00000000 >>16),	(SINT16)0x00000000,
82	(SINT16)((SINT32)0x00052173 >>16),	(SINT16)0x00052173,
83	(SINT16)((SINT32)0x000B3F71 >>16),	(SINT16)0x000B3F71,
84	(SINT16)((SINT32)0x00122C7D >>16),	(SINT16)0x00122C7D,
85	(SINT16)((SINT32)0x001AFF89 >>16),	(SINT16)0x001AFF89,
86	(SINT16)((SINT32)0x00255A62 >>16),	(SINT16)0x00255A62,
87	(SINT16)((SINT32)0x003060F4 >>16),	(SINT16)0x003060F4,
88	(SINT16)((SINT32)0x003A72E7 >>16),	(SINT16)0x003A72E7,
89
90	(SINT16)((SINT32)0x0041EC6A >>16),	(SINT16)0x0041EC6A,  /* 8 */
91	(SINT16)((SINT32)0x0044EF48 >>16),	(SINT16)0x0044EF48,
92	(SINT16)((SINT32)0x00415B75 >>16),	(SINT16)0x00415B75,
93	(SINT16)((SINT32)0x0034F8B6 >>16),	(SINT16)0x0034F8B6,
94	(SINT16)((SINT32)0x001D8FD2 >>16),	(SINT16)0x001D8FD2,
95	(SINT16)((SINT32)0xFFFA2413 >>16),	(SINT16)0xFFFA2413,
96	(SINT16)((SINT32)0xFFC9F10E >>16),	(SINT16)0xFFC9F10E,
97	(SINT16)((SINT32)0xFF8D6793 >>16),	(SINT16)0xFF8D6793,
98
99	(SINT16)((SINT32)0x00B97348 >>16),	(SINT16)0x00B97348,  /* 16 */
100	(SINT16)((SINT32)0x01071B96 >>16),	(SINT16)0x01071B96,
101	(SINT16)((SINT32)0x0156B3CA >>16),	(SINT16)0x0156B3CA,
102	(SINT16)((SINT32)0x01A1B38B >>16),	(SINT16)0x01A1B38B,
103	(SINT16)((SINT32)0x01E0224C >>16),	(SINT16)0x01E0224C,
104	(SINT16)((SINT32)0x0209291F >>16),	(SINT16)0x0209291F,
105	(SINT16)((SINT32)0x02138653 >>16),	(SINT16)0x02138653,
106	(SINT16)((SINT32)0x01F5F424 >>16),	(SINT16)0x01F5F424,
107
108	(SINT16)((SINT32)0x01A7ECEF >>16),	(SINT16)0x01A7ECEF, /* 24 */
109	(SINT16)((SINT32)0x01223EBA >>16),	(SINT16)0x01223EBA,
110	(SINT16)((SINT32)0x005FD0FF >>16),	(SINT16)0x005FD0FF,
111	(SINT16)((SINT32)0xFF5EEB73 >>16),	(SINT16)0xFF5EEB73,
112	(SINT16)((SINT32)0xFE20435D >>16),	(SINT16)0xFE20435D,
113	(SINT16)((SINT32)0xFCA86E7E >>16),	(SINT16)0xFCA86E7E,
114	(SINT16)((SINT32)0xFAFF95FC >>16),	(SINT16)0xFAFF95FC,
115	(SINT16)((SINT32)0xF9312891 >>16),	(SINT16)0xF9312891,
116
117	(SINT16)((SINT32)0x08B4307A >>16),	(SINT16)0x08B4307A, /* 32 */
118	(SINT16)((SINT32)0x0A9F3E9A >>16),	(SINT16)0x0A9F3E9A,
119	(SINT16)((SINT32)0x0C7D59B6 >>16),	(SINT16)0x0C7D59B6,
120	(SINT16)((SINT32)0x0E3BB16F >>16),	(SINT16)0x0E3BB16F,
121	(SINT16)((SINT32)0x0FC721F9 >>16),	(SINT16)0x0FC721F9,
122	(SINT16)((SINT32)0x110ECEF0 >>16),	(SINT16)0x110ECEF0,
123	(SINT16)((SINT32)0x120435FA >>16),	(SINT16)0x120435FA,
124	(SINT16)((SINT32)0x129C226F >>16),	(SINT16)0x129C226F,
125
126	(SINT16)((SINT32)0x12CF6C75 >>16),	(SINT16)0x12CF6C75, /* 40 */
127	(SINT16)((SINT32)0x129C226F >>16),	(SINT16)0x129C226F,
128	(SINT16)((SINT32)0x120435FA >>16),	(SINT16)0x120435FA,
129	(SINT16)((SINT32)0x110ECEF0 >>16),	(SINT16)0x110ECEF0,
130	(SINT16)((SINT32)0x0FC721F9 >>16),	(SINT16)0x0FC721F9,
131	(SINT16)((SINT32)0x0E3BB16F >>16),	(SINT16)0x0E3BB16F,
132	(SINT16)((SINT32)0x0C7D59B6 >>16),	(SINT16)0x0C7D59B6,
133	(SINT16)((SINT32)0x0A9F3E9A >>16),	(SINT16)0x0A9F3E9A,
134
135	(SINT16)((SINT32)0xF74BCF86 >>16),	(SINT16)0xF74BCF86, /* 48 */
136	(SINT16)((SINT32)0xF9312891 >>16),	(SINT16)0xF9312891,
137	(SINT16)((SINT32)0xFAFF95FC >>16),	(SINT16)0xFAFF95FC,
138	(SINT16)((SINT32)0xFCA86E7E >>16),	(SINT16)0xFCA86E7E,
139	(SINT16)((SINT32)0xFE20435D >>16),	(SINT16)0xFE20435D,
140	(SINT16)((SINT32)0xFF5EEB73 >>16),	(SINT16)0xFF5EEB73,
141	(SINT16)((SINT32)0x005FD0FF >>16),	(SINT16)0x005FD0FF,
142	(SINT16)((SINT32)0x01223EBA >>16),	(SINT16)0x01223EBA,
143
144	(SINT16)((SINT32)0x01A7ECEF >>16),	(SINT16)0x01A7ECEF, /* 56 */
145	(SINT16)((SINT32)0x01F5F424 >>16),	(SINT16)0x01F5F424,
146	(SINT16)((SINT32)0x02138653 >>16),	(SINT16)0x02138653,
147	(SINT16)((SINT32)0x0209291F >>16),	(SINT16)0x0209291F,
148	(SINT16)((SINT32)0x01E0224C >>16),	(SINT16)0x01E0224C,
149	(SINT16)((SINT32)0x01A1B38B >>16),	(SINT16)0x01A1B38B,
150	(SINT16)((SINT32)0x0156B3CA >>16),	(SINT16)0x0156B3CA,
151	(SINT16)((SINT32)0x01071B96 >>16),	(SINT16)0x01071B96,
152
153	(SINT16)((SINT32)0xFF468CB8 >>16),	(SINT16)0xFF468CB8, /* 64 */
154	(SINT16)((SINT32)0xFF8D6793 >>16),	(SINT16)0xFF8D6793,
155	(SINT16)((SINT32)0xFFC9F10E >>16),	(SINT16)0xFFC9F10E,
156	(SINT16)((SINT32)0xFFFA2413 >>16),	(SINT16)0xFFFA2413,
157	(SINT16)((SINT32)0x001D8FD2 >>16),	(SINT16)0x001D8FD2,
158	(SINT16)((SINT32)0x0034F8B6 >>16),	(SINT16)0x0034F8B6,
159	(SINT16)((SINT32)0x00415B75 >>16),	(SINT16)0x00415B75,
160	(SINT16)((SINT32)0x0044EF48 >>16),	(SINT16)0x0044EF48,
161
162	(SINT16)((SINT32)0x0041EC6A >>16),	(SINT16)0x0041EC6A, /* 72 */
163	(SINT16)((SINT32)0x003A72E7 >>16),	(SINT16)0x003A72E7,
164	(SINT16)((SINT32)0x003060F4 >>16),	(SINT16)0x003060F4,
165	(SINT16)((SINT32)0x00255A62 >>16),	(SINT16)0x00255A62,
166	(SINT16)((SINT32)0x001AFF89 >>16),	(SINT16)0x001AFF89,
167	(SINT16)((SINT32)0x00122C7D >>16),	(SINT16)0x00122C7D,
168	(SINT16)((SINT32)0x000B3F71 >>16),	(SINT16)0x000B3F71,
169	(SINT16)((SINT32)0x00052173 >>16),	(SINT16)0x00052173
170};
171
172#else
173
174/*Window coeff for 4 sub band case*/
175const SINT32 gas32CoeffFor4SBs[] =
176{
177    (SINT32)0x00000000,
178	(SINT32)0x001194E6,
179	(SINT32)0x0030E2D3,
180	(SINT32)0x00599403,
181	(SINT32)0x007DBCC8,
182	(SINT32)0x007F88E4,
183	(SINT32)0x003D239B,
184	(SINT32)0xFF9BB9D5,
185
186	(SINT32)0x01659F45,
187	(SINT32)0x029DBAA3,
188	(SINT32)0x03B23341,
189	(SINT32)0x041EEE40,
190	(SINT32)0x034FEE2C,
191	(SINT32)0x00C8F2BC,
192	(SINT32)0xFC4F91D4,
193	(SINT32)0xF60FAF37,
194
195	(SINT32)0x115B1ED2,
196	(SINT32)0x18F55C90,
197	(SINT32)0x1F91CA46,
198	(SINT32)0x2412F251,
199	(SINT32)0x25AC1FF2,
200	(SINT32)0x2412F251,
201	(SINT32)0x1F91CA46,
202	(SINT32)0x18F55C90,
203
204	(SINT32)0xEEA4E12E,
205	(SINT32)0xF60FAF37,
206	(SINT32)0xFC4F91D4,
207	(SINT32)0x00C8F2BC,
208	(SINT32)0x034FEE2C,
209	(SINT32)0x041EEE40,
210	(SINT32)0x03B23341,
211	(SINT32)0x029DBAA3,
212
213	(SINT32)0xFE9A60BB,
214	(SINT32)0xFF9BB9D5,
215	(SINT32)0x003D239B,
216	(SINT32)0x007F88E4,
217	(SINT32)0x007DBCC8,
218	(SINT32)0x00599403,
219	(SINT32)0x0030E2D3,
220	(SINT32)0x001194E6
221};
222
223/*Window coeff for 8 sub band case*/
224const SINT32 gas32CoeffFor8SBs[] =
225{
226    (SINT32)0x00000000,
227	(SINT32)0x00052173,
228	(SINT32)0x000B3F71,
229	(SINT32)0x00122C7D,
230	(SINT32)0x001AFF89,
231	(SINT32)0x00255A62,
232	(SINT32)0x003060F4,
233	(SINT32)0x003A72E7,
234
235	(SINT32)0x0041EC6A,  /* 8 */
236	(SINT32)0x0044EF48,
237	(SINT32)0x00415B75,
238	(SINT32)0x0034F8B6,
239	(SINT32)0x001D8FD2,
240	(SINT32)0xFFFA2413,
241	(SINT32)0xFFC9F10E,
242	(SINT32)0xFF8D6793,
243
244	(SINT32)0x00B97348,  /* 16 */
245	(SINT32)0x01071B96,
246	(SINT32)0x0156B3CA,
247	(SINT32)0x01A1B38B,
248	(SINT32)0x01E0224C,
249	(SINT32)0x0209291F,
250	(SINT32)0x02138653,
251	(SINT32)0x01F5F424,
252
253	(SINT32)0x01A7ECEF, /* 24 */
254	(SINT32)0x01223EBA,
255	(SINT32)0x005FD0FF,
256	(SINT32)0xFF5EEB73,
257	(SINT32)0xFE20435D,
258	(SINT32)0xFCA86E7E,
259	(SINT32)0xFAFF95FC,
260	(SINT32)0xF9312891,
261
262	(SINT32)0x08B4307A, /* 32 */
263	(SINT32)0x0A9F3E9A,
264	(SINT32)0x0C7D59B6,
265	(SINT32)0x0E3BB16F,
266	(SINT32)0x0FC721F9,
267	(SINT32)0x110ECEF0,
268	(SINT32)0x120435FA,
269	(SINT32)0x129C226F,
270
271	(SINT32)0x12CF6C75, /* 40 */
272	(SINT32)0x129C226F,
273	(SINT32)0x120435FA,
274	(SINT32)0x110ECEF0,
275	(SINT32)0x0FC721F9,
276	(SINT32)0x0E3BB16F,
277	(SINT32)0x0C7D59B6,
278	(SINT32)0x0A9F3E9A,
279
280	(SINT32)0xF74BCF86, /* 48 */
281	(SINT32)0xF9312891,
282	(SINT32)0xFAFF95FC,
283	(SINT32)0xFCA86E7E,
284	(SINT32)0xFE20435D,
285	(SINT32)0xFF5EEB73,
286	(SINT32)0x005FD0FF,
287	(SINT32)0x01223EBA,
288
289	(SINT32)0x01A7ECEF, /* 56 */
290	(SINT32)0x01F5F424,
291	(SINT32)0x02138653,
292	(SINT32)0x0209291F,
293	(SINT32)0x01E0224C,
294	(SINT32)0x01A1B38B,
295	(SINT32)0x0156B3CA,
296	(SINT32)0x01071B96,
297
298	(SINT32)0xFF468CB8, /* 64 */
299	(SINT32)0xFF8D6793,
300	(SINT32)0xFFC9F10E,
301	(SINT32)0xFFFA2413,
302	(SINT32)0x001D8FD2,
303	(SINT32)0x0034F8B6,
304	(SINT32)0x00415B75,
305	(SINT32)0x0044EF48,
306
307	(SINT32)0x0041EC6A, /* 72 */
308	(SINT32)0x003A72E7,
309	(SINT32)0x003060F4,
310	(SINT32)0x00255A62,
311	(SINT32)0x001AFF89,
312	(SINT32)0x00122C7D,
313	(SINT32)0x000B3F71,
314	(SINT32)0x00052173
315};
316
317#endif
318#endif
319
320