1 /******************************************************************************
2  *
3  *  Copyright 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*/
30 const int16_t gas32CoeffFor4SBs[] = {(int16_t)((int32_t)0x00000000 >> 16), (int16_t)0x00000000,
31                                      (int16_t)((int32_t)0x001194E6 >> 16), (int16_t)0x001194E6,
32                                      (int16_t)((int32_t)0x0030E2D3 >> 16), (int16_t)0x0030E2D3,
33                                      (int16_t)((int32_t)0x00599403 >> 16), (int16_t)0x00599403,
34                                      (int16_t)((int32_t)0x007DBCC8 >> 16), (int16_t)0x007DBCC8,
35                                      (int16_t)((int32_t)0x007F88E4 >> 16), (int16_t)0x007F88E4,
36                                      (int16_t)((int32_t)0x003D239B >> 16), (int16_t)0x003D239B,
37                                      (int16_t)((int32_t)0xFF9BB9D5 >> 16), (int16_t)0xFF9BB9D5,
38 
39                                      (int16_t)((int32_t)0x01659F45 >> 16), (int16_t)0x01659F45,
40                                      (int16_t)((int32_t)0x029DBAA3 >> 16), (int16_t)0x029DBAA3,
41                                      (int16_t)((int32_t)0x03B23341 >> 16), (int16_t)0x03B23341,
42                                      (int16_t)((int32_t)0x041EEE40 >> 16), (int16_t)0x041EEE40,
43                                      (int16_t)((int32_t)0x034FEE2C >> 16), (int16_t)0x034FEE2C,
44                                      (int16_t)((int32_t)0x00C8F2BC >> 16), (int16_t)0x00C8F2BC,
45                                      (int16_t)((int32_t)0xFC4F91D4 >> 16), (int16_t)0xFC4F91D4,
46                                      (int16_t)((int32_t)0xF60FAF37 >> 16), (int16_t)0xF60FAF37,
47 
48                                      (int16_t)((int32_t)0x115B1ED2 >> 16), (int16_t)0x115B1ED2,
49                                      (int16_t)((int32_t)0x18F55C90 >> 16), (int16_t)0x18F55C90,
50                                      (int16_t)((int32_t)0x1F91CA46 >> 16), (int16_t)0x1F91CA46,
51                                      (int16_t)((int32_t)0x2412F251 >> 16), (int16_t)0x2412F251,
52                                      (int16_t)((int32_t)0x25AC1FF2 >> 16), (int16_t)0x25AC1FF2,
53                                      (int16_t)((int32_t)0x2412F251 >> 16), (int16_t)0x2412F251,
54                                      (int16_t)((int32_t)0x1F91CA46 >> 16), (int16_t)0x1F91CA46,
55                                      (int16_t)((int32_t)0x18F55C90 >> 16), (int16_t)0x18F55C90,
56 
57                                      (int16_t)((int32_t)0xEEA4E12E >> 16), (int16_t)0xEEA4E12E,
58                                      (int16_t)((int32_t)0xF60FAF37 >> 16), (int16_t)0xF60FAF37,
59                                      (int16_t)((int32_t)0xFC4F91D4 >> 16), (int16_t)0xFC4F91D4,
60                                      (int16_t)((int32_t)0x00C8F2BC >> 16), (int16_t)0x00C8F2BC,
61                                      (int16_t)((int32_t)0x034FEE2C >> 16), (int16_t)0x034FEE2C,
62                                      (int16_t)((int32_t)0x041EEE40 >> 16), (int16_t)0x041EEE40,
63                                      (int16_t)((int32_t)0x03B23341 >> 16), (int16_t)0x03B23341,
64                                      (int16_t)((int32_t)0x029DBAA3 >> 16), (int16_t)0x029DBAA3,
65 
66                                      (int16_t)((int32_t)0xFE9A60BB >> 16), (int16_t)0xFE9A60BB,
67                                      (int16_t)((int32_t)0xFF9BB9D5 >> 16), (int16_t)0xFF9BB9D5,
68                                      (int16_t)((int32_t)0x003D239B >> 16), (int16_t)0x003D239B,
69                                      (int16_t)((int32_t)0x007F88E4 >> 16), (int16_t)0x007F88E4,
70                                      (int16_t)((int32_t)0x007DBCC8 >> 16), (int16_t)0x007DBCC8,
71                                      (int16_t)((int32_t)0x00599403 >> 16), (int16_t)0x00599403,
72                                      (int16_t)((int32_t)0x0030E2D3 >> 16), (int16_t)0x0030E2D3,
73                                      (int16_t)((int32_t)0x001194E6 >> 16), (int16_t)0x001194E6};
74 
75 /*Window coeff for 8 sub band case*/
76 const int16_t gas32CoeffFor8SBs[] = {
77         (int16_t)((int32_t)0x00000000 >> 16), (int16_t)0x00000000,
78         (int16_t)((int32_t)0x00052173 >> 16), (int16_t)0x00052173,
79         (int16_t)((int32_t)0x000B3F71 >> 16), (int16_t)0x000B3F71,
80         (int16_t)((int32_t)0x00122C7D >> 16), (int16_t)0x00122C7D,
81         (int16_t)((int32_t)0x001AFF89 >> 16), (int16_t)0x001AFF89,
82         (int16_t)((int32_t)0x00255A62 >> 16), (int16_t)0x00255A62,
83         (int16_t)((int32_t)0x003060F4 >> 16), (int16_t)0x003060F4,
84         (int16_t)((int32_t)0x003A72E7 >> 16), (int16_t)0x003A72E7,
85 
86         (int16_t)((int32_t)0x0041EC6A >> 16), (int16_t)0x0041EC6A, /* 8 */
87         (int16_t)((int32_t)0x0044EF48 >> 16), (int16_t)0x0044EF48,
88         (int16_t)((int32_t)0x00415B75 >> 16), (int16_t)0x00415B75,
89         (int16_t)((int32_t)0x0034F8B6 >> 16), (int16_t)0x0034F8B6,
90         (int16_t)((int32_t)0x001D8FD2 >> 16), (int16_t)0x001D8FD2,
91         (int16_t)((int32_t)0xFFFA2413 >> 16), (int16_t)0xFFFA2413,
92         (int16_t)((int32_t)0xFFC9F10E >> 16), (int16_t)0xFFC9F10E,
93         (int16_t)((int32_t)0xFF8D6793 >> 16), (int16_t)0xFF8D6793,
94 
95         (int16_t)((int32_t)0x00B97348 >> 16), (int16_t)0x00B97348, /* 16 */
96         (int16_t)((int32_t)0x01071B96 >> 16), (int16_t)0x01071B96,
97         (int16_t)((int32_t)0x0156B3CA >> 16), (int16_t)0x0156B3CA,
98         (int16_t)((int32_t)0x01A1B38B >> 16), (int16_t)0x01A1B38B,
99         (int16_t)((int32_t)0x01E0224C >> 16), (int16_t)0x01E0224C,
100         (int16_t)((int32_t)0x0209291F >> 16), (int16_t)0x0209291F,
101         (int16_t)((int32_t)0x02138653 >> 16), (int16_t)0x02138653,
102         (int16_t)((int32_t)0x01F5F424 >> 16), (int16_t)0x01F5F424,
103 
104         (int16_t)((int32_t)0x01A7ECEF >> 16), (int16_t)0x01A7ECEF, /* 24 */
105         (int16_t)((int32_t)0x01223EBA >> 16), (int16_t)0x01223EBA,
106         (int16_t)((int32_t)0x005FD0FF >> 16), (int16_t)0x005FD0FF,
107         (int16_t)((int32_t)0xFF5EEB73 >> 16), (int16_t)0xFF5EEB73,
108         (int16_t)((int32_t)0xFE20435D >> 16), (int16_t)0xFE20435D,
109         (int16_t)((int32_t)0xFCA86E7E >> 16), (int16_t)0xFCA86E7E,
110         (int16_t)((int32_t)0xFAFF95FC >> 16), (int16_t)0xFAFF95FC,
111         (int16_t)((int32_t)0xF9312891 >> 16), (int16_t)0xF9312891,
112 
113         (int16_t)((int32_t)0x08B4307A >> 16), (int16_t)0x08B4307A, /* 32 */
114         (int16_t)((int32_t)0x0A9F3E9A >> 16), (int16_t)0x0A9F3E9A,
115         (int16_t)((int32_t)0x0C7D59B6 >> 16), (int16_t)0x0C7D59B6,
116         (int16_t)((int32_t)0x0E3BB16F >> 16), (int16_t)0x0E3BB16F,
117         (int16_t)((int32_t)0x0FC721F9 >> 16), (int16_t)0x0FC721F9,
118         (int16_t)((int32_t)0x110ECEF0 >> 16), (int16_t)0x110ECEF0,
119         (int16_t)((int32_t)0x120435FA >> 16), (int16_t)0x120435FA,
120         (int16_t)((int32_t)0x129C226F >> 16), (int16_t)0x129C226F,
121 
122         (int16_t)((int32_t)0x12CF6C75 >> 16), (int16_t)0x12CF6C75, /* 40 */
123         (int16_t)((int32_t)0x129C226F >> 16), (int16_t)0x129C226F,
124         (int16_t)((int32_t)0x120435FA >> 16), (int16_t)0x120435FA,
125         (int16_t)((int32_t)0x110ECEF0 >> 16), (int16_t)0x110ECEF0,
126         (int16_t)((int32_t)0x0FC721F9 >> 16), (int16_t)0x0FC721F9,
127         (int16_t)((int32_t)0x0E3BB16F >> 16), (int16_t)0x0E3BB16F,
128         (int16_t)((int32_t)0x0C7D59B6 >> 16), (int16_t)0x0C7D59B6,
129         (int16_t)((int32_t)0x0A9F3E9A >> 16), (int16_t)0x0A9F3E9A,
130 
131         (int16_t)((int32_t)0xF74BCF86 >> 16), (int16_t)0xF74BCF86, /* 48 */
132         (int16_t)((int32_t)0xF9312891 >> 16), (int16_t)0xF9312891,
133         (int16_t)((int32_t)0xFAFF95FC >> 16), (int16_t)0xFAFF95FC,
134         (int16_t)((int32_t)0xFCA86E7E >> 16), (int16_t)0xFCA86E7E,
135         (int16_t)((int32_t)0xFE20435D >> 16), (int16_t)0xFE20435D,
136         (int16_t)((int32_t)0xFF5EEB73 >> 16), (int16_t)0xFF5EEB73,
137         (int16_t)((int32_t)0x005FD0FF >> 16), (int16_t)0x005FD0FF,
138         (int16_t)((int32_t)0x01223EBA >> 16), (int16_t)0x01223EBA,
139 
140         (int16_t)((int32_t)0x01A7ECEF >> 16), (int16_t)0x01A7ECEF, /* 56 */
141         (int16_t)((int32_t)0x01F5F424 >> 16), (int16_t)0x01F5F424,
142         (int16_t)((int32_t)0x02138653 >> 16), (int16_t)0x02138653,
143         (int16_t)((int32_t)0x0209291F >> 16), (int16_t)0x0209291F,
144         (int16_t)((int32_t)0x01E0224C >> 16), (int16_t)0x01E0224C,
145         (int16_t)((int32_t)0x01A1B38B >> 16), (int16_t)0x01A1B38B,
146         (int16_t)((int32_t)0x0156B3CA >> 16), (int16_t)0x0156B3CA,
147         (int16_t)((int32_t)0x01071B96 >> 16), (int16_t)0x01071B96,
148 
149         (int16_t)((int32_t)0xFF468CB8 >> 16), (int16_t)0xFF468CB8, /* 64 */
150         (int16_t)((int32_t)0xFF8D6793 >> 16), (int16_t)0xFF8D6793,
151         (int16_t)((int32_t)0xFFC9F10E >> 16), (int16_t)0xFFC9F10E,
152         (int16_t)((int32_t)0xFFFA2413 >> 16), (int16_t)0xFFFA2413,
153         (int16_t)((int32_t)0x001D8FD2 >> 16), (int16_t)0x001D8FD2,
154         (int16_t)((int32_t)0x0034F8B6 >> 16), (int16_t)0x0034F8B6,
155         (int16_t)((int32_t)0x00415B75 >> 16), (int16_t)0x00415B75,
156         (int16_t)((int32_t)0x0044EF48 >> 16), (int16_t)0x0044EF48,
157 
158         (int16_t)((int32_t)0x0041EC6A >> 16), (int16_t)0x0041EC6A, /* 72 */
159         (int16_t)((int32_t)0x003A72E7 >> 16), (int16_t)0x003A72E7,
160         (int16_t)((int32_t)0x003060F4 >> 16), (int16_t)0x003060F4,
161         (int16_t)((int32_t)0x00255A62 >> 16), (int16_t)0x00255A62,
162         (int16_t)((int32_t)0x001AFF89 >> 16), (int16_t)0x001AFF89,
163         (int16_t)((int32_t)0x00122C7D >> 16), (int16_t)0x00122C7D,
164         (int16_t)((int32_t)0x000B3F71 >> 16), (int16_t)0x000B3F71,
165         (int16_t)((int32_t)0x00052173 >> 16), (int16_t)0x00052173};
166 
167 #else
168 
169 /*Window coeff for 4 sub band case*/
170 const int32_t gas32CoeffFor4SBs[] = {
171         (int32_t)0x00000000, (int32_t)0x001194E6, (int32_t)0x0030E2D3, (int32_t)0x00599403,
172         (int32_t)0x007DBCC8, (int32_t)0x007F88E4, (int32_t)0x003D239B, (int32_t)0xFF9BB9D5,
173 
174         (int32_t)0x01659F45, (int32_t)0x029DBAA3, (int32_t)0x03B23341, (int32_t)0x041EEE40,
175         (int32_t)0x034FEE2C, (int32_t)0x00C8F2BC, (int32_t)0xFC4F91D4, (int32_t)0xF60FAF37,
176 
177         (int32_t)0x115B1ED2, (int32_t)0x18F55C90, (int32_t)0x1F91CA46, (int32_t)0x2412F251,
178         (int32_t)0x25AC1FF2, (int32_t)0x2412F251, (int32_t)0x1F91CA46, (int32_t)0x18F55C90,
179 
180         (int32_t)0xEEA4E12E, (int32_t)0xF60FAF37, (int32_t)0xFC4F91D4, (int32_t)0x00C8F2BC,
181         (int32_t)0x034FEE2C, (int32_t)0x041EEE40, (int32_t)0x03B23341, (int32_t)0x029DBAA3,
182 
183         (int32_t)0xFE9A60BB, (int32_t)0xFF9BB9D5, (int32_t)0x003D239B, (int32_t)0x007F88E4,
184         (int32_t)0x007DBCC8, (int32_t)0x00599403, (int32_t)0x0030E2D3, (int32_t)0x001194E6};
185 
186 /*Window coeff for 8 sub band case*/
187 const int32_t gas32CoeffFor8SBs[] = {
188         (int32_t)0x00000000, (int32_t)0x00052173, (int32_t)0x000B3F71, (int32_t)0x00122C7D,
189         (int32_t)0x001AFF89, (int32_t)0x00255A62, (int32_t)0x003060F4, (int32_t)0x003A72E7,
190 
191         (int32_t)0x0041EC6A, /* 8 */
192         (int32_t)0x0044EF48, (int32_t)0x00415B75, (int32_t)0x0034F8B6, (int32_t)0x001D8FD2,
193         (int32_t)0xFFFA2413, (int32_t)0xFFC9F10E, (int32_t)0xFF8D6793,
194 
195         (int32_t)0x00B97348, /* 16 */
196         (int32_t)0x01071B96, (int32_t)0x0156B3CA, (int32_t)0x01A1B38B, (int32_t)0x01E0224C,
197         (int32_t)0x0209291F, (int32_t)0x02138653, (int32_t)0x01F5F424,
198 
199         (int32_t)0x01A7ECEF, /* 24 */
200         (int32_t)0x01223EBA, (int32_t)0x005FD0FF, (int32_t)0xFF5EEB73, (int32_t)0xFE20435D,
201         (int32_t)0xFCA86E7E, (int32_t)0xFAFF95FC, (int32_t)0xF9312891,
202 
203         (int32_t)0x08B4307A, /* 32 */
204         (int32_t)0x0A9F3E9A, (int32_t)0x0C7D59B6, (int32_t)0x0E3BB16F, (int32_t)0x0FC721F9,
205         (int32_t)0x110ECEF0, (int32_t)0x120435FA, (int32_t)0x129C226F,
206 
207         (int32_t)0x12CF6C75, /* 40 */
208         (int32_t)0x129C226F, (int32_t)0x120435FA, (int32_t)0x110ECEF0, (int32_t)0x0FC721F9,
209         (int32_t)0x0E3BB16F, (int32_t)0x0C7D59B6, (int32_t)0x0A9F3E9A,
210 
211         (int32_t)0xF74BCF86, /* 48 */
212         (int32_t)0xF9312891, (int32_t)0xFAFF95FC, (int32_t)0xFCA86E7E, (int32_t)0xFE20435D,
213         (int32_t)0xFF5EEB73, (int32_t)0x005FD0FF, (int32_t)0x01223EBA,
214 
215         (int32_t)0x01A7ECEF, /* 56 */
216         (int32_t)0x01F5F424, (int32_t)0x02138653, (int32_t)0x0209291F, (int32_t)0x01E0224C,
217         (int32_t)0x01A1B38B, (int32_t)0x0156B3CA, (int32_t)0x01071B96,
218 
219         (int32_t)0xFF468CB8, /* 64 */
220         (int32_t)0xFF8D6793, (int32_t)0xFFC9F10E, (int32_t)0xFFFA2413, (int32_t)0x001D8FD2,
221         (int32_t)0x0034F8B6, (int32_t)0x00415B75, (int32_t)0x0044EF48,
222 
223         (int32_t)0x0041EC6A, /* 72 */
224         (int32_t)0x003A72E7, (int32_t)0x003060F4, (int32_t)0x00255A62, (int32_t)0x001AFF89,
225         (int32_t)0x00122C7D, (int32_t)0x000B3F71, (int32_t)0x00052173};
226 
227 #endif
228 #endif
229