3
* tables taken directly from AC3 spec.
6
/* possible frequencies */
7
const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };
9
/* possible bitrates */
10
const uint16_t ac3_bitratetab[19] = {
11
32, 40, 48, 56, 64, 80, 96, 112, 128,
12
160, 192, 224, 256, 320, 384, 448, 512, 576, 640
18
const int16_t ac3_window[256] = {
19
4, 7, 12, 16, 21, 28, 34, 42,
20
51, 61, 72, 84, 97, 111, 127, 145,
21
164, 184, 207, 231, 257, 285, 315, 347,
22
382, 419, 458, 500, 544, 591, 641, 694,
23
750, 810, 872, 937, 1007, 1079, 1155, 1235,
24
1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
25
2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
26
3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
27
4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
28
6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
29
8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
30
10660,10960,11264,11570,11879,12190,12504,12820,
31
13138,13458,13780,14103,14427,14753,15079,15407,
32
15735,16063,16392,16720,17049,17377,17705,18032,
33
18358,18683,19007,19330,19651,19970,20287,20602,
34
20914,21225,21532,21837,22139,22438,22733,23025,
35
23314,23599,23880,24157,24430,24699,24964,25225,
36
25481,25732,25979,26221,26459,26691,26919,27142,
37
27359,27572,27780,27983,28180,28373,28560,28742,
38
28919,29091,29258,29420,29577,29729,29876,30018,
39
30155,30288,30415,30538,30657,30771,30880,30985,
40
31086,31182,31274,31363,31447,31528,31605,31678,
41
31747,31814,31877,31936,31993,32046,32097,32145,
42
32190,32232,32272,32310,32345,32378,32409,32438,
43
32465,32490,32513,32535,32556,32574,32592,32608,
44
32623,32636,32649,32661,32671,32681,32690,32698,
45
32705,32712,32718,32724,32729,32733,32737,32741,
46
32744,32747,32750,32752,32754,32756,32757,32759,
47
32760,32761,32762,32763,32764,32764,32765,32765,
48
32766,32766,32766,32766,32767,32767,32767,32767,
49
32767,32767,32767,32767,32767,32767,32767,32767,
50
32767,32767,32767,32767,32767,32767,32767,32767,
53
static uint8_t masktab[253];
55
static const uint8_t latab[260]= {
56
0x0040,0x003f,0x003e,0x003d,0x003c,0x003b,0x003a,0x0039,0x0038,0x0037,
57
0x0036,0x0035,0x0034,0x0034,0x0033,0x0032,0x0031,0x0030,0x002f,0x002f,
58
0x002e,0x002d,0x002c,0x002c,0x002b,0x002a,0x0029,0x0029,0x0028,0x0027,
59
0x0026,0x0026,0x0025,0x0024,0x0024,0x0023,0x0023,0x0022,0x0021,0x0021,
60
0x0020,0x0020,0x001f,0x001e,0x001e,0x001d,0x001d,0x001c,0x001c,0x001b,
61
0x001b,0x001a,0x001a,0x0019,0x0019,0x0018,0x0018,0x0017,0x0017,0x0016,
62
0x0016,0x0015,0x0015,0x0015,0x0014,0x0014,0x0013,0x0013,0x0013,0x0012,
63
0x0012,0x0012,0x0011,0x0011,0x0011,0x0010,0x0010,0x0010,0x000f,0x000f,
64
0x000f,0x000e,0x000e,0x000e,0x000d,0x000d,0x000d,0x000d,0x000c,0x000c,
65
0x000c,0x000c,0x000b,0x000b,0x000b,0x000b,0x000a,0x000a,0x000a,0x000a,
66
0x000a,0x0009,0x0009,0x0009,0x0009,0x0009,0x0008,0x0008,0x0008,0x0008,
67
0x0008,0x0008,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0006,0x0006,
68
0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0005,0x0005,0x0005,0x0005,
69
0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,
70
0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0003,
71
0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,
72
0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,
73
0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,
74
0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
75
0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
76
0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
77
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
78
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
79
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
80
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
81
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
84
static const uint16_t hth[50][3]= {
85
{ 0x04d0,0x04f0,0x0580 },
86
{ 0x04d0,0x04f0,0x0580 },
87
{ 0x0440,0x0460,0x04b0 },
88
{ 0x0400,0x0410,0x0450 },
89
{ 0x03e0,0x03e0,0x0420 },
90
{ 0x03c0,0x03d0,0x03f0 },
91
{ 0x03b0,0x03c0,0x03e0 },
92
{ 0x03b0,0x03b0,0x03d0 },
93
{ 0x03a0,0x03b0,0x03c0 },
94
{ 0x03a0,0x03a0,0x03b0 },
95
{ 0x03a0,0x03a0,0x03b0 },
96
{ 0x03a0,0x03a0,0x03b0 },
97
{ 0x03a0,0x03a0,0x03a0 },
98
{ 0x0390,0x03a0,0x03a0 },
99
{ 0x0390,0x0390,0x03a0 },
100
{ 0x0390,0x0390,0x03a0 },
101
{ 0x0380,0x0390,0x03a0 },
102
{ 0x0380,0x0380,0x03a0 },
103
{ 0x0370,0x0380,0x03a0 },
104
{ 0x0370,0x0380,0x03a0 },
105
{ 0x0360,0x0370,0x0390 },
106
{ 0x0360,0x0370,0x0390 },
107
{ 0x0350,0x0360,0x0390 },
108
{ 0x0350,0x0360,0x0390 },
109
{ 0x0340,0x0350,0x0380 },
110
{ 0x0340,0x0350,0x0380 },
111
{ 0x0330,0x0340,0x0380 },
112
{ 0x0320,0x0340,0x0370 },
113
{ 0x0310,0x0320,0x0360 },
114
{ 0x0300,0x0310,0x0350 },
115
{ 0x02f0,0x0300,0x0340 },
116
{ 0x02f0,0x02f0,0x0330 },
117
{ 0x02f0,0x02f0,0x0320 },
118
{ 0x02f0,0x02f0,0x0310 },
119
{ 0x0300,0x02f0,0x0300 },
120
{ 0x0310,0x0300,0x02f0 },
121
{ 0x0340,0x0320,0x02f0 },
122
{ 0x0390,0x0350,0x02f0 },
123
{ 0x03e0,0x0390,0x0300 },
124
{ 0x0420,0x03e0,0x0310 },
125
{ 0x0460,0x0420,0x0330 },
126
{ 0x0490,0x0450,0x0350 },
127
{ 0x04a0,0x04a0,0x03c0 },
128
{ 0x0460,0x0490,0x0410 },
129
{ 0x0440,0x0460,0x0470 },
130
{ 0x0440,0x0440,0x04a0 },
131
{ 0x0520,0x0480,0x0460 },
132
{ 0x0800,0x0630,0x0440 },
133
{ 0x0840,0x0840,0x0450 },
134
{ 0x0840,0x0840,0x04e0 },
137
static const uint8_t baptab[64]= {
138
0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
139
3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
140
7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
141
9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
142
12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
143
14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
147
const uint8_t sdecaytab[4]={
148
0x0f, 0x11, 0x13, 0x15,
151
const uint8_t fdecaytab[4]={
152
0x3f, 0x53, 0x67, 0x7b,
155
const uint16_t sgaintab[4]= {
156
0x540, 0x4d8, 0x478, 0x410,
159
const uint16_t dbkneetab[4]= {
160
0x000, 0x700, 0x900, 0xb00,
163
const uint16_t floortab[8]= {
164
0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
167
const uint16_t fgaintab[8]= {
168
0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
171
static const uint8_t bndsz[50]={
172
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
173
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
174
3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
177
static uint8_t bndtab[51];
179
/* fft & mdct sin cos tables */
180
static int16_t costab[64];
181
static int16_t sintab[64];
182
static int16_t fft_rev[512];
183
static int16_t xcos1[128];
184
static int16_t xsin1[128];
186
static uint16_t crc_table[256];