]> git.sesse.net Git - ffmpeg/blob - libavcodec/ac3tab.h
shape adaptive diamonds for EPZS
[ffmpeg] / libavcodec / ac3tab.h
1 /* tables taken directly from AC3 spec */
2
3 /* possible frequencies */
4 const UINT16 ac3_freqs[3] = { 48000, 44100, 32000 };
5
6 /* possible bitrates */
7 const UINT16 ac3_bitratetab[19] = {
8     32, 40, 48, 56, 64, 80, 96, 112, 128, 
9     160, 192, 224, 256, 320, 384, 448, 512, 576, 640 
10 };
11
12 /* AC3 MDCT window */
13
14 /* MDCT window */
15 const INT16 ac3_window[256] = {
16     4,    7,   12,   16,   21,   28,   34,   42,
17    51,   61,   72,   84,   97,  111,  127,  145,
18   164,  184,  207,  231,  257,  285,  315,  347,
19   382,  419,  458,  500,  544,  591,  641,  694,
20   750,  810,  872,  937, 1007, 1079, 1155, 1235,
21  1318, 1406, 1497, 1593, 1692, 1796, 1903, 2016,
22  2132, 2253, 2379, 2509, 2644, 2783, 2927, 3076,
23  3230, 3389, 3552, 3721, 3894, 4072, 4255, 4444,
24  4637, 4835, 5038, 5246, 5459, 5677, 5899, 6127,
25  6359, 6596, 6837, 7083, 7334, 7589, 7848, 8112,
26  8380, 8652, 8927, 9207, 9491, 9778,10069,10363,
27 10660,10960,11264,11570,11879,12190,12504,12820,
28 13138,13458,13780,14103,14427,14753,15079,15407,
29 15735,16063,16392,16720,17049,17377,17705,18032,
30 18358,18683,19007,19330,19651,19970,20287,20602,
31 20914,21225,21532,21837,22139,22438,22733,23025,
32 23314,23599,23880,24157,24430,24699,24964,25225,
33 25481,25732,25979,26221,26459,26691,26919,27142,
34 27359,27572,27780,27983,28180,28373,28560,28742,
35 28919,29091,29258,29420,29577,29729,29876,30018,
36 30155,30288,30415,30538,30657,30771,30880,30985,
37 31086,31182,31274,31363,31447,31528,31605,31678,
38 31747,31814,31877,31936,31993,32046,32097,32145,
39 32190,32232,32272,32310,32345,32378,32409,32438,
40 32465,32490,32513,32535,32556,32574,32592,32608,
41 32623,32636,32649,32661,32671,32681,32690,32698,
42 32705,32712,32718,32724,32729,32733,32737,32741,
43 32744,32747,32750,32752,32754,32756,32757,32759,
44 32760,32761,32762,32763,32764,32764,32765,32765,
45 32766,32766,32766,32766,32767,32767,32767,32767,
46 32767,32767,32767,32767,32767,32767,32767,32767,
47 32767,32767,32767,32767,32767,32767,32767,32767,  
48 };
49
50 static UINT8 masktab[253];
51
52 static const UINT8 latab[260]= {
53 0x0040,0x003f,0x003e,0x003d,0x003c,0x003b,0x003a,0x0039,0x0038,0x0037,
54 0x0036,0x0035,0x0034,0x0034,0x0033,0x0032,0x0031,0x0030,0x002f,0x002f,
55 0x002e,0x002d,0x002c,0x002c,0x002b,0x002a,0x0029,0x0029,0x0028,0x0027,
56 0x0026,0x0026,0x0025,0x0024,0x0024,0x0023,0x0023,0x0022,0x0021,0x0021,
57 0x0020,0x0020,0x001f,0x001e,0x001e,0x001d,0x001d,0x001c,0x001c,0x001b,
58 0x001b,0x001a,0x001a,0x0019,0x0019,0x0018,0x0018,0x0017,0x0017,0x0016,
59 0x0016,0x0015,0x0015,0x0015,0x0014,0x0014,0x0013,0x0013,0x0013,0x0012,
60 0x0012,0x0012,0x0011,0x0011,0x0011,0x0010,0x0010,0x0010,0x000f,0x000f,
61 0x000f,0x000e,0x000e,0x000e,0x000d,0x000d,0x000d,0x000d,0x000c,0x000c,
62 0x000c,0x000c,0x000b,0x000b,0x000b,0x000b,0x000a,0x000a,0x000a,0x000a,
63 0x000a,0x0009,0x0009,0x0009,0x0009,0x0009,0x0008,0x0008,0x0008,0x0008,
64 0x0008,0x0008,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0006,0x0006,
65 0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0005,0x0005,0x0005,0x0005,
66 0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,
67 0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0003,
68 0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,
69 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,
70 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,
71 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
72 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
73 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
74 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
75 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
76 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
77 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
78 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
79 };
80
81 static const UINT16 hth[50][3]= {
82 { 0x04d0,0x04f0,0x0580 },
83 { 0x04d0,0x04f0,0x0580 },
84 { 0x0440,0x0460,0x04b0 },
85 { 0x0400,0x0410,0x0450 },
86 { 0x03e0,0x03e0,0x0420 },
87 { 0x03c0,0x03d0,0x03f0 },
88 { 0x03b0,0x03c0,0x03e0 },
89 { 0x03b0,0x03b0,0x03d0 },
90 { 0x03a0,0x03b0,0x03c0 },
91 { 0x03a0,0x03a0,0x03b0 },
92 { 0x03a0,0x03a0,0x03b0 },
93 { 0x03a0,0x03a0,0x03b0 },
94 { 0x03a0,0x03a0,0x03a0 },
95 { 0x0390,0x03a0,0x03a0 },
96 { 0x0390,0x0390,0x03a0 },
97 { 0x0390,0x0390,0x03a0 },
98 { 0x0380,0x0390,0x03a0 },
99 { 0x0380,0x0380,0x03a0 },
100 { 0x0370,0x0380,0x03a0 },
101 { 0x0370,0x0380,0x03a0 },
102 { 0x0360,0x0370,0x0390 },
103 { 0x0360,0x0370,0x0390 },
104 { 0x0350,0x0360,0x0390 },
105 { 0x0350,0x0360,0x0390 },
106 { 0x0340,0x0350,0x0380 },
107 { 0x0340,0x0350,0x0380 },
108 { 0x0330,0x0340,0x0380 },
109 { 0x0320,0x0340,0x0370 },
110 { 0x0310,0x0320,0x0360 },
111 { 0x0300,0x0310,0x0350 },
112 { 0x02f0,0x0300,0x0340 },
113 { 0x02f0,0x02f0,0x0330 },
114 { 0x02f0,0x02f0,0x0320 },
115 { 0x02f0,0x02f0,0x0310 },
116 { 0x0300,0x02f0,0x0300 },
117 { 0x0310,0x0300,0x02f0 },
118 { 0x0340,0x0320,0x02f0 },
119 { 0x0390,0x0350,0x02f0 },
120 { 0x03e0,0x0390,0x0300 },
121 { 0x0420,0x03e0,0x0310 },
122 { 0x0460,0x0420,0x0330 },
123 { 0x0490,0x0450,0x0350 },
124 { 0x04a0,0x04a0,0x03c0 },
125 { 0x0460,0x0490,0x0410 },
126 { 0x0440,0x0460,0x0470 },
127 { 0x0440,0x0440,0x04a0 },
128 { 0x0520,0x0480,0x0460 },
129 { 0x0800,0x0630,0x0440 },
130 { 0x0840,0x0840,0x0450 },
131 { 0x0840,0x0840,0x04e0 },
132 };
133
134 static const UINT8 baptab[64]= {
135     0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 
136     3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 
137     7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 
138     9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 
139     12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 
140     14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 
141     15, 15, 15, 15,
142 };
143
144 const UINT8 sdecaytab[4]={ 
145     0x0f, 0x11, 0x13, 0x15,
146 };
147
148 const UINT8 fdecaytab[4]={ 
149     0x3f, 0x53, 0x67, 0x7b, 
150 };
151
152 const UINT16 sgaintab[4]= { 
153     0x540, 0x4d8, 0x478, 0x410,
154 };
155
156 const UINT16 dbkneetab[4]= { 
157     0x000, 0x700, 0x900, 0xb00,
158 };
159
160 const UINT16 floortab[8]= { 
161     0x2f0, 0x2b0, 0x270, 0x230, 0x1f0, 0x170, 0x0f0, 0xf800,
162 };
163
164 const UINT16 fgaintab[8]= {
165     0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
166 };
167
168 static const UINT8 bndsz[50]={
169     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
170     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 
171     3, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 24, 24, 24, 24, 24 
172 };
173
174 static UINT8 bndtab[51]; 
175
176 /* fft & mdct sin cos tables */
177 static INT16 costab[64];
178 static INT16 sintab[64];
179 static INT16 fft_rev[512];
180 static INT16 xcos1[128];
181 static INT16 xsin1[128];
182
183 static UINT16 crc_table[256];