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