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