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 #include "common/bt_target.h" 25 #include "sbc_encoder.h" 26 27 #if (defined(SBC_ENC_INCLUDED) && SBC_ENC_INCLUDED == TRUE) 28 29 #if (SBC_ARM_ASM_OPT==FALSE && SBC_IPAQ_OPT==FALSE) 30 #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == FALSE) 31 /*Window coeff for 4 sub band case*/ 32 const SINT16 gas32CoeffFor4SBs[] = { 33 (SINT16)((SINT32)0x00000000 >> 16), (SINT16)0x00000000, 34 (SINT16)((SINT32)0x001194E6 >> 16), (SINT16)0x001194E6, 35 (SINT16)((SINT32)0x0030E2D3 >> 16), (SINT16)0x0030E2D3, 36 (SINT16)((SINT32)0x00599403 >> 16), (SINT16)0x00599403, 37 (SINT16)((SINT32)0x007DBCC8 >> 16), (SINT16)0x007DBCC8, 38 (SINT16)((SINT32)0x007F88E4 >> 16), (SINT16)0x007F88E4, 39 (SINT16)((SINT32)0x003D239B >> 16), (SINT16)0x003D239B, 40 (SINT16)((SINT32)0xFF9BB9D5 >> 16), (SINT16)0xFF9BB9D5, 41 42 (SINT16)((SINT32)0x01659F45 >> 16), (SINT16)0x01659F45, 43 (SINT16)((SINT32)0x029DBAA3 >> 16), (SINT16)0x029DBAA3, 44 (SINT16)((SINT32)0x03B23341 >> 16), (SINT16)0x03B23341, 45 (SINT16)((SINT32)0x041EEE40 >> 16), (SINT16)0x041EEE40, 46 (SINT16)((SINT32)0x034FEE2C >> 16), (SINT16)0x034FEE2C, 47 (SINT16)((SINT32)0x00C8F2BC >> 16), (SINT16)0x00C8F2BC, 48 (SINT16)((SINT32)0xFC4F91D4 >> 16), (SINT16)0xFC4F91D4, 49 (SINT16)((SINT32)0xF60FAF37 >> 16), (SINT16)0xF60FAF37, 50 51 (SINT16)((SINT32)0x115B1ED2 >> 16), (SINT16)0x115B1ED2, 52 (SINT16)((SINT32)0x18F55C90 >> 16), (SINT16)0x18F55C90, 53 (SINT16)((SINT32)0x1F91CA46 >> 16), (SINT16)0x1F91CA46, 54 (SINT16)((SINT32)0x2412F251 >> 16), (SINT16)0x2412F251, 55 (SINT16)((SINT32)0x25AC1FF2 >> 16), (SINT16)0x25AC1FF2, 56 (SINT16)((SINT32)0x2412F251 >> 16), (SINT16)0x2412F251, 57 (SINT16)((SINT32)0x1F91CA46 >> 16), (SINT16)0x1F91CA46, 58 (SINT16)((SINT32)0x18F55C90 >> 16), (SINT16)0x18F55C90, 59 60 (SINT16)((SINT32)0xEEA4E12E >> 16), (SINT16)0xEEA4E12E, 61 (SINT16)((SINT32)0xF60FAF37 >> 16), (SINT16)0xF60FAF37, 62 (SINT16)((SINT32)0xFC4F91D4 >> 16), (SINT16)0xFC4F91D4, 63 (SINT16)((SINT32)0x00C8F2BC >> 16), (SINT16)0x00C8F2BC, 64 (SINT16)((SINT32)0x034FEE2C >> 16), (SINT16)0x034FEE2C, 65 (SINT16)((SINT32)0x041EEE40 >> 16), (SINT16)0x041EEE40, 66 (SINT16)((SINT32)0x03B23341 >> 16), (SINT16)0x03B23341, 67 (SINT16)((SINT32)0x029DBAA3 >> 16), (SINT16)0x029DBAA3, 68 69 (SINT16)((SINT32)0xFE9A60BB >> 16), (SINT16)0xFE9A60BB, 70 (SINT16)((SINT32)0xFF9BB9D5 >> 16), (SINT16)0xFF9BB9D5, 71 (SINT16)((SINT32)0x003D239B >> 16), (SINT16)0x003D239B, 72 (SINT16)((SINT32)0x007F88E4 >> 16), (SINT16)0x007F88E4, 73 (SINT16)((SINT32)0x007DBCC8 >> 16), (SINT16)0x007DBCC8, 74 (SINT16)((SINT32)0x00599403 >> 16), (SINT16)0x00599403, 75 (SINT16)((SINT32)0x0030E2D3 >> 16), (SINT16)0x0030E2D3, 76 (SINT16)((SINT32)0x001194E6 >> 16), (SINT16)0x001194E6 77 }; 78 79 /*Window coeff for 8 sub band case*/ 80 const SINT16 gas32CoeffFor8SBs[] = { 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 (SINT32)0x00000000, 177 (SINT32)0x001194E6, 178 (SINT32)0x0030E2D3, 179 (SINT32)0x00599403, 180 (SINT32)0x007DBCC8, 181 (SINT32)0x007F88E4, 182 (SINT32)0x003D239B, 183 (SINT32)0xFF9BB9D5, 184 185 (SINT32)0x01659F45, 186 (SINT32)0x029DBAA3, 187 (SINT32)0x03B23341, 188 (SINT32)0x041EEE40, 189 (SINT32)0x034FEE2C, 190 (SINT32)0x00C8F2BC, 191 (SINT32)0xFC4F91D4, 192 (SINT32)0xF60FAF37, 193 194 (SINT32)0x115B1ED2, 195 (SINT32)0x18F55C90, 196 (SINT32)0x1F91CA46, 197 (SINT32)0x2412F251, 198 (SINT32)0x25AC1FF2, 199 (SINT32)0x2412F251, 200 (SINT32)0x1F91CA46, 201 (SINT32)0x18F55C90, 202 203 (SINT32)0xEEA4E12E, 204 (SINT32)0xF60FAF37, 205 (SINT32)0xFC4F91D4, 206 (SINT32)0x00C8F2BC, 207 (SINT32)0x034FEE2C, 208 (SINT32)0x041EEE40, 209 (SINT32)0x03B23341, 210 (SINT32)0x029DBAA3, 211 212 (SINT32)0xFE9A60BB, 213 (SINT32)0xFF9BB9D5, 214 (SINT32)0x003D239B, 215 (SINT32)0x007F88E4, 216 (SINT32)0x007DBCC8, 217 (SINT32)0x00599403, 218 (SINT32)0x0030E2D3, 219 (SINT32)0x001194E6 220 }; 221 222 /*Window coeff for 8 sub band case*/ 223 const SINT32 gas32CoeffFor8SBs[] = { 224 (SINT32)0x00000000, 225 (SINT32)0x00052173, 226 (SINT32)0x000B3F71, 227 (SINT32)0x00122C7D, 228 (SINT32)0x001AFF89, 229 (SINT32)0x00255A62, 230 (SINT32)0x003060F4, 231 (SINT32)0x003A72E7, 232 233 (SINT32)0x0041EC6A, /* 8 */ 234 (SINT32)0x0044EF48, 235 (SINT32)0x00415B75, 236 (SINT32)0x0034F8B6, 237 (SINT32)0x001D8FD2, 238 (SINT32)0xFFFA2413, 239 (SINT32)0xFFC9F10E, 240 (SINT32)0xFF8D6793, 241 242 (SINT32)0x00B97348, /* 16 */ 243 (SINT32)0x01071B96, 244 (SINT32)0x0156B3CA, 245 (SINT32)0x01A1B38B, 246 (SINT32)0x01E0224C, 247 (SINT32)0x0209291F, 248 (SINT32)0x02138653, 249 (SINT32)0x01F5F424, 250 251 (SINT32)0x01A7ECEF, /* 24 */ 252 (SINT32)0x01223EBA, 253 (SINT32)0x005FD0FF, 254 (SINT32)0xFF5EEB73, 255 (SINT32)0xFE20435D, 256 (SINT32)0xFCA86E7E, 257 (SINT32)0xFAFF95FC, 258 (SINT32)0xF9312891, 259 260 (SINT32)0x08B4307A, /* 32 */ 261 (SINT32)0x0A9F3E9A, 262 (SINT32)0x0C7D59B6, 263 (SINT32)0x0E3BB16F, 264 (SINT32)0x0FC721F9, 265 (SINT32)0x110ECEF0, 266 (SINT32)0x120435FA, 267 (SINT32)0x129C226F, 268 269 (SINT32)0x12CF6C75, /* 40 */ 270 (SINT32)0x129C226F, 271 (SINT32)0x120435FA, 272 (SINT32)0x110ECEF0, 273 (SINT32)0x0FC721F9, 274 (SINT32)0x0E3BB16F, 275 (SINT32)0x0C7D59B6, 276 (SINT32)0x0A9F3E9A, 277 278 (SINT32)0xF74BCF86, /* 48 */ 279 (SINT32)0xF9312891, 280 (SINT32)0xFAFF95FC, 281 (SINT32)0xFCA86E7E, 282 (SINT32)0xFE20435D, 283 (SINT32)0xFF5EEB73, 284 (SINT32)0x005FD0FF, 285 (SINT32)0x01223EBA, 286 287 (SINT32)0x01A7ECEF, /* 56 */ 288 (SINT32)0x01F5F424, 289 (SINT32)0x02138653, 290 (SINT32)0x0209291F, 291 (SINT32)0x01E0224C, 292 (SINT32)0x01A1B38B, 293 (SINT32)0x0156B3CA, 294 (SINT32)0x01071B96, 295 296 (SINT32)0xFF468CB8, /* 64 */ 297 (SINT32)0xFF8D6793, 298 (SINT32)0xFFC9F10E, 299 (SINT32)0xFFFA2413, 300 (SINT32)0x001D8FD2, 301 (SINT32)0x0034F8B6, 302 (SINT32)0x00415B75, 303 (SINT32)0x0044EF48, 304 305 (SINT32)0x0041EC6A, /* 72 */ 306 (SINT32)0x003A72E7, 307 (SINT32)0x003060F4, 308 (SINT32)0x00255A62, 309 (SINT32)0x001AFF89, 310 (SINT32)0x00122C7D, 311 (SINT32)0x000B3F71, 312 (SINT32)0x00052173 313 }; 314 315 #endif 316 #endif 317 318 #endif /* #if (defined(SBC_ENC_INCLUDED) && SBC_ENC_INCLUDED == TRUE) */ 319