00001
00006
00007 static const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };
00008
00009
00010 static const uint16_t ac3_bitratetab[19] = {
00011 32, 40, 48, 56, 64, 80, 96, 112, 128,
00012 160, 192, 224, 256, 320, 384, 448, 512, 576, 640
00013 };
00014
00015
00016
00017
00018 static const int16_t ac3_window[256] = {
00019 4, 7, 12, 16, 21, 28, 34, 42,
00020 51, 61, 72, 84, 97, 111, 127, 145,
00021 164, 184, 207, 231, 257, 285, 315, 347,
00022 382, 419, 458, 500, 544, 591, 641, 694,
00023 750, 810, 872, 937, 1007, 1079, 1155, 1235,
00024 1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
00025 2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
00026 3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
00027 4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
00028 6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
00029 8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
00030 10660,10960,11264,11570,11879,12190,12504,12820,
00031 13138,13458,13780,14103,14427,14753,15079,15407,
00032 15735,16063,16392,16720,17049,17377,17705,18032,
00033 18358,18683,19007,19330,19651,19970,20287,20602,
00034 20914,21225,21532,21837,22139,22438,22733,23025,
00035 23314,23599,23880,24157,24430,24699,24964,25225,
00036 25481,25732,25979,26221,26459,26691,26919,27142,
00037 27359,27572,27780,27983,28180,28373,28560,28742,
00038 28919,29091,29258,29420,29577,29729,29876,30018,
00039 30155,30288,30415,30538,30657,30771,30880,30985,
00040 31086,31182,31274,31363,31447,31528,31605,31678,
00041 31747,31814,31877,31936,31993,32046,32097,32145,
00042 32190,32232,32272,32310,32345,32378,32409,32438,
00043 32465,32490,32513,32535,32556,32574,32592,32608,
00044 32623,32636,32649,32661,32671,32681,32690,32698,
00045 32705,32712,32718,32724,32729,32733,32737,32741,
00046 32744,32747,32750,32752,32754,32756,32757,32759,
00047 32760,32761,32762,32763,32764,32764,32765,32765,
00048 32766,32766,32766,32766,32767,32767,32767,32767,
00049 32767,32767,32767,32767,32767,32767,32767,32767,
00050 32767,32767,32767,32767,32767,32767,32767,32767,
00051 };
00052
00053 static uint8_t masktab[253];
00054
00055 static const uint8_t latab[260]= {
00056 0x0040,0x003f,0x003e,0x003d,0x003c,0x003b,0x003a,0x0039,0x0038,0x0037,
00057 0x0036,0x0035,0x0034,0x0034,0x0033,0x0032,0x0031,0x0030,0x002f,0x002f,
00058 0x002e,0x002d,0x002c,0x002c,0x002b,0x002a,0x0029,0x0029,0x0028,0x0027,
00059 0x0026,0x0026,0x0025,0x0024,0x0024,0x0023,0x0023,0x0022,0x0021,0x0021,
00060 0x0020,0x0020,0x001f,0x001e,0x001e,0x001d,0x001d,0x001c,0x001c,0x001b,
00061 0x001b,0x001a,0x001a,0x0019,0x0019,0x0018,0x0018,0x0017,0x0017,0x0016,
00062 0x0016,0x0015,0x0015,0x0015,0x0014,0x0014,0x0013,0x0013,0x0013,0x0012,
00063 0x0012,0x0012,0x0011,0x0011,0x0011,0x0010,0x0010,0x0010,0x000f,0x000f,
00064 0x000f,0x000e,0x000e,0x000e,0x000d,0x000d,0x000d,0x000d,0x000c,0x000c,
00065 0x000c,0x000c,0x000b,0x000b,0x000b,0x000b,0x000a,0x000a,0x000a,0x000a,
00066 0x000a,0x0009,0x0009,0x0009,0x0009,0x0009,0x0008,0x0008,0x0008,0x0008,
00067 0x0008,0x0008,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0006,0x0006,
00068 0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0005,0x0005,0x0005,0x0005,
00069 0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,
00070 0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0003,
00071 0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,
00072 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,
00073 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,
00074 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
00075 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
00076 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
00077 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
00078 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
00079 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
00080 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
00081 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
00082 };
00083
00084 static const uint16_t hth[50][3]= {
00085 { 0x04d0,0x04f0,0x0580 },
00086 { 0x04d0,0x04f0,0x0580 },
00087 { 0x0440,0x0460,0x04b0 },
00088 { 0x0400,0x0410,0x0450 },
00089 { 0x03e0,0x03e0,0x0420 },
00090 { 0x03c0,0x03d0,0x03f0 },
00091 { 0x03b0,0x03c0,0x03e0 },
00092 { 0x03b0,0x03b0,0x03d0 },
00093 { 0x03a0,0x03b0,0x03c0 },
00094 { 0x03a0,0x03a0,0x03b0 },
00095 { 0x03a0,0x03a0,0x03b0 },
00096 { 0x03a0,0x03a0,0x03b0 },
00097 { 0x03a0,0x03a0,0x03a0 },
00098 { 0x0390,0x03a0,0x03a0 },
00099 { 0x0390,0x0390,0x03a0 },
00100 { 0x0390,0x0390,0x03a0 },
00101 { 0x0380,0x0390,0x03a0 },
00102 { 0x0380,0x0380,0x03a0 },
00103 { 0x0370,0x0380,0x03a0 },
00104 { 0x0370,0x0380,0x03a0 },
00105 { 0x0360,0x0370,0x0390 },
00106 { 0x0360,0x0370,0x0390 },
00107 { 0x0350,0x0360,0x0390 },
00108 { 0x0350,0x0360,0x0390 },
00109 { 0x0340,0x0350,0x0380 },
00110 { 0x0340,0x0350,0x0380 },
00111 { 0x0330,0x0340,0x0380 },
00112 { 0x0320,0x0340,0x0370 },
00113 { 0x0310,0x0320,0x0360 },
00114 { 0x0300,0x0310,0x0350 },
00115 { 0x02f0,0x0300,0x0340 },
00116 { 0x02f0,0x02f0,0x0330 },
00117 { 0x02f0,0x02f0,0x0320 },
00118 { 0x02f0,0x02f0,0x0310 },
00119 { 0x0300,0x02f0,0x0300 },
00120 { 0x0310,0x0300,0x02f0 },
00121 { 0x0340,0x0320,0x02f0 },
00122 { 0x0390,0x0350,0x02f0 },
00123 { 0x03e0,0x0390,0x0300 },
00124 { 0x0420,0x03e0,0x0310 },
00125 { 0x0460,0x0420,0x0330 },
00126 { 0x0490,0x0450,0x0350 },
00127 { 0x04a0,0x04a0,0x03c0 },
00128 { 0x0460,0x0490,0x0410 },
00129 { 0x0440,0x0460,0x0470 },
00130 { 0x0440,0x0440,0x04a0 },
00131 { 0x0520,0x0480,0x0460 },
00132 { 0x0800,0x0630,0x0440 },
00133 { 0x0840,0x0840,0x0450 },
00134 { 0x0840,0x0840,0x04e0 },
00135 };
00136
00137 static const uint8_t baptab[64]= {
00138 0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
00139 3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
00140 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
00141 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
00142 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
00143 14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
00144 15, 15, 15, 15,
00145 };
00146
00147 static const uint8_t sdecaytab[4]={
00148 0x0f, 0x11, 0x13, 0x15,
00149 };
00150
00151 static const uint8_t fdecaytab[4]={
00152 0x3f, 0x53, 0x67, 0x7b,
00153 };
00154
00155 static const uint16_t sgaintab[4]= {
00156 0x540, 0x4d8, 0x478, 0x410,
00157 };
00158
00159 static const uint16_t dbkneetab[4]= {
00160 0x000, 0x700, 0x900, 0xb00,
00161 };
00162
00163 static const uint16_t floortab[8]= {
00164 0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
00165 };
00166
00167 static const uint16_t fgaintab[8]= {
00168 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
00169 };
00170
00171 static const uint8_t bndsz[50]={
00172 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00173 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
00174 3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
00175 };
00176
00177 static uint8_t bndtab[51];
00178
00179
00180 static int16_t costab[64];
00181 static int16_t sintab[64];
00182 static int16_t fft_rev[512];
00183 static int16_t xcos1[128];
00184 static int16_t xsin1[128];
00185
00186 static uint16_t crc_table[256];