per file doxy
[ffmpeg.git] / libavcodec / ac3tab.h
1 /**
2  * @file ac3tab.h
3  * tables taken directly from AC3 spec.
4  */
5
6 /* possible frequencies */
7 const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };
8
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 
13 };
14
15 /* AC3 MDCT window */
16
17 /* MDCT window */
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,  
51 };
52
53 static uint8_t masktab[253];
54
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,
82 };
83
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 },
135 };
136
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, 
144     15, 15, 15, 15,
145 };
146
147 const uint8_t sdecaytab[4]={ 
148     0x0f, 0x11, 0x13, 0x15,
149 };
150
151 const uint8_t fdecaytab[4]={ 
152     0x3f, 0x53, 0x67, 0x7b, 
153 };
154
155 const uint16_t sgaintab[4]= { 
156     0x540, 0x4d8, 0x478, 0x410,
157 };
158
159 const uint16_t dbkneetab[4]= { 
160     0x000, 0x700, 0x900, 0xb00,
161 };
162
163 const uint16_t floortab[8]= { 
164     0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
165 };
166
167 const uint16_t fgaintab[8]= {
168     0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
169 };
170
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 
175 };
176
177 static uint8_t bndtab[51]; 
178
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];
185
186 static uint16_t crc_table[256];