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*/ 30 const 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*/ 79 const 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*/ 175 const 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*/ 224 const 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