comparison ac3tab.c @ 4879:60603c9c89d1 libavcodec

move ac3 tables from a .h to a .c
author aurel
date Wed, 25 Apr 2007 22:12:51 +0000
parents ac3tab.h@acdd4b24f5c5
children 7dfd69f9af60
comparison
equal deleted inserted replaced
4878:0e38c828bdae 4879:60603c9c89d1
1 /*
2 * AC3 tables
3 * copyright (c) 2001 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 /**
23 * @file ac3tab.c
24 * tables taken directly from AC3 spec.
25 */
26
27 #include "ac3tab.h"
28
29 /**
30 * Possible frame sizes.
31 * from ATSC A/52 Table 5.18 Frame Size Code Table.
32 */
33 const uint16_t ff_ac3_frame_sizes[38][3] = {
34 { 64, 69, 96 },
35 { 64, 70, 96 },
36 { 80, 87, 120 },
37 { 80, 88, 120 },
38 { 96, 104, 144 },
39 { 96, 105, 144 },
40 { 112, 121, 168 },
41 { 112, 122, 168 },
42 { 128, 139, 192 },
43 { 128, 140, 192 },
44 { 160, 174, 240 },
45 { 160, 175, 240 },
46 { 192, 208, 288 },
47 { 192, 209, 288 },
48 { 224, 243, 336 },
49 { 224, 244, 336 },
50 { 256, 278, 384 },
51 { 256, 279, 384 },
52 { 320, 348, 480 },
53 { 320, 349, 480 },
54 { 384, 417, 576 },
55 { 384, 418, 576 },
56 { 448, 487, 672 },
57 { 448, 488, 672 },
58 { 512, 557, 768 },
59 { 512, 558, 768 },
60 { 640, 696, 960 },
61 { 640, 697, 960 },
62 { 768, 835, 1152 },
63 { 768, 836, 1152 },
64 { 896, 975, 1344 },
65 { 896, 976, 1344 },
66 { 1024, 1114, 1536 },
67 { 1024, 1115, 1536 },
68 { 1152, 1253, 1728 },
69 { 1152, 1254, 1728 },
70 { 1280, 1393, 1920 },
71 { 1280, 1394, 1920 },
72 };
73
74 /**
75 * Maps audio coding mode (acmod) to number of full-bandwidth channels.
76 * from ATSC A/52 Table 5.8 Audio Coding Mode
77 */
78 const uint8_t ff_ac3_channels[8] = {
79 2, 1, 2, 3, 3, 4, 4, 5
80 };
81
82 /* possible frequencies */
83 const uint16_t ff_ac3_freqs[3] = { 48000, 44100, 32000 };
84
85 /* possible bitrates */
86 const uint16_t ff_ac3_bitratetab[19] = {
87 32, 40, 48, 56, 64, 80, 96, 112, 128,
88 160, 192, 224, 256, 320, 384, 448, 512, 576, 640
89 };
90
91 /* AC3 MDCT window */
92
93 /* MDCT window */
94 const int16_t ff_ac3_window[256] = {
95 4, 7, 12, 16, 21, 28, 34, 42,
96 51, 61, 72, 84, 97, 111, 127, 145,
97 164, 184, 207, 231, 257, 285, 315, 347,
98 382, 419, 458, 500, 544, 591, 641, 694,
99 750, 810, 872, 937, 1007, 1079, 1155, 1235,
100 1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
101 2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
102 3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
103 4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
104 6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
105 8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
106 10660,10960,11264,11570,11879,12190,12504,12820,
107 13138,13458,13780,14103,14427,14753,15079,15407,
108 15735,16063,16392,16720,17049,17377,17705,18032,
109 18358,18683,19007,19330,19651,19970,20287,20602,
110 20914,21225,21532,21837,22139,22438,22733,23025,
111 23314,23599,23880,24157,24430,24699,24964,25225,
112 25481,25732,25979,26221,26459,26691,26919,27142,
113 27359,27572,27780,27983,28180,28373,28560,28742,
114 28919,29091,29258,29420,29577,29729,29876,30018,
115 30155,30288,30415,30538,30657,30771,30880,30985,
116 31086,31182,31274,31363,31447,31528,31605,31678,
117 31747,31814,31877,31936,31993,32046,32097,32145,
118 32190,32232,32272,32310,32345,32378,32409,32438,
119 32465,32490,32513,32535,32556,32574,32592,32608,
120 32623,32636,32649,32661,32671,32681,32690,32698,
121 32705,32712,32718,32724,32729,32733,32737,32741,
122 32744,32747,32750,32752,32754,32756,32757,32759,
123 32760,32761,32762,32763,32764,32764,32765,32765,
124 32766,32766,32766,32766,32767,32767,32767,32767,
125 32767,32767,32767,32767,32767,32767,32767,32767,
126 32767,32767,32767,32767,32767,32767,32767,32767,
127 };
128
129 const uint8_t ff_ac3_latab[260]= {
130 0x0040,0x003f,0x003e,0x003d,0x003c,0x003b,0x003a,0x0039,0x0038,0x0037,
131 0x0036,0x0035,0x0034,0x0034,0x0033,0x0032,0x0031,0x0030,0x002f,0x002f,
132 0x002e,0x002d,0x002c,0x002c,0x002b,0x002a,0x0029,0x0029,0x0028,0x0027,
133 0x0026,0x0026,0x0025,0x0024,0x0024,0x0023,0x0023,0x0022,0x0021,0x0021,
134 0x0020,0x0020,0x001f,0x001e,0x001e,0x001d,0x001d,0x001c,0x001c,0x001b,
135 0x001b,0x001a,0x001a,0x0019,0x0019,0x0018,0x0018,0x0017,0x0017,0x0016,
136 0x0016,0x0015,0x0015,0x0015,0x0014,0x0014,0x0013,0x0013,0x0013,0x0012,
137 0x0012,0x0012,0x0011,0x0011,0x0011,0x0010,0x0010,0x0010,0x000f,0x000f,
138 0x000f,0x000e,0x000e,0x000e,0x000d,0x000d,0x000d,0x000d,0x000c,0x000c,
139 0x000c,0x000c,0x000b,0x000b,0x000b,0x000b,0x000a,0x000a,0x000a,0x000a,
140 0x000a,0x0009,0x0009,0x0009,0x0009,0x0009,0x0008,0x0008,0x0008,0x0008,
141 0x0008,0x0008,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0006,0x0006,
142 0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0005,0x0005,0x0005,0x0005,
143 0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,
144 0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0003,
145 0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,
146 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,
147 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,
148 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
149 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
150 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
151 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
152 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
153 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
154 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
155 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
156 };
157
158 const uint16_t ff_ac3_hth[50][3]= {
159 { 0x04d0,0x04f0,0x0580 },
160 { 0x04d0,0x04f0,0x0580 },
161 { 0x0440,0x0460,0x04b0 },
162 { 0x0400,0x0410,0x0450 },
163 { 0x03e0,0x03e0,0x0420 },
164 { 0x03c0,0x03d0,0x03f0 },
165 { 0x03b0,0x03c0,0x03e0 },
166 { 0x03b0,0x03b0,0x03d0 },
167 { 0x03a0,0x03b0,0x03c0 },
168 { 0x03a0,0x03a0,0x03b0 },
169 { 0x03a0,0x03a0,0x03b0 },
170 { 0x03a0,0x03a0,0x03b0 },
171 { 0x03a0,0x03a0,0x03a0 },
172 { 0x0390,0x03a0,0x03a0 },
173 { 0x0390,0x0390,0x03a0 },
174 { 0x0390,0x0390,0x03a0 },
175 { 0x0380,0x0390,0x03a0 },
176 { 0x0380,0x0380,0x03a0 },
177 { 0x0370,0x0380,0x03a0 },
178 { 0x0370,0x0380,0x03a0 },
179 { 0x0360,0x0370,0x0390 },
180 { 0x0360,0x0370,0x0390 },
181 { 0x0350,0x0360,0x0390 },
182 { 0x0350,0x0360,0x0390 },
183 { 0x0340,0x0350,0x0380 },
184 { 0x0340,0x0350,0x0380 },
185 { 0x0330,0x0340,0x0380 },
186 { 0x0320,0x0340,0x0370 },
187 { 0x0310,0x0320,0x0360 },
188 { 0x0300,0x0310,0x0350 },
189 { 0x02f0,0x0300,0x0340 },
190 { 0x02f0,0x02f0,0x0330 },
191 { 0x02f0,0x02f0,0x0320 },
192 { 0x02f0,0x02f0,0x0310 },
193 { 0x0300,0x02f0,0x0300 },
194 { 0x0310,0x0300,0x02f0 },
195 { 0x0340,0x0320,0x02f0 },
196 { 0x0390,0x0350,0x02f0 },
197 { 0x03e0,0x0390,0x0300 },
198 { 0x0420,0x03e0,0x0310 },
199 { 0x0460,0x0420,0x0330 },
200 { 0x0490,0x0450,0x0350 },
201 { 0x04a0,0x04a0,0x03c0 },
202 { 0x0460,0x0490,0x0410 },
203 { 0x0440,0x0460,0x0470 },
204 { 0x0440,0x0440,0x04a0 },
205 { 0x0520,0x0480,0x0460 },
206 { 0x0800,0x0630,0x0440 },
207 { 0x0840,0x0840,0x0450 },
208 { 0x0840,0x0840,0x04e0 },
209 };
210
211 const uint8_t ff_ac3_baptab[64]= {
212 0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
213 3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
214 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
215 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
216 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
217 14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
218 15, 15, 15, 15,
219 };
220
221 const uint8_t ff_sdecaytab[4]={
222 0x0f, 0x11, 0x13, 0x15,
223 };
224
225 const uint8_t ff_fdecaytab[4]={
226 0x3f, 0x53, 0x67, 0x7b,
227 };
228
229 const uint16_t ff_sgaintab[4]= {
230 0x540, 0x4d8, 0x478, 0x410,
231 };
232
233 const uint16_t ff_dbkneetab[4]= {
234 0x000, 0x700, 0x900, 0xb00,
235 };
236
237 const int16_t ff_floortab[8]= {
238 0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
239 };
240
241 const uint16_t ff_fgaintab[8]= {
242 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
243 };
244
245 const uint8_t ff_ac3_bndsz[50]={
246 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
247 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
248 3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
249 };