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