1 /*
2 * AC-3 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
24 * tables taken directly from the AC-3 spec.
25 */
26
28
31
32 /**
33 * Possible frame sizes.
34 * from ATSC A/52 Table 5.18 Frame Size Code Table.
35 */
37 { 64, 69, 96 },
38 { 64, 70, 96 },
39 { 80, 87, 120 },
40 { 80, 88, 120 },
41 { 96, 104, 144 },
42 { 96, 105, 144 },
43 { 112, 121, 168 },
44 { 112, 122, 168 },
45 { 128, 139, 192 },
46 { 128, 140, 192 },
47 { 160, 174, 240 },
48 { 160, 175, 240 },
49 { 192, 208, 288 },
50 { 192, 209, 288 },
51 { 224, 243, 336 },
52 { 224, 244, 336 },
53 { 256, 278, 384 },
54 { 256, 279, 384 },
55 { 320, 348, 480 },
56 { 320, 349, 480 },
57 { 384, 417, 576 },
58 { 384, 418, 576 },
59 { 448, 487, 672 },
60 { 448, 488, 672 },
61 { 512, 557, 768 },
62 { 512, 558, 768 },
63 { 640, 696, 960 },
64 { 640, 697, 960 },
65 { 768, 835, 1152 },
66 { 768, 836, 1152 },
67 { 896, 975, 1344 },
68 { 896, 976, 1344 },
69 { 1024, 1114, 1536 },
70 { 1024, 1115, 1536 },
71 { 1152, 1253, 1728 },
72 { 1152, 1254, 1728 },
73 { 1280, 1393, 1920 },
74 { 1280, 1394, 1920 },
75 };
76
77 /**
78 * Map audio coding mode (acmod) to number of full-bandwidth channels.
79 * from ATSC A/52 Table 5.8 Audio Coding Mode
80 */
82 2, 1, 2, 3, 3, 4, 4, 5
83 };
84
85 /**
86 * Table to remap channels from AC-3 order to SMPTE order.
87 * [channel_mode][lfe][ch]
88 */
91 { { 0, 1, 2, 3, }, { 0, 1, 4, 2, 3, } },
92 { { 0, 2, 1, 3, 4, }, { 0, 2, 1, 5, 3, 4 } },
93 };
94
95 /* possible frequencies */
97
98 /* possible bitrates */
100 32, 40, 48, 56, 64, 80, 96, 112, 128,
101 160, 192, 224, 256, 320, 384, 448, 512, 576, 640
102 };
103
104 /**
105 * Table of bin locations for rematrixing bands
106 * reference: Section 7.5.2 Rematrixing : Frequency Band Definitions
107 */
109
110 /**
111 * Table E2.16 Default Coupling Banding Structure
112 */
114 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1
115 };
116
118 0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,
119 0x36,0x35,0x34,0x34,0x33,0x32,0x31,0x30,0x2f,0x2f,
120 0x2e,0x2d,0x2c,0x2c,0x2b,0x2a,0x29,0x29,0x28,0x27,
121 0x26,0x26,0x25,0x24,0x24,0x23,0x23,0x22,0x21,0x21,
122 0x20,0x20,0x1f,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1b,
123 0x1b,0x1a,0x1a,0x19,0x19,0x18,0x18,0x17,0x17,0x16,
124 0x16,0x15,0x15,0x15,0x14,0x14,0x13,0x13,0x13,0x12,
125 0x12,0x12,0x11,0x11,0x11,0x10,0x10,0x10,0x0f,0x0f,
126 0x0f,0x0e,0x0e,0x0e,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,
127 0x0c,0x0c,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
128 0x0a,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x08,0x08,
129 0x08,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,
130 0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,
131 0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,
132 0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,
133 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,
134 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
135 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
136 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
137 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
138 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
139 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
140 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
141 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
142 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
143 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
144 };
145
147 { 0x04d0,0x04f0,0x0580 },
148 { 0x04d0,0x04f0,0x0580 },
149 { 0x0440,0x0460,0x04b0 },
150 { 0x0400,0x0410,0x0450 },
151 { 0x03e0,0x03e0,0x0420 },
152 { 0x03c0,0x03d0,0x03f0 },
153 { 0x03b0,0x03c0,0x03e0 },
154 { 0x03b0,0x03b0,0x03d0 },
155 { 0x03a0,0x03b0,0x03c0 },
156 { 0x03a0,0x03a0,0x03b0 },
157 { 0x03a0,0x03a0,0x03b0 },
158 { 0x03a0,0x03a0,0x03b0 },
159 { 0x03a0,0x03a0,0x03a0 },
160 { 0x0390,0x03a0,0x03a0 },
161 { 0x0390,0x0390,0x03a0 },
162 { 0x0390,0x0390,0x03a0 },
163 { 0x0380,0x0390,0x03a0 },
164 { 0x0380,0x0380,0x03a0 },
165 { 0x0370,0x0380,0x03a0 },
166 { 0x0370,0x0380,0x03a0 },
167 { 0x0360,0x0370,0x0390 },
168 { 0x0360,0x0370,0x0390 },
169 { 0x0350,0x0360,0x0390 },
170 { 0x0350,0x0360,0x0390 },
171 { 0x0340,0x0350,0x0380 },
172 { 0x0340,0x0350,0x0380 },
173 { 0x0330,0x0340,0x0380 },
174 { 0x0320,0x0340,0x0370 },
175 { 0x0310,0x0320,0x0360 },
176 { 0x0300,0x0310,0x0350 },
177 { 0x02f0,0x0300,0x0340 },
178 { 0x02f0,0x02f0,0x0330 },
179 { 0x02f0,0x02f0,0x0320 },
180 { 0x02f0,0x02f0,0x0310 },
181 { 0x0300,0x02f0,0x0300 },
182 { 0x0310,0x0300,0x02f0 },
183 { 0x0340,0x0320,0x02f0 },
184 { 0x0390,0x0350,0x02f0 },
185 { 0x03e0,0x0390,0x0300 },
186 { 0x0420,0x03e0,0x0310 },
187 { 0x0460,0x0420,0x0330 },
188 { 0x0490,0x0450,0x0350 },
189 { 0x04a0,0x04a0,0x03c0 },
190 { 0x0460,0x0490,0x0410 },
191 { 0x0440,0x0460,0x0470 },
192 { 0x0440,0x0440,0x04a0 },
193 { 0x0520,0x0480,0x0460 },
194 { 0x0800,0x0630,0x0440 },
195 { 0x0840,0x0840,0x0450 },
196 { 0x0840,0x0840,0x04e0 },
197 };
198
200 0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
201 3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
202 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
203 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
204 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
205 14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
206 15, 15, 15, 15,
207 };
208
210 0x0f, 0x11, 0x13, 0x15,
211 };
212
214 0x3f, 0x53, 0x67, 0x7b,
215 };
216
218 0x540, 0x4d8, 0x478, 0x410,
219 };
220
222 0x000, 0x700, 0x900, 0xb00,
223 };
224
226 0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
227 };
228
230 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
231 };
232
250 };