annotate ac3tab.c @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents fdafbcef52f5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
1 /*
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 6671
diff changeset
2 * AC-3 tables
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
3 * copyright (c) 2001 Fabrice Bellard
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
4 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
5 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
6 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
9 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
11 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
15 * Lesser General Public License for more details.
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
16 *
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
20 */
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3668
diff changeset
21
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
22 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 10191
diff changeset
23 * @file
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 6671
diff changeset
24 * tables taken directly from the AC-3 spec.
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
25 */
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
26
9512
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
27 #include "avcodec.h"
4879
60603c9c89d1 move ac3 tables from a .h to a .c
aurel
parents: 4679
diff changeset
28 #include "ac3tab.h"
60603c9c89d1 move ac3 tables from a .h to a .c
aurel
parents: 4679
diff changeset
29
4645
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
30 /**
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
31 * Possible frame sizes.
4679
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
32 * from ATSC A/52 Table 5.18 Frame Size Code Table.
4645
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
33 */
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
34 const uint16_t ff_ac3_frame_size_tab[38][3] = {
4679
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
35 { 64, 69, 96 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
36 { 64, 70, 96 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
37 { 80, 87, 120 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
38 { 80, 88, 120 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
39 { 96, 104, 144 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
40 { 96, 105, 144 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
41 { 112, 121, 168 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
42 { 112, 122, 168 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
43 { 128, 139, 192 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
44 { 128, 140, 192 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
45 { 160, 174, 240 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
46 { 160, 175, 240 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
47 { 192, 208, 288 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
48 { 192, 209, 288 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
49 { 224, 243, 336 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
50 { 224, 244, 336 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
51 { 256, 278, 384 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
52 { 256, 279, 384 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
53 { 320, 348, 480 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
54 { 320, 349, 480 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
55 { 384, 417, 576 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
56 { 384, 418, 576 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
57 { 448, 487, 672 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
58 { 448, 488, 672 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
59 { 512, 557, 768 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
60 { 512, 558, 768 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
61 { 640, 696, 960 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
62 { 640, 697, 960 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
63 { 768, 835, 1152 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
64 { 768, 836, 1152 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
65 { 896, 975, 1344 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
66 { 896, 976, 1344 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
67 { 1024, 1114, 1536 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
68 { 1024, 1115, 1536 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
69 { 1152, 1253, 1728 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
70 { 1152, 1254, 1728 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
71 { 1280, 1393, 1920 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
72 { 1280, 1394, 1920 },
acdd4b24f5c5 hardcode ff_ac3_frame_sizes table
jbr
parents: 4645
diff changeset
73 };
4645
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
74
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
75 /**
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
76 * Map audio coding mode (acmod) to number of full-bandwidth channels.
4645
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
77 * from ATSC A/52 Table 5.8 Audio Coding Mode
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
78 */
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
79 const uint8_t ff_ac3_channels_tab[8] = {
4645
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
80 2, 1, 2, 3, 3, 4, 4, 5
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
81 };
056127e5df89 remove redundancy in AC-3 parser by using common tables from ac3tab.h
jbr
parents: 4643
diff changeset
82
9512
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
83 /**
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11644
diff changeset
84 * Map audio coding mode (acmod) to channel layout mask.
9512
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
85 */
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
86 const uint16_t ff_ac3_channel_layout_tab[8] = {
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
87 CH_LAYOUT_STEREO,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
88 CH_LAYOUT_MONO,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
89 CH_LAYOUT_STEREO,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
90 CH_LAYOUT_SURROUND,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
91 CH_LAYOUT_2_1,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
92 CH_LAYOUT_4POINT0,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
93 CH_LAYOUT_2_2,
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
94 CH_LAYOUT_5POINT0
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
95 };
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9454
diff changeset
96
9454
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
97 #define COMMON_CHANNEL_MAP \
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
98 { { 0, 1, }, { 0, 1, 2, } },\
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
99 { { 0, }, { 0, 1, } },\
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
100 { { 0, 1, }, { 0, 1, 2, } },\
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
101 { { 0, 2, 1, }, { 0, 2, 1, 3, } },\
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
102 { { 0, 1, 2, }, { 0, 1, 3, 2, } },\
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
103 { { 0, 2, 1, 3, }, { 0, 2, 1, 4, 3, } },
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
104
9452
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
105 /**
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
106 * Table to remap channels from SMPTE order to AC-3 order.
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
107 * [channel_mode][lfe][ch]
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
108 */
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
109 const uint8_t ff_ac3_enc_channel_map[8][2][6] = {
9454
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
110 COMMON_CHANNEL_MAP
10191
54b6170a608b Update AC-3 channel map. 2F/2R layout only has 4 channels. This correction
jbr
parents: 9512
diff changeset
111 { { 0, 1, 2, 3, }, { 0, 1, 3, 4, 2, } },
9452
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
112 { { 0, 2, 1, 3, 4, }, { 0, 2, 1, 4, 5, 3 } },
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
113 };
42803399ba8a ac3enc: reorder input channels to AC-3 channel order
jbr
parents: 8718
diff changeset
114
9454
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
115 /**
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
116 * Table to remap channels from from AC-3 order to SMPTE order.
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
117 * [channel_mode][lfe][ch]
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
118 */
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
119 const uint8_t ff_ac3_dec_channel_map[8][2][6] = {
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
120 COMMON_CHANNEL_MAP
10191
54b6170a608b Update AC-3 channel map. 2F/2R layout only has 4 channels. This correction
jbr
parents: 9512
diff changeset
121 { { 0, 1, 2, 3, }, { 0, 1, 4, 2, 3, } },
9454
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
122 { { 0, 2, 1, 3, 4, }, { 0, 2, 1, 5, 3, 4 } },
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
123 };
7db61b0d21f9 ac3dec: reorder output channels to SMPTE channel order
jbr
parents: 9452
diff changeset
124
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents: 0
diff changeset
125 /* possible frequencies */
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
126 const uint16_t ff_ac3_sample_rate_tab[3] = { 48000, 44100, 32000 };
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents: 0
diff changeset
127
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 /* possible bitrates */
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
129 const uint16_t ff_ac3_bitrate_tab[19] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
130 32, 40, 48, 56, 64, 80, 96, 112, 128,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
131 160, 192, 224, 256, 320, 384, 448, 512, 576, 640
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
132 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
133
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 6671
diff changeset
134 /* AC-3 MDCT window */
3280
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
135
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
136 /* MDCT window */
4643
1e175640dad3 Remove common code from AC-3 encoder and utilize ac3.c.
jbr
parents: 3947
diff changeset
137 const int16_t ff_ac3_window[256] = {
3280
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
138 4, 7, 12, 16, 21, 28, 34, 42,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
139 51, 61, 72, 84, 97, 111, 127, 145,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
140 164, 184, 207, 231, 257, 285, 315, 347,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
141 382, 419, 458, 500, 544, 591, 641, 694,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
142 750, 810, 872, 937, 1007, 1079, 1155, 1235,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
143 1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
144 2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
145 3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
146 4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
147 6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
148 8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
149 10660,10960,11264,11570,11879,12190,12504,12820,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
150 13138,13458,13780,14103,14427,14753,15079,15407,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
151 15735,16063,16392,16720,17049,17377,17705,18032,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
152 18358,18683,19007,19330,19651,19970,20287,20602,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
153 20914,21225,21532,21837,22139,22438,22733,23025,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
154 23314,23599,23880,24157,24430,24699,24964,25225,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
155 25481,25732,25979,26221,26459,26691,26919,27142,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
156 27359,27572,27780,27983,28180,28373,28560,28742,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
157 28919,29091,29258,29420,29577,29729,29876,30018,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
158 30155,30288,30415,30538,30657,30771,30880,30985,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
159 31086,31182,31274,31363,31447,31528,31605,31678,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
160 31747,31814,31877,31936,31993,32046,32097,32145,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
161 32190,32232,32272,32310,32345,32378,32409,32438,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
162 32465,32490,32513,32535,32556,32574,32592,32608,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
163 32623,32636,32649,32661,32671,32681,32690,32698,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
164 32705,32712,32718,32724,32729,32733,32737,32741,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
165 32744,32747,32750,32752,32754,32756,32757,32759,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
166 32760,32761,32762,32763,32764,32764,32765,32765,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
167 32766,32766,32766,32766,32767,32767,32767,32767,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
168 32767,32767,32767,32767,32767,32767,32767,32767,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
169 32767,32767,32767,32767,32767,32767,32767,32767,
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
170 };
894ef0dba687 Revert bad ac3enc commit, the commited code was bigger and slower.
banan
parents: 3269
diff changeset
171
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
172 const uint8_t ff_ac3_log_add_tab[260]= {
5671
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
173 0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
174 0x36,0x35,0x34,0x34,0x33,0x32,0x31,0x30,0x2f,0x2f,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
175 0x2e,0x2d,0x2c,0x2c,0x2b,0x2a,0x29,0x29,0x28,0x27,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
176 0x26,0x26,0x25,0x24,0x24,0x23,0x23,0x22,0x21,0x21,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
177 0x20,0x20,0x1f,0x1e,0x1e,0x1d,0x1d,0x1c,0x1c,0x1b,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
178 0x1b,0x1a,0x1a,0x19,0x19,0x18,0x18,0x17,0x17,0x16,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
179 0x16,0x15,0x15,0x15,0x14,0x14,0x13,0x13,0x13,0x12,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
180 0x12,0x12,0x11,0x11,0x11,0x10,0x10,0x10,0x0f,0x0f,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
181 0x0f,0x0e,0x0e,0x0e,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
182 0x0c,0x0c,0x0b,0x0b,0x0b,0x0b,0x0a,0x0a,0x0a,0x0a,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
183 0x0a,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x08,0x08,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
184 0x08,0x08,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x06,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
185 0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
186 0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
187 0x04,0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
188 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
189 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
190 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
191 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
192 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
193 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
194 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
195 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
196 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
197 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
7dfd69f9af60 cosmetic
michael
parents: 4879
diff changeset
198 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
199 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
200
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
201 const uint16_t ff_ac3_hearing_threshold_tab[50][3]= {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
202 { 0x04d0,0x04f0,0x0580 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
203 { 0x04d0,0x04f0,0x0580 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
204 { 0x0440,0x0460,0x04b0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
205 { 0x0400,0x0410,0x0450 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
206 { 0x03e0,0x03e0,0x0420 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
207 { 0x03c0,0x03d0,0x03f0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
208 { 0x03b0,0x03c0,0x03e0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
209 { 0x03b0,0x03b0,0x03d0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
210 { 0x03a0,0x03b0,0x03c0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
211 { 0x03a0,0x03a0,0x03b0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
212 { 0x03a0,0x03a0,0x03b0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
213 { 0x03a0,0x03a0,0x03b0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
214 { 0x03a0,0x03a0,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
215 { 0x0390,0x03a0,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
216 { 0x0390,0x0390,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
217 { 0x0390,0x0390,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
218 { 0x0380,0x0390,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
219 { 0x0380,0x0380,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
220 { 0x0370,0x0380,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
221 { 0x0370,0x0380,0x03a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
222 { 0x0360,0x0370,0x0390 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
223 { 0x0360,0x0370,0x0390 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
224 { 0x0350,0x0360,0x0390 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
225 { 0x0350,0x0360,0x0390 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
226 { 0x0340,0x0350,0x0380 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
227 { 0x0340,0x0350,0x0380 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
228 { 0x0330,0x0340,0x0380 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
229 { 0x0320,0x0340,0x0370 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
230 { 0x0310,0x0320,0x0360 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
231 { 0x0300,0x0310,0x0350 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
232 { 0x02f0,0x0300,0x0340 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
233 { 0x02f0,0x02f0,0x0330 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
234 { 0x02f0,0x02f0,0x0320 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
235 { 0x02f0,0x02f0,0x0310 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
236 { 0x0300,0x02f0,0x0300 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
237 { 0x0310,0x0300,0x02f0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
238 { 0x0340,0x0320,0x02f0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
239 { 0x0390,0x0350,0x02f0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
240 { 0x03e0,0x0390,0x0300 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
241 { 0x0420,0x03e0,0x0310 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
242 { 0x0460,0x0420,0x0330 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
243 { 0x0490,0x0450,0x0350 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
244 { 0x04a0,0x04a0,0x03c0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
245 { 0x0460,0x0490,0x0410 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
246 { 0x0440,0x0460,0x0470 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
247 { 0x0440,0x0440,0x04a0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
248 { 0x0520,0x0480,0x0460 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
249 { 0x0800,0x0630,0x0440 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
250 { 0x0840,0x0840,0x0450 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
251 { 0x0840,0x0840,0x04e0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
252 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
253
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
254 const uint8_t ff_ac3_bap_tab[64]= {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
255 0, 1, 1, 1, 1, 1, 2, 2, 3, 3,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
256 3, 4, 4, 5, 5, 6, 6, 6, 6, 7,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
257 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
258 9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
259 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
260 14, 14, 14, 14, 14, 15, 15, 15, 15, 15,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
261 15, 15, 15, 15,
986e461dc072 Initial revision
glantau
parents:
diff changeset
262 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
263
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
264 const uint8_t ff_ac3_slow_decay_tab[4]={
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
265 0x0f, 0x11, 0x13, 0x15,
986e461dc072 Initial revision
glantau
parents:
diff changeset
266 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
267
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
268 const uint8_t ff_ac3_fast_decay_tab[4]={
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
269 0x3f, 0x53, 0x67, 0x7b,
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
270 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
271
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
272 const uint16_t ff_ac3_slow_gain_tab[4]= {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
273 0x540, 0x4d8, 0x478, 0x410,
986e461dc072 Initial revision
glantau
parents:
diff changeset
274 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
275
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
276 const uint16_t ff_ac3_db_per_bit_tab[4]= {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
277 0x000, 0x700, 0x900, 0xb00,
986e461dc072 Initial revision
glantau
parents:
diff changeset
278 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
279
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
280 const int16_t ff_ac3_floor_tab[8]= {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
281 0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
986e461dc072 Initial revision
glantau
parents:
diff changeset
282 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
283
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
284 const uint16_t ff_ac3_fast_gain_tab[8]= {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
285 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
986e461dc072 Initial revision
glantau
parents:
diff changeset
286 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
287
6002
29635f7c3d9c cosmetics: rename ac3 tables
jbr
parents: 5671
diff changeset
288 const uint8_t ff_ac3_critical_band_size_tab[50]={
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
289 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
290 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2097
diff changeset
291 3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
292 };
6671
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
293 /**
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
294 * Default channel map for a dependent substream defined by acmod
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
295 */
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
296 const uint16_t ff_eac3_default_chmap[8] = {
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
297 AC3_CHMAP_L | AC3_CHMAP_R, // FIXME Ch1+Ch2
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
298 AC3_CHMAP_C,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
299 AC3_CHMAP_L | AC3_CHMAP_R,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
300 AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
301 AC3_CHMAP_L | AC3_CHMAP_R | AC3_CHMAP_C_SUR,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
302 AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R | AC3_CHMAP_C_SUR,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
303 AC3_CHMAP_L | AC3_CHMAP_R | AC3_CHMAP_L_SUR | AC3_CHMAP_R_SUR,
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
304 AC3_CHMAP_L | AC3_CHMAP_C | AC3_CHMAP_R | AC3_CHMAP_L_SUR | AC3_CHMAP_R_SUR
2d0b86dfe5bb add a ff_ac3_parse_header_full() which calls ff_ac3_parse_header()
bwolowiec
parents: 6002
diff changeset
305 };