Statistics
| Branch: | Revision:

ffmpeg / libavcodec / ac3tab.c @ a7c6e117

History | View | Annotate | Download (8.91 KB)

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 libavcodec/ac3tab.c
24
 * tables taken directly from the AC-3 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_size_tab[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_tab[8] = {
79
    2, 1, 2, 3, 3, 4, 4, 5
80
};
81

    
82
/**
83
 * Table to remap channels from SMPTE order to AC-3 order.
84
 * [channel_mode][lfe][ch]
85
 */
86
const uint8_t ff_ac3_enc_channel_map[8][2][6] = {
87
    { { 0, 1,          }, { 0, 1, 2,         } },
88
    { { 0,             }, { 0, 1,            } },
89
    { { 0, 1,          }, { 0, 1, 2,         } },
90
    { { 0, 2, 1,       }, { 0, 2, 1, 3,      } },
91
    { { 0, 1, 2,       }, { 0, 1, 3, 2,      } },
92
    { { 0, 2, 1, 3,    }, { 0, 2, 1, 4, 3,   } },
93
    { { 0, 1, 2, 3, 4, }, { 0, 1, 3, 4, 2,   } },
94
    { { 0, 2, 1, 3, 4, }, { 0, 2, 1, 4, 5, 3 } },
95
};
96

    
97
/* possible frequencies */
98
const uint16_t ff_ac3_sample_rate_tab[3] = { 48000, 44100, 32000 };
99

    
100
/* possible bitrates */
101
const uint16_t ff_ac3_bitrate_tab[19] = {
102
    32, 40, 48, 56, 64, 80, 96, 112, 128,
103
    160, 192, 224, 256, 320, 384, 448, 512, 576, 640
104
};
105

    
106
/* AC-3 MDCT window */
107

    
108
/* MDCT window */
109
const int16_t ff_ac3_window[256] = {
110
    4,    7,   12,   16,   21,   28,   34,   42,
111
   51,   61,   72,   84,   97,  111,  127,  145,
112
  164,  184,  207,  231,  257,  285,  315,  347,
113
  382,  419,  458,  500,  544,  591,  641,  694,
114
  750,  810,  872,  937, 1007, 1079, 1155, 1235,
115
 1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
116
 2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
117
 3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
118
 4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
119
 6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
120
 8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
121
10660,10960,11264,11570,11879,12190,12504,12820,
122
13138,13458,13780,14103,14427,14753,15079,15407,
123
15735,16063,16392,16720,17049,17377,17705,18032,
124
18358,18683,19007,19330,19651,19970,20287,20602,
125
20914,21225,21532,21837,22139,22438,22733,23025,
126
23314,23599,23880,24157,24430,24699,24964,25225,
127
25481,25732,25979,26221,26459,26691,26919,27142,
128
27359,27572,27780,27983,28180,28373,28560,28742,
129
28919,29091,29258,29420,29577,29729,29876,30018,
130
30155,30288,30415,30538,30657,30771,30880,30985,
131
31086,31182,31274,31363,31447,31528,31605,31678,
132
31747,31814,31877,31936,31993,32046,32097,32145,
133
32190,32232,32272,32310,32345,32378,32409,32438,
134
32465,32490,32513,32535,32556,32574,32592,32608,
135
32623,32636,32649,32661,32671,32681,32690,32698,
136
32705,32712,32718,32724,32729,32733,32737,32741,
137
32744,32747,32750,32752,32754,32756,32757,32759,
138
32760,32761,32762,32763,32764,32764,32765,32765,
139
32766,32766,32766,32766,32767,32767,32767,32767,
140
32767,32767,32767,32767,32767,32767,32767,32767,
141
32767,32767,32767,32767,32767,32767,32767,32767,
142
};
143

    
144
const uint8_t ff_ac3_log_add_tab[260]= {
145
0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,
146
0x36,0x35,0x34,0x34,0x33,0x32,0x31,0x30,0x2f,0x2f,
147
0x2e,0x2d,0x2c,0x2c,0x2b,0x2a,0x29,0x29,0x28,0x27,
148
0x26,0x26,0x25,0x24,0x24,0x23,0x23,0x22,0x21,0x21,
149
0x20,0x20,0x1f,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1b,
150
0x1b,0x1a,0x1a,0x19,0x19,0x18,0x18,0x17,0x17,0x16,
151
0x16,0x15,0x15,0x15,0x14,0x14,0x13,0x13,0x13,0x12,
152
0x12,0x12,0x11,0x11,0x11,0x10,0x10,0x10,0x0f,0x0f,
153
0x0f,0x0e,0x0e,0x0e,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,
154
0x0c,0x0c,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
155
0x0a,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x08,0x08,
156
0x08,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,
157
0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,
158
0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,
159
0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,
160
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,
161
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
162
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
163
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
164
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
165
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
166
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
167
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
168
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
169
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
170
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
171
};
172

    
173
const uint16_t ff_ac3_hearing_threshold_tab[50][3]= {
174
{ 0x04d0,0x04f0,0x0580 },
175
{ 0x04d0,0x04f0,0x0580 },
176
{ 0x0440,0x0460,0x04b0 },
177
{ 0x0400,0x0410,0x0450 },
178
{ 0x03e0,0x03e0,0x0420 },
179
{ 0x03c0,0x03d0,0x03f0 },
180
{ 0x03b0,0x03c0,0x03e0 },
181
{ 0x03b0,0x03b0,0x03d0 },
182
{ 0x03a0,0x03b0,0x03c0 },
183
{ 0x03a0,0x03a0,0x03b0 },
184
{ 0x03a0,0x03a0,0x03b0 },
185
{ 0x03a0,0x03a0,0x03b0 },
186
{ 0x03a0,0x03a0,0x03a0 },
187
{ 0x0390,0x03a0,0x03a0 },
188
{ 0x0390,0x0390,0x03a0 },
189
{ 0x0390,0x0390,0x03a0 },
190
{ 0x0380,0x0390,0x03a0 },
191
{ 0x0380,0x0380,0x03a0 },
192
{ 0x0370,0x0380,0x03a0 },
193
{ 0x0370,0x0380,0x03a0 },
194
{ 0x0360,0x0370,0x0390 },
195
{ 0x0360,0x0370,0x0390 },
196
{ 0x0350,0x0360,0x0390 },
197
{ 0x0350,0x0360,0x0390 },
198
{ 0x0340,0x0350,0x0380 },
199
{ 0x0340,0x0350,0x0380 },
200
{ 0x0330,0x0340,0x0380 },
201
{ 0x0320,0x0340,0x0370 },
202
{ 0x0310,0x0320,0x0360 },
203
{ 0x0300,0x0310,0x0350 },
204
{ 0x02f0,0x0300,0x0340 },
205
{ 0x02f0,0x02f0,0x0330 },
206
{ 0x02f0,0x02f0,0x0320 },
207
{ 0x02f0,0x02f0,0x0310 },
208
{ 0x0300,0x02f0,0x0300 },
209
{ 0x0310,0x0300,0x02f0 },
210
{ 0x0340,0x0320,0x02f0 },
211
{ 0x0390,0x0350,0x02f0 },
212
{ 0x03e0,0x0390,0x0300 },
213
{ 0x0420,0x03e0,0x0310 },
214
{ 0x0460,0x0420,0x0330 },
215
{ 0x0490,0x0450,0x0350 },
216
{ 0x04a0,0x04a0,0x03c0 },
217
{ 0x0460,0x0490,0x0410 },
218
{ 0x0440,0x0460,0x0470 },
219
{ 0x0440,0x0440,0x04a0 },
220
{ 0x0520,0x0480,0x0460 },
221
{ 0x0800,0x0630,0x0440 },
222
{ 0x0840,0x0840,0x0450 },
223
{ 0x0840,0x0840,0x04e0 },
224
};
225

    
226
const uint8_t ff_ac3_bap_tab[64]= {
227
    0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
228
    3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
229
    7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
230
    9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
231
    12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
232
    14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
233
    15, 15, 15, 15,
234
};
235

    
236
const uint8_t ff_ac3_slow_decay_tab[4]={
237
    0x0f, 0x11, 0x13, 0x15,
238
};
239

    
240
const uint8_t ff_ac3_fast_decay_tab[4]={
241
    0x3f, 0x53, 0x67, 0x7b,
242
};
243

    
244
const uint16_t ff_ac3_slow_gain_tab[4]= {
245
    0x540, 0x4d8, 0x478, 0x410,
246
};
247

    
248
const uint16_t ff_ac3_db_per_bit_tab[4]= {
249
    0x000, 0x700, 0x900, 0xb00,
250
};
251

    
252
const int16_t ff_ac3_floor_tab[8]= {
253
    0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
254
};
255

    
256
const uint16_t ff_ac3_fast_gain_tab[8]= {
257
    0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
258
};
259

    
260
const uint8_t ff_ac3_critical_band_size_tab[50]={
261
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
262
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
263
    3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
264
};
265
/**
266
 * Default channel map for a dependent substream defined by acmod
267
 */
268
const uint16_t ff_eac3_default_chmap[8] = {
269
    AC3_CHMAP_L |               AC3_CHMAP_R, // FIXME Ch1+Ch2
270
                  AC3_CHMAP_C,
271
    AC3_CHMAP_L |               AC3_CHMAP_R,
272
    AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R,
273
    AC3_CHMAP_L |               AC3_CHMAP_R |                   AC3_CHMAP_C_SUR,
274
    AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R |                   AC3_CHMAP_C_SUR,
275
    AC3_CHMAP_L |               AC3_CHMAP_R | AC3_CHMAP_L_SUR |                  AC3_CHMAP_R_SUR,
276
    AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R | AC3_CHMAP_L_SUR |                  AC3_CHMAP_R_SUR
277
};