Home | History | Annotate | Download | only in aacdec
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 /*
     19 
     20  Pathname: window_tables_fxp.c
     21  Funtions:
     22 
     23 ------------------------------------------------------------------------------
     24  REVISION HISTORY
     25 
     26  Description:
     27     changed table content definition from UInt to UInt16.
     28 
     29  Description:
     30     changed Long_Window_fxp and Short _Window_fxp tables definition, from
     31     "const UInt16 *"  to "const UInt16 * const" to avoid global variable
     32     definition.
     33 
     34  Description:
     35     Improved rounding on table elements.
     36 
     37  Description: Eliminated structure to avoid assigning addresses to constant
     38               tables. This solve linking problem when using the
     39               /ropi option (Read-only position independent) for some
     40               compilers
     41               - Eliminated Long_Window_fxp and Short_Window_fxp as global
     42                 contants vectors
     43 
     44  Who:                       Date:
     45  Description:
     46 
     47   ------------------------------------------------------------------------------
     48  MODULE DESCRIPTION
     49 
     50     Window tables
     51 
     52         For a sine table with N  points:
     53 
     54             w_left  = sin(pi/N (n + 1/2))     for 0   =< n < N/2
     55 
     56             w_rigth = sin(pi/N (n + 1/2))     for N/2 =< n < N
     57 
     58 
     59         For Kaiser-Bessel derived (KBD)
     60 
     61                                n             N/2
     62             w_left  =  sqrt(( SUM W(p,a) )/( SUM W(p,a) )   for   0   =< n < N/2
     63                               p=0            p=0
     64 
     65 
     66                              N-n-1           N/2
     67             w_rigth =  sqrt(( SUM W(p,a) )/( SUM W(p,a) )   for   N/2 =< n < N
     68                               p=0            p=0
     69 
     70 
     71             W(p,a) see ISO 14496-3, pag 113
     72 
     73 ------------------------------------------------------------------------------
     74  REQUIREMENTS
     75 
     76     This module shall implement the fix point verwion of the windowing tables
     77 
     78 ------------------------------------------------------------------------------
     79  REFERENCES
     80 
     81     [1] ISO 14496-3, pag 113
     82 
     83 ------------------------------------------------------------------------------
     84 */
     85 
     86 
     87 /*----------------------------------------------------------------------------
     88 ; INCLUDES
     89 ----------------------------------------------------------------------------*/
     90 #include "pv_audio_type_defs.h"
     91 #include "window_block_fxp.h"
     92 
     93 /*----------------------------------------------------------------------------
     94 ; MACROS
     95 ; Define module specific macros here
     96 ----------------------------------------------------------------------------*/
     97 
     98 /*----------------------------------------------------------------------------
     99 ; DEFINES
    100 ; Include all pre-processor statements here. Include conditional
    101 ; compile variables also.
    102 ----------------------------------------------------------------------------*/
    103 
    104 /*----------------------------------------------------------------------------
    105 ; LOCAL FUNCTION DEFINITIONS
    106 ; Function Prototype declaration
    107 ----------------------------------------------------------------------------*/
    108 
    109 /*----------------------------------------------------------------------------
    110 ; LOCAL VARIABLE DEFINITIONS
    111 ; Variable declaration - defined here and used outside this module
    112 ----------------------------------------------------------------------------*/
    113 
    114 
    115 /*----------------------------------------------------------------------------
    116 ; EXTERNAL FUNCTION REFERENCES
    117 ; Declare functions defined elsewhere and referenced in this module
    118 ----------------------------------------------------------------------------*/
    119 
    120 /*----------------------------------------------------------------------------
    121 ; EXTERNAL VARIABLES REFERENCES
    122 ; Declare variables used in this module but defined elsewhere
    123 ----------------------------------------------------------------------------*/
    124 
    125 
    126 const Int16 Long_Window_sine_fxp[LONG_WINDOW] =
    127 {
    128 
    129 
    130     0x0019,  0x004B,  0x007E,  0x00B0,
    131     0x00E2,  0x0114,  0x0147,  0x0179,
    132     0x01AB,  0x01DD,  0x0210,  0x0242,
    133     0x0274,  0x02A7,  0x02D9,  0x030B,
    134     0x033D,  0x0370,  0x03A2,  0x03D4,
    135     0x0406,  0x0438,  0x046B,  0x049D,
    136     0x04CF,  0x0501,  0x0534,  0x0566,
    137     0x0598,  0x05CA,  0x05FC,  0x062F,
    138     0x0661,  0x0693,  0x06C5,  0x06F7,
    139     0x072A,  0x075C,  0x078E,  0x07C0,
    140     0x07F2,  0x0825,  0x0857,  0x0889,
    141     0x08BB,  0x08ED,  0x091F,  0x0951,
    142     0x0984,  0x09B6,  0x09E8,  0x0A1A,
    143     0x0A4C,  0x0A7E,  0x0AB0,  0x0AE2,
    144     0x0B14,  0x0B46,  0x0B78,  0x0BAB,
    145     0x0BDD,  0x0C0F,  0x0C41,  0x0C73,
    146     0x0CA5,  0x0CD7,  0x0D09,  0x0D3B,
    147     0x0D6D,  0x0D9F,  0x0DD1,  0x0E03,
    148     0x0E35,  0x0E67,  0x0E99,  0x0ECA,
    149     0x0EFC,  0x0F2E,  0x0F60,  0x0F92,
    150     0x0FC4,  0x0FF6,  0x1028,  0x105A,
    151     0x108B,  0x10BD,  0x10EF,  0x1121,
    152     0x1153,  0x1185,  0x11B6,  0x11E8,
    153     0x121A,  0x124C,  0x127D,  0x12AF,
    154     0x12E1,  0x1312,  0x1344,  0x1376,
    155     0x13A8,  0x13D9,  0x140B,  0x143C,
    156     0x146E,  0x14A0,  0x14D1,  0x1503,
    157     0x1534,  0x1566,  0x1598,  0x15C9,
    158     0x15FB,  0x162C,  0x165E,  0x168F,
    159     0x16C1,  0x16F2,  0x1724,  0x1755,
    160     0x1786,  0x17B8,  0x17E9,  0x181B,
    161     0x184C,  0x187D,  0x18AF,  0x18E0,
    162     0x1911,  0x1942,  0x1974,  0x19A5,
    163     0x19D6,  0x1A07,  0x1A39,  0x1A6A,
    164     0x1A9B,  0x1ACC,  0x1AFD,  0x1B2E,
    165     0x1B60,  0x1B91,  0x1BC2,  0x1BF3,
    166     0x1C24,  0x1C55,  0x1C86,  0x1CB7,
    167     0x1CE8,  0x1D19,  0x1D4A,  0x1D7B,
    168     0x1DAC,  0x1DDC,  0x1E0D,  0x1E3E,
    169     0x1E6F,  0x1EA0,  0x1ED1,  0x1F01,
    170     0x1F32,  0x1F63,  0x1F94,  0x1FC4,
    171     0x1FF5,  0x2026,  0x2056,  0x2087,
    172     0x20B7,  0x20E8,  0x2119,  0x2149,
    173     0x217A,  0x21AA,  0x21DB,  0x220B,
    174     0x223C,  0x226C,  0x229C,  0x22CD,
    175     0x22FD,  0x232E,  0x235E,  0x238E,
    176     0x23BE,  0x23EF,  0x241F,  0x244F,
    177     0x247F,  0x24AF,  0x24E0,  0x2510,
    178     0x2540,  0x2570,  0x25A0,  0x25D0,
    179     0x2600,  0x2630,  0x2660,  0x2690,
    180     0x26C0,  0x26F0,  0x2720,  0x274F,
    181     0x277F,  0x27AF,  0x27DF,  0x280F,
    182     0x283E,  0x286E,  0x289E,  0x28CD,
    183     0x28FD,  0x292D,  0x295C,  0x298C,
    184     0x29BB,  0x29EB,  0x2A1A,  0x2A4A,
    185     0x2A79,  0x2AA8,  0x2AD8,  0x2B07,
    186     0x2B37,  0x2B66,  0x2B95,  0x2BC4,
    187     0x2BF4,  0x2C23,  0x2C52,  0x2C81,
    188     0x2CB0,  0x2CDF,  0x2D0E,  0x2D3D,
    189     0x2D6C,  0x2D9B,  0x2DCA,  0x2DF9,
    190     0x2E28,  0x2E57,  0x2E86,  0x2EB5,
    191     0x2EE3,  0x2F12,  0x2F41,  0x2F70,
    192     0x2F9E,  0x2FCD,  0x2FFC,  0x302A,
    193     0x3059,  0x3087,  0x30B6,  0x30E4,
    194     0x3113,  0x3141,  0x316F,  0x319E,
    195     0x31CC,  0x31FA,  0x3229,  0x3257,
    196     0x3285,  0x32B3,  0x32E1,  0x330F,
    197     0x333E,  0x336C,  0x339A,  0x33C8,
    198     0x33F6,  0x3423,  0x3451,  0x347F,
    199     0x34AD,  0x34DB,  0x3509,  0x3536,
    200     0x3564,  0x3592,  0x35BF,  0x35ED,
    201     0x361A,  0x3648,  0x3676,  0x36A3,
    202     0x36D0,  0x36FE,  0x372B,  0x3759,
    203     0x3786,  0x37B3,  0x37E0,  0x380E,
    204     0x383B,  0x3868,  0x3895,  0x38C2,
    205     0x38EF,  0x391C,  0x3949,  0x3976,
    206     0x39A3,  0x39D0,  0x39FD,  0x3A29,
    207     0x3A56,  0x3A83,  0x3AB0,  0x3ADC,
    208     0x3B09,  0x3B35,  0x3B62,  0x3B8E,
    209     0x3BBB,  0x3BE7,  0x3C14,  0x3C40,
    210     0x3C6C,  0x3C99,  0x3CC5,  0x3CF1,
    211     0x3D1D,  0x3D4A,  0x3D76,  0x3DA2,
    212     0x3DCE,  0x3DFA,  0x3E26,  0x3E52,
    213     0x3E7D,  0x3EA9,  0x3ED5,  0x3F01,
    214     0x3F2D,  0x3F58,  0x3F84,  0x3FB0,
    215     0x3FDB,  0x4007,  0x4032,  0x405E,
    216     0x4089,  0x40B5,  0x40E0,  0x410B,
    217     0x4136,  0x4162,  0x418D,  0x41B8,
    218     0x41E3,  0x420E,  0x4239,  0x4264,
    219     0x428F,  0x42BA,  0x42E5,  0x4310,
    220     0x433B,  0x4365,  0x4390,  0x43BB,
    221     0x43E5,  0x4410,  0x443B,  0x4465,
    222     0x448F,  0x44BA,  0x44E4,  0x450F,
    223     0x4539,  0x4563,  0x458D,  0x45B8,
    224     0x45E2,  0x460C,  0x4636,  0x4660,
    225     0x468A,  0x46B4,  0x46DE,  0x4707,
    226     0x4731,  0x475B,  0x4785,  0x47AE,
    227     0x47D8,  0x4802,  0x482B,  0x4855,
    228     0x487E,  0x48A7,  0x48D1,  0x48FA,
    229     0x4923,  0x494D,  0x4976,  0x499F,
    230     0x49C8,  0x49F1,  0x4A1A,  0x4A43,
    231     0x4A6C,  0x4A95,  0x4ABE,  0x4AE6,
    232     0x4B0F,  0x4B38,  0x4B61,  0x4B89,
    233     0x4BB2,  0x4BDA,  0x4C03,  0x4C2B,
    234     0x4C53,  0x4C7C,  0x4CA4,  0x4CCC,
    235     0x4CF4,  0x4D1D,  0x4D45,  0x4D6D,
    236     0x4D95,  0x4DBD,  0x4DE5,  0x4E0D,
    237     0x4E34,  0x4E5C,  0x4E84,  0x4EAB,
    238     0x4ED3,  0x4EFB,  0x4F22,  0x4F4A,
    239     0x4F71,  0x4F99,  0x4FC0,  0x4FE7,
    240     0x500E,  0x5036,  0x505D,  0x5084,
    241     0x50AB,  0x50D2,  0x50F9,  0x5120,
    242     0x5147,  0x516D,  0x5194,  0x51BB,
    243     0x51E2,  0x5208,  0x522F,  0x5255,
    244     0x527C,  0x52A2,  0x52C8,  0x52EF,
    245     0x5315,  0x533B,  0x5361,  0x5387,
    246     0x53AE,  0x53D4,  0x53FA,  0x541F,
    247     0x5445,  0x546B,  0x5491,  0x54B7,
    248     0x54DC,  0x5502,  0x5527,  0x554D,
    249     0x5572,  0x5598,  0x55BD,  0x55E2,
    250     0x5608,  0x562D,  0x5652,  0x5677,
    251     0x569C,  0x56C1,  0x56E6,  0x570B,
    252     0x5730,  0x5754,  0x5779,  0x579E,
    253     0x57C2,  0x57E7,  0x580C,  0x5830,
    254     0x5854,  0x5879,  0x589D,  0x58C1,
    255     0x58E5,  0x590A,  0x592E,  0x5952,
    256     0x5976,  0x599A,  0x59BD,  0x59E1,
    257     0x5A05,  0x5A29,  0x5A4C,  0x5A70,
    258     0x5A94,  0x5AB7,  0x5ADA,  0x5AFE,
    259     0x5B21,  0x5B44,  0x5B68,  0x5B8B,
    260     0x5BAE,  0x5BD1,  0x5BF4,  0x5C17,
    261     0x5C3A,  0x5C5D,  0x5C7F,  0x5CA2,
    262     0x5CC5,  0x5CE7,  0x5D0A,  0x5D2C,
    263     0x5D4F,  0x5D71,  0x5D94,  0x5DB6,
    264     0x5DD8,  0x5DFA,  0x5E1C,  0x5E3E,
    265     0x5E60,  0x5E82,  0x5EA4,  0x5EC6,
    266     0x5EE8,  0x5F09,  0x5F2B,  0x5F4D,
    267     0x5F6E,  0x5F90,  0x5FB1,  0x5FD2,
    268     0x5FF4,  0x6015,  0x6036,  0x6057,
    269     0x6078,  0x6099,  0x60BA,  0x60DB,
    270     0x60FC,  0x611D,  0x613D,  0x615E,
    271     0x617F,  0x619F,  0x61C0,  0x61E0,
    272     0x6200,  0x6221,  0x6241,  0x6261,
    273     0x6281,  0x62A1,  0x62C1,  0x62E1,
    274     0x6301,  0x6321,  0x6341,  0x6360,
    275     0x6380,  0x63A0,  0x63BF,  0x63DF,
    276     0x63FE,  0x641D,  0x643D,  0x645C,
    277     0x647B,  0x649A,  0x64B9,  0x64D8,
    278     0x64F7,  0x6516,  0x6535,  0x6554,
    279     0x6572,  0x6591,  0x65AF,  0x65CE,
    280     0x65EC,  0x660B,  0x6629,  0x6647,
    281     0x6666,  0x6684,  0x66A2,  0x66C0,
    282     0x66DE,  0x66FC,  0x6719,  0x6737,
    283     0x6755,  0x6772,  0x6790,  0x67AE,
    284     0x67CB,  0x67E8,  0x6806,  0x6823,
    285     0x6840,  0x685D,  0x687A,  0x6897,
    286     0x68B4,  0x68D1,  0x68EE,  0x690B,
    287     0x6927,  0x6944,  0x6961,  0x697D,
    288     0x699A,  0x69B6,  0x69D2,  0x69EE,
    289     0x6A0B,  0x6A27,  0x6A43,  0x6A5F,
    290     0x6A7B,  0x6A97,  0x6AB2,  0x6ACE,
    291     0x6AEA,  0x6B05,  0x6B21,  0x6B3C,
    292     0x6B58,  0x6B73,  0x6B8E,  0x6BAA,
    293     0x6BC5,  0x6BE0,  0x6BFB,  0x6C16,
    294     0x6C31,  0x6C4C,  0x6C66,  0x6C81,
    295     0x6C9C,  0x6CB6,  0x6CD1,  0x6CEB,
    296     0x6D06,  0x6D20,  0x6D3A,  0x6D54,
    297     0x6D6E,  0x6D88,  0x6DA2,  0x6DBC,
    298     0x6DD6,  0x6DF0,  0x6E0A,  0x6E23,
    299     0x6E3D,  0x6E56,  0x6E70,  0x6E89,
    300     0x6EA2,  0x6EBC,  0x6ED5,  0x6EEE,
    301     0x6F07,  0x6F20,  0x6F39,  0x6F52,
    302     0x6F6B,  0x6F83,  0x6F9C,  0x6FB4,
    303     0x6FCD,  0x6FE5,  0x6FFE,  0x7016,
    304     0x702E,  0x7046,  0x705F,  0x7077,
    305     0x708F,  0x70A6,  0x70BE,  0x70D6,
    306     0x70EE,  0x7105,  0x711D,  0x7134,
    307     0x714C,  0x7163,  0x717A,  0x7192,
    308     0x71A9,  0x71C0,  0x71D7,  0x71EE,
    309     0x7205,  0x721C,  0x7232,  0x7249,
    310     0x7260,  0x7276,  0x728D,  0x72A3,
    311     0x72B9,  0x72D0,  0x72E6,  0x72FC,
    312     0x7312,  0x7328,  0x733E,  0x7354,
    313     0x7369,  0x737F,  0x7395,  0x73AA,
    314     0x73C0,  0x73D5,  0x73EB,  0x7400,
    315     0x7415,  0x742A,  0x743F,  0x7454,
    316     0x7469,  0x747E,  0x7493,  0x74A8,
    317     0x74BC,  0x74D1,  0x74E5,  0x74FA,
    318     0x750E,  0x7522,  0x7537,  0x754B,
    319     0x755F,  0x7573,  0x7587,  0x759B,
    320     0x75AE,  0x75C2,  0x75D6,  0x75E9,
    321     0x75FD,  0x7610,  0x7624,  0x7637,
    322     0x764A,  0x765E,  0x7671,  0x7684,
    323     0x7697,  0x76A9,  0x76BC,  0x76CF,
    324     0x76E2,  0x76F4,  0x7707,  0x7719,
    325     0x772C,  0x773E,  0x7750,  0x7762,
    326     0x7774,  0x7786,  0x7798,  0x77AA,
    327     0x77BC,  0x77CE,  0x77DF,  0x77F1,
    328     0x7803,  0x7814,  0x7825,  0x7837,
    329     0x7848,  0x7859,  0x786A,  0x787B,
    330     0x788C,  0x789D,  0x78AE,  0x78BE,
    331     0x78CF,  0x78E0,  0x78F0,  0x7901,
    332     0x7911,  0x7921,  0x7931,  0x7941,
    333     0x7952,  0x7962,  0x7971,  0x7981,
    334     0x7991,  0x79A1,  0x79B0,  0x79C0,
    335     0x79CF,  0x79DF,  0x79EE,  0x79FD,
    336     0x7A0D,  0x7A1C,  0x7A2B,  0x7A3A,
    337     0x7A49,  0x7A57,  0x7A66,  0x7A75,
    338     0x7A83,  0x7A92,  0x7AA0,  0x7AAF,
    339     0x7ABD,  0x7ACB,  0x7AD9,  0x7AE7,
    340     0x7AF5,  0x7B03,  0x7B11,  0x7B1F,
    341     0x7B2D,  0x7B3A,  0x7B48,  0x7B55,
    342     0x7B63,  0x7B70,  0x7B7D,  0x7B8B,
    343     0x7B98,  0x7BA5,  0x7BB2,  0x7BBF,
    344     0x7BCB,  0x7BD8,  0x7BE5,  0x7BF1,
    345     0x7BFE,  0x7C0A,  0x7C17,  0x7C23,
    346     0x7C2F,  0x7C3B,  0x7C47,  0x7C53,
    347     0x7C5F,  0x7C6B,  0x7C77,  0x7C83,
    348     0x7C8E,  0x7C9A,  0x7CA5,  0x7CB1,
    349     0x7CBC,  0x7CC7,  0x7CD2,  0x7CDD,
    350     0x7CE8,  0x7CF3,  0x7CFE,  0x7D09,
    351     0x7D14,  0x7D1E,  0x7D29,  0x7D33,
    352     0x7D3E,  0x7D48,  0x7D52,  0x7D5C,
    353     0x7D67,  0x7D71,  0x7D7B,  0x7D84,
    354     0x7D8E,  0x7D98,  0x7DA2,  0x7DAB,
    355     0x7DB5,  0x7DBE,  0x7DC8,  0x7DD1,
    356     0x7DDA,  0x7DE3,  0x7DEC,  0x7DF5,
    357     0x7DFE,  0x7E07,  0x7E10,  0x7E18,
    358     0x7E21,  0x7E29,  0x7E32,  0x7E3A,
    359     0x7E42,  0x7E4B,  0x7E53,  0x7E5B,
    360     0x7E63,  0x7E6B,  0x7E73,  0x7E7A,
    361     0x7E82,  0x7E8A,  0x7E91,  0x7E99,
    362     0x7EA0,  0x7EA7,  0x7EAF,  0x7EB6,
    363     0x7EBD,  0x7EC4,  0x7ECB,  0x7ED2,
    364     0x7ED8,  0x7EDF,  0x7EE6,  0x7EEC,
    365     0x7EF3,  0x7EF9,  0x7EFF,  0x7F05,
    366     0x7F0C,  0x7F12,  0x7F18,  0x7F1E,
    367     0x7F23,  0x7F29,  0x7F2F,  0x7F35,
    368     0x7F3A,  0x7F40,  0x7F45,  0x7F4A,
    369     0x7F50,  0x7F55,  0x7F5A,  0x7F5F,
    370     0x7F64,  0x7F69,  0x7F6D,  0x7F72,
    371     0x7F77,  0x7F7B,  0x7F80,  0x7F84,
    372     0x7F88,  0x7F8D,  0x7F91,  0x7F95,
    373     0x7F99,  0x7F9D,  0x7FA1,  0x7FA4,
    374     0x7FA8,  0x7FAC,  0x7FAF,  0x7FB3,
    375     0x7FB6,  0x7FB9,  0x7FBD,  0x7FC0,
    376     0x7FC3,  0x7FC6,  0x7FC9,  0x7FCC,
    377     0x7FCE,  0x7FD1,  0x7FD4,  0x7FD6,
    378     0x7FD9,  0x7FDB,  0x7FDD,  0x7FE0,
    379     0x7FE2,  0x7FE4,  0x7FE6,  0x7FE8,
    380     0x7FEA,  0x7FEB,  0x7FED,  0x7FEF,
    381     0x7FF0,  0x7FF2,  0x7FF3,  0x7FF5,
    382     0x7FF6,  0x7FF7,  0x7FF8,  0x7FF9,
    383     0x7FFA,  0x7FFB,  0x7FFC,  0x7FFC,
    384     0x7FFD,  0x7FFD,  0x7FFE,  0x7FFE,
    385     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF
    386 
    387 };
    388 
    389 
    390 const Int16 Short_Window_sine_fxp[SHORT_WINDOW] =
    391 {
    392 
    393     0x00C9,  0x025B,  0x03ED,  0x057F,
    394     0x0711,  0x08A2,  0x0A33,  0x0BC4,
    395     0x0D54,  0x0EE3,  0x1072,  0x1201,
    396     0x138F,  0x151C,  0x16A8,  0x1833,
    397     0x19BE,  0x1B47,  0x1CCF,  0x1E57,
    398     0x1FDD,  0x2161,  0x22E5,  0x2467,
    399     0x25E8,  0x2767,  0x28E5,  0x2A61,
    400     0x2BDC,  0x2D55,  0x2ECC,  0x3041,
    401     0x31B5,  0x3326,  0x3496,  0x3604,
    402     0x376F,  0x38D9,  0x3A40,  0x3BA5,
    403     0x3D07,  0x3E68,  0x3FC5,  0x4121,
    404     0x427A,  0x43D0,  0x4524,  0x4675,
    405     0x47C3,  0x490F,  0x4A58,  0x4B9D,
    406     0x4CE0,  0x4E20,  0x4F5D,  0x5097,
    407     0x51CE,  0x5302,  0x5432,  0x5560,
    408     0x568A,  0x57B0,  0x58D3,  0x59F3,
    409     0x5B0F,  0x5C28,  0x5D3E,  0x5E4F,
    410     0x5F5D,  0x6068,  0x616E,  0x6271,
    411     0x6370,  0x646C,  0x6563,  0x6656,
    412     0x6746,  0x6832,  0x6919,  0x69FD,
    413     0x6ADC,  0x6BB7,  0x6C8E,  0x6D61,
    414     0x6E30,  0x6EFB,  0x6FC1,  0x7083,
    415     0x7140,  0x71F9,  0x72AE,  0x735E,
    416     0x740A,  0x74B2,  0x7555,  0x75F3,
    417     0x768D,  0x7722,  0x77B3,  0x783F,
    418     0x78C7,  0x794A,  0x79C8,  0x7A41,
    419     0x7AB6,  0x7B26,  0x7B91,  0x7BF8,
    420     0x7C59,  0x7CB6,  0x7D0E,  0x7D62,
    421     0x7DB0,  0x7DFA,  0x7E3E,  0x7E7E,
    422     0x7EB9,  0x7EEF,  0x7F21,  0x7F4D,
    423     0x7F74,  0x7F97,  0x7FB4,  0x7FCD,
    424     0x7FE1,  0x7FF0,  0x7FF9,  0x7FFE
    425 };
    426 
    427 
    428 
    429 const Int16 Long_Window_KBD_fxp[LONG_WINDOW] =
    430 {
    431 
    432     0x000A,  0x000E,  0x0012,  0x0015,
    433     0x0019,  0x001C,  0x0020,  0x0023,
    434     0x0026,  0x002A,  0x002D,  0x0030,
    435     0x0034,  0x0038,  0x003B,  0x003F,
    436     0x0043,  0x0047,  0x004B,  0x004F,
    437     0x0053,  0x0057,  0x005B,  0x0060,
    438     0x0064,  0x0069,  0x006D,  0x0072,
    439     0x0077,  0x007C,  0x0081,  0x0086,
    440     0x008B,  0x0091,  0x0096,  0x009C,
    441     0x00A1,  0x00A7,  0x00AD,  0x00B3,
    442     0x00B9,  0x00BF,  0x00C6,  0x00CC,
    443     0x00D3,  0x00DA,  0x00E0,  0x00E7,
    444     0x00EE,  0x00F5,  0x00FD,  0x0104,
    445     0x010C,  0x0113,  0x011B,  0x0123,
    446     0x012B,  0x0133,  0x013C,  0x0144,
    447     0x014D,  0x0156,  0x015F,  0x0168,
    448     0x0171,  0x017A,  0x0183,  0x018D,
    449     0x0197,  0x01A1,  0x01AB,  0x01B5,
    450     0x01BF,  0x01CA,  0x01D4,  0x01DF,
    451     0x01EA,  0x01F5,  0x0200,  0x020C,
    452     0x0217,  0x0223,  0x022F,  0x023B,
    453     0x0247,  0x0253,  0x0260,  0x026D,
    454     0x027A,  0x0287,  0x0294,  0x02A1,
    455     0x02AF,  0x02BC,  0x02CA,  0x02D8,
    456     0x02E7,  0x02F5,  0x0304,  0x0312,
    457     0x0321,  0x0331,  0x0340,  0x034F,
    458     0x035F,  0x036F,  0x037F,  0x038F,
    459     0x03A0,  0x03B0,  0x03C1,  0x03D2,
    460     0x03E3,  0x03F5,  0x0406,  0x0418,
    461     0x042A,  0x043C,  0x044F,  0x0461,
    462     0x0474,  0x0487,  0x049A,  0x04AE,
    463     0x04C1,  0x04D5,  0x04E9,  0x04FD,
    464     0x0512,  0x0526,  0x053B,  0x0550,
    465     0x0566,  0x057B,  0x0591,  0x05A7,
    466     0x05BD,  0x05D3,  0x05EA,  0x0601,
    467     0x0618,  0x062F,  0x0646,  0x065E,
    468     0x0676,  0x068E,  0x06A6,  0x06BF,
    469     0x06D8,  0x06F1,  0x070A,  0x0723,
    470     0x073D,  0x0757,  0x0771,  0x078C,
    471     0x07A6,  0x07C1,  0x07DC,  0x07F7,
    472     0x0813,  0x082F,  0x084B,  0x0867,
    473     0x0884,  0x08A0,  0x08BD,  0x08DA,
    474     0x08F8,  0x0916,  0x0933,  0x0952,
    475     0x0970,  0x098F,  0x09AE,  0x09CD,
    476     0x09EC,  0x0A0C,  0x0A2C,  0x0A4C,
    477     0x0A6C,  0x0A8D,  0x0AAD,  0x0ACF,
    478     0x0AF0,  0x0B11,  0x0B33,  0x0B55,
    479     0x0B78,  0x0B9A,  0x0BBD,  0x0BE0,
    480     0x0C03,  0x0C27,  0x0C4B,  0x0C6F,
    481     0x0C93,  0x0CB8,  0x0CDD,  0x0D02,
    482     0x0D27,  0x0D4D,  0x0D73,  0x0D99,
    483     0x0DBF,  0x0DE6,  0x0E0C,  0x0E33,
    484     0x0E5B,  0x0E82,  0x0EAA,  0x0ED2,
    485     0x0EFB,  0x0F23,  0x0F4C,  0x0F75,
    486     0x0F9F,  0x0FC8,  0x0FF2,  0x101C,
    487     0x1047,  0x1071,  0x109C,  0x10C7,
    488     0x10F3,  0x111E,  0x114A,  0x1176,
    489     0x11A3,  0x11D0,  0x11FC,  0x122A,
    490     0x1257,  0x1285,  0x12B3,  0x12E1,
    491     0x130F,  0x133E,  0x136D,  0x139C,
    492     0x13CB,  0x13FB,  0x142B,  0x145B,
    493     0x148B,  0x14BC,  0x14ED,  0x151E,
    494     0x1550,  0x1581,  0x15B3,  0x15E5,
    495     0x1618,  0x164A,  0x167D,  0x16B0,
    496     0x16E3,  0x1717,  0x174B,  0x177F,
    497     0x17B3,  0x17E8,  0x181D,  0x1852,
    498     0x1887,  0x18BC,  0x18F2,  0x1928,
    499     0x195E,  0x1995,  0x19CB,  0x1A02,
    500     0x1A39,  0x1A71,  0x1AA8,  0x1AE0,
    501     0x1B18,  0x1B50,  0x1B89,  0x1BC1,
    502     0x1BFA,  0x1C34,  0x1C6D,  0x1CA7,
    503     0x1CE0,  0x1D1A,  0x1D55,  0x1D8F,
    504     0x1DCA,  0x1E05,  0x1E40,  0x1E7B,
    505     0x1EB7,  0x1EF2,  0x1F2E,  0x1F6B,
    506     0x1FA7,  0x1FE4,  0x2020,  0x205D,
    507     0x209B,  0x20D8,  0x2116,  0x2153,
    508     0x2191,  0x21D0,  0x220E,  0x224D,
    509     0x228B,  0x22CA,  0x2309,  0x2349,
    510     0x2388,  0x23C8,  0x2408,  0x2448,
    511     0x2488,  0x24C9,  0x2509,  0x254A,
    512     0x258B,  0x25CC,  0x260E,  0x264F,
    513     0x2691,  0x26D3,  0x2715,  0x2757,
    514     0x2799,  0x27DC,  0x281F,  0x2861,
    515     0x28A4,  0x28E8,  0x292B,  0x296E,
    516     0x29B2,  0x29F6,  0x2A3A,  0x2A7E,
    517     0x2AC2,  0x2B06,  0x2B4B,  0x2B8F,
    518     0x2BD4,  0x2C19,  0x2C5E,  0x2CA3,
    519     0x2CE9,  0x2D2E,  0x2D74,  0x2DB9,
    520     0x2DFF,  0x2E45,  0x2E8B,  0x2ED1,
    521     0x2F18,  0x2F5E,  0x2FA5,  0x2FEB,
    522     0x3032,  0x3079,  0x30C0,  0x3107,
    523     0x314E,  0x3195,  0x31DD,  0x3224,
    524     0x326C,  0x32B4,  0x32FB,  0x3343,
    525     0x338B,  0x33D3,  0x341B,  0x3463,
    526     0x34AC,  0x34F4,  0x353D,  0x3585,
    527     0x35CE,  0x3616,  0x365F,  0x36A8,
    528     0x36F1,  0x373A,  0x3783,  0x37CC,
    529     0x3815,  0x385E,  0x38A7,  0x38F0,
    530     0x393A,  0x3983,  0x39CC,  0x3A16,
    531     0x3A5F,  0x3AA9,  0x3AF2,  0x3B3C,
    532     0x3B86,  0x3BCF,  0x3C19,  0x3C63,
    533     0x3CAC,  0x3CF6,  0x3D40,  0x3D8A,
    534     0x3DD3,  0x3E1D,  0x3E67,  0x3EB1,
    535     0x3EFB,  0x3F45,  0x3F8E,  0x3FD8,
    536     0x4022,  0x406C,  0x40B6,  0x4100,
    537     0x414A,  0x4193,  0x41DD,  0x4227,
    538     0x4271,  0x42BB,  0x4304,  0x434E,
    539     0x4398,  0x43E1,  0x442B,  0x4475,
    540     0x44BE,  0x4508,  0x4551,  0x459B,
    541     0x45E4,  0x462E,  0x4677,  0x46C0,
    542     0x4709,  0x4753,  0x479C,  0x47E5,
    543     0x482E,  0x4877,  0x48C0,  0x4909,
    544     0x4951,  0x499A,  0x49E3,  0x4A2B,
    545     0x4A74,  0x4ABC,  0x4B04,  0x4B4D,
    546     0x4B95,  0x4BDD,  0x4C25,  0x4C6D,
    547     0x4CB5,  0x4CFC,  0x4D44,  0x4D8C,
    548     0x4DD3,  0x4E1A,  0x4E62,  0x4EA9,
    549     0x4EF0,  0x4F37,  0x4F7E,  0x4FC4,
    550     0x500B,  0x5051,  0x5098,  0x50DE,
    551     0x5124,  0x516A,  0x51B0,  0x51F6,
    552     0x523B,  0x5281,  0x52C6,  0x530B,
    553     0x5351,  0x5396,  0x53DA,  0x541F,
    554     0x5464,  0x54A8,  0x54EC,  0x5530,
    555     0x5574,  0x55B8,  0x55FC,  0x563F,
    556     0x5683,  0x56C6,  0x5709,  0x574C,
    557     0x578F,  0x57D1,  0x5814,  0x5856,
    558     0x5898,  0x58DA,  0x591B,  0x595D,
    559     0x599E,  0x59E0,  0x5A21,  0x5A61,
    560     0x5AA2,  0x5AE3,  0x5B23,  0x5B63,
    561     0x5BA3,  0x5BE3,  0x5C22,  0x5C62,
    562     0x5CA1,  0x5CE0,  0x5D1F,  0x5D5D,
    563     0x5D9C,  0x5DDA,  0x5E18,  0x5E56,
    564     0x5E93,  0x5ED1,  0x5F0E,  0x5F4B,
    565     0x5F87,  0x5FC4,  0x6000,  0x603D,
    566     0x6079,  0x60B4,  0x60F0,  0x612B,
    567     0x6166,  0x61A1,  0x61DC,  0x6216,
    568     0x6250,  0x628A,  0x62C4,  0x62FE,
    569     0x6337,  0x6370,  0x63A9,  0x63E2,
    570     0x641A,  0x6452,  0x648A,  0x64C2,
    571     0x64F9,  0x6531,  0x6568,  0x659E,
    572     0x65D5,  0x660B,  0x6641,  0x6677,
    573     0x66AD,  0x66E2,  0x6717,  0x674C,
    574     0x6781,  0x67B5,  0x67E9,  0x681D,
    575     0x6851,  0x6885,  0x68B8,  0x68EB,
    576     0x691D,  0x6950,  0x6982,  0x69B4,
    577     0x69E6,  0x6A17,  0x6A48,  0x6A79,
    578     0x6AAA,  0x6ADB,  0x6B0B,  0x6B3B,
    579     0x6B6A,  0x6B9A,  0x6BC9,  0x6BF8,
    580     0x6C27,  0x6C55,  0x6C83,  0x6CB1,
    581     0x6CDF,  0x6D0D,  0x6D3A,  0x6D67,
    582     0x6D93,  0x6DC0,  0x6DEC,  0x6E18,
    583     0x6E44,  0x6E6F,  0x6E9A,  0x6EC5,
    584     0x6EF0,  0x6F1A,  0x6F44,  0x6F6E,
    585     0x6F98,  0x6FC1,  0x6FEA,  0x7013,
    586     0x703C,  0x7064,  0x708C,  0x70B4,
    587     0x70DB,  0x7103,  0x712A,  0x7151,
    588     0x7177,  0x719D,  0x71C3,  0x71E9,
    589     0x720F,  0x7234,  0x7259,  0x727E,
    590     0x72A2,  0x72C7,  0x72EB,  0x730E,
    591     0x7332,  0x7355,  0x7378,  0x739B,
    592     0x73BD,  0x73E0,  0x7402,  0x7424,
    593     0x7445,  0x7466,  0x7487,  0x74A8,
    594     0x74C9,  0x74E9,  0x7509,  0x7529,
    595     0x7548,  0x7568,  0x7587,  0x75A5,
    596     0x75C4,  0x75E2,  0x7601,  0x761E,
    597     0x763C,  0x7659,  0x7676,  0x7693,
    598     0x76B0,  0x76CC,  0x76E9,  0x7705,
    599     0x7720,  0x773C,  0x7757,  0x7772,
    600     0x778D,  0x77A8,  0x77C2,  0x77DC,
    601     0x77F6,  0x780F,  0x7829,  0x7842,
    602     0x785B,  0x7874,  0x788C,  0x78A5,
    603     0x78BD,  0x78D5,  0x78EC,  0x7904,
    604     0x791B,  0x7932,  0x7949,  0x795F,
    605     0x7976,  0x798C,  0x79A2,  0x79B7,
    606     0x79CD,  0x79E2,  0x79F7,  0x7A0C,
    607     0x7A21,  0x7A35,  0x7A4A,  0x7A5E,
    608     0x7A72,  0x7A85,  0x7A99,  0x7AAC,
    609     0x7ABF,  0x7AD2,  0x7AE5,  0x7AF7,
    610     0x7B09,  0x7B1B,  0x7B2D,  0x7B3F,
    611     0x7B51,  0x7B62,  0x7B73,  0x7B84,
    612     0x7B95,  0x7BA5,  0x7BB6,  0x7BC6,
    613     0x7BD6,  0x7BE6,  0x7BF6,  0x7C05,
    614     0x7C15,  0x7C24,  0x7C33,  0x7C42,
    615     0x7C50,  0x7C5F,  0x7C6D,  0x7C7B,
    616     0x7C89,  0x7C97,  0x7CA5,  0x7CB2,
    617     0x7CC0,  0x7CCD,  0x7CDA,  0x7CE7,
    618     0x7CF3,  0x7D00,  0x7D0C,  0x7D18,
    619     0x7D25,  0x7D31,  0x7D3C,  0x7D48,
    620     0x7D53,  0x7D5F,  0x7D6A,  0x7D75,
    621     0x7D80,  0x7D8B,  0x7D95,  0x7DA0,
    622     0x7DAA,  0x7DB4,  0x7DBE,  0x7DC8,
    623     0x7DD2,  0x7DDC,  0x7DE5,  0x7DEF,
    624     0x7DF8,  0x7E01,  0x7E0A,  0x7E13,
    625     0x7E1C,  0x7E25,  0x7E2D,  0x7E36,
    626     0x7E3E,  0x7E46,  0x7E4E,  0x7E56,
    627     0x7E5E,  0x7E66,  0x7E6D,  0x7E75,
    628     0x7E7C,  0x7E83,  0x7E8B,  0x7E92,
    629     0x7E99,  0x7EA0,  0x7EA6,  0x7EAD,
    630     0x7EB3,  0x7EBA,  0x7EC0,  0x7EC6,
    631     0x7ECD,  0x7ED3,  0x7ED9,  0x7EDE,
    632     0x7EE4,  0x7EEA,  0x7EF0,  0x7EF5,
    633     0x7EFA,  0x7F00,  0x7F05,  0x7F0A,
    634     0x7F0F,  0x7F14,  0x7F19,  0x7F1E,
    635     0x7F23,  0x7F27,  0x7F2C,  0x7F30,
    636     0x7F35,  0x7F39,  0x7F3D,  0x7F41,
    637     0x7F46,  0x7F4A,  0x7F4E,  0x7F52,
    638     0x7F55,  0x7F59,  0x7F5D,  0x7F60,
    639     0x7F64,  0x7F68,  0x7F6B,  0x7F6E,
    640     0x7F72,  0x7F75,  0x7F78,  0x7F7B,
    641     0x7F7E,  0x7F81,  0x7F84,  0x7F87,
    642     0x7F8A,  0x7F8D,  0x7F90,  0x7F92,
    643     0x7F95,  0x7F97,  0x7F9A,  0x7F9C,
    644     0x7F9F,  0x7FA1,  0x7FA4,  0x7FA6,
    645     0x7FA8,  0x7FAA,  0x7FAC,  0x7FAE,
    646     0x7FB1,  0x7FB3,  0x7FB5,  0x7FB6,
    647     0x7FB8,  0x7FBA,  0x7FBC,  0x7FBE,
    648     0x7FBF,  0x7FC1,  0x7FC3,  0x7FC4,
    649     0x7FC6,  0x7FC8,  0x7FC9,  0x7FCB,
    650     0x7FCC,  0x7FCD,  0x7FCF,  0x7FD0,
    651     0x7FD1,  0x7FD3,  0x7FD4,  0x7FD5,
    652     0x7FD6,  0x7FD8,  0x7FD9,  0x7FDA,
    653     0x7FDB,  0x7FDC,  0x7FDD,  0x7FDE,
    654     0x7FDF,  0x7FE0,  0x7FE1,  0x7FE2,
    655     0x7FE3,  0x7FE4,  0x7FE4,  0x7FE5,
    656     0x7FE6,  0x7FE7,  0x7FE8,  0x7FE8,
    657     0x7FE9,  0x7FEA,  0x7FEA,  0x7FEB,
    658     0x7FEC,  0x7FEC,  0x7FED,  0x7FEE,
    659     0x7FEE,  0x7FEF,  0x7FEF,  0x7FF0,
    660     0x7FF0,  0x7FF1,  0x7FF1,  0x7FF2,
    661     0x7FF2,  0x7FF3,  0x7FF3,  0x7FF4,
    662     0x7FF4,  0x7FF4,  0x7FF5,  0x7FF5,
    663     0x7FF6,  0x7FF6,  0x7FF6,  0x7FF7,
    664     0x7FF7,  0x7FF7,  0x7FF8,  0x7FF8,
    665     0x7FF8,  0x7FF8,  0x7FF9,  0x7FF9,
    666     0x7FF9,  0x7FF9,  0x7FFA,  0x7FFA,
    667     0x7FFA,  0x7FFA,  0x7FFA,  0x7FFB,
    668     0x7FFB,  0x7FFB,  0x7FFB,  0x7FFB,
    669     0x7FFC,  0x7FFC,  0x7FFC,  0x7FFC,
    670     0x7FFC,  0x7FFC,  0x7FFC,  0x7FFC,
    671     0x7FFD,  0x7FFD,  0x7FFD,  0x7FFD,
    672     0x7FFD,  0x7FFD,  0x7FFD,  0x7FFD,
    673     0x7FFD,  0x7FFD,  0x7FFE,  0x7FFE,
    674     0x7FFE,  0x7FFE,  0x7FFE,  0x7FFE,
    675     0x7FFE,  0x7FFE,  0x7FFE,  0x7FFE,
    676     0x7FFE,  0x7FFE,  0x7FFE,  0x7FFE,
    677     0x7FFE,  0x7FFE,  0x7FFE,  0x7FFE,
    678     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    679     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    680     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    681     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    682     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    683     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    684     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    685     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    686     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    687     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF
    688 
    689 };
    690 
    691 
    692 
    693 
    694 const Int16 Short_Window_KBD_fxp[SHORT_WINDOW] =
    695 {
    696 
    697     0x0001,  0x0004,  0x0008,  0x000D,
    698     0x0014,  0x001D,  0x0029,  0x0039,
    699     0x004C,  0x0063,  0x0080,  0x00A2,
    700     0x00CB,  0x00FB,  0x0133,  0x0174,
    701     0x01BE,  0x0214,  0x0275,  0x02E3,
    702     0x035E,  0x03E8,  0x0481,  0x052B,
    703     0x05E7,  0x06B4,  0x0795,  0x088A,
    704     0x0993,  0x0AB2,  0x0BE7,  0x0D32,
    705     0x0E94,  0x100E,  0x119F,  0x1347,
    706     0x1507,  0x16DE,  0x18CC,  0x1AD0,
    707     0x1CEB,  0x1F1A,  0x215F,  0x23B6,
    708     0x2620,  0x289C,  0x2B27,  0x2DC0,
    709     0x3066,  0x3317,  0x35D2,  0x3894,
    710     0x3B5C,  0x3E28,  0x40F6,  0x43C4,
    711     0x468F,  0x4956,  0x4C18,  0x4ED1,
    712     0x5181,  0x5425,  0x56BC,  0x5944,
    713     0x5BBB,  0x5E21,  0x6073,  0x62B1,
    714     0x64DA,  0x66EC,  0x68E7,  0x6ACB,
    715     0x6C96,  0x6E49,  0x6FE4,  0x7166,
    716     0x72D0,  0x7421,  0x755B,  0x767E,
    717     0x778A,  0x7881,  0x7962,  0x7A30,
    718     0x7AEA,  0x7B92,  0x7C29,  0x7CB0,
    719     0x7D28,  0x7D92,  0x7DF0,  0x7E42,
    720     0x7E89,  0x7EC7,  0x7EFC,  0x7F2A,
    721     0x7F50,  0x7F71,  0x7F8C,  0x7FA3,
    722     0x7FB6,  0x7FC5,  0x7FD2,  0x7FDC,
    723     0x7FE4,  0x7FEB,  0x7FF0,  0x7FF4,
    724     0x7FF7,  0x7FF9,  0x7FFB,  0x7FFC,
    725     0x7FFD,  0x7FFE,  0x7FFE,  0x7FFE,
    726     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    727     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,
    728     0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF
    729 };
    730 
    731