Mercurial > mplayer.hg
annotate liba52/tables.h @ 26234:f0788169e503
Ignore if we fail to get disc key, fixes playback of one of my DVDs which
claims to be scrambled but actually is not, and always allows to
fallback to cached keys.
author | reimar |
---|---|
date | Fri, 21 Mar 2008 12:31:47 +0000 |
parents | 4bad7f00556e |
children |
rev | line source |
---|---|
3394 | 1 /* |
2 * tables.h | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
3394
diff
changeset
|
3 * Copyright (C) 2000-2002 Michel Lespinasse <walken@zoy.org> |
3394 | 4 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> |
5 * | |
6 * This file is part of a52dec, a free ATSC A-52 stream decoder. | |
7 * See http://liba52.sourceforge.net/ for updates. | |
8 * | |
9 * a52dec is free software; you can redistribute it and/or modify | |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * a52dec is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 */ | |
23 | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
3394
diff
changeset
|
24 static const int8_t exp_1[128] = { |
3394 | 25 -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2, |
26 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, | |
27 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
28 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |
29 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
30 25,25,25 | |
31 }; | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
3394
diff
changeset
|
32 static const int8_t exp_2[128] = { |
3394 | 33 -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, |
34 -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, | |
35 -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, | |
36 -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, | |
37 -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, | |
38 25,25,25 | |
39 }; | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
3394
diff
changeset
|
40 static const int8_t exp_3[128] = { |
3394 | 41 -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2, |
42 -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2, | |
43 -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2, | |
44 -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2, | |
45 -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2, | |
46 25,25,25 | |
47 }; | |
48 | |
49 #define Q0 ((-2 << 15) / 3.0) | |
50 #define Q1 (0) | |
51 #define Q2 ((2 << 15) / 3.0) | |
52 | |
53 static const sample_t q_1_0[32] = { | |
54 Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0, | |
55 Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1, | |
56 Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2, | |
57 0,0,0,0,0 | |
58 }; | |
59 | |
60 static const sample_t q_1_1[32] = { | |
61 Q0,Q0,Q0,Q1,Q1,Q1,Q2,Q2,Q2, | |
62 Q0,Q0,Q0,Q1,Q1,Q1,Q2,Q2,Q2, | |
63 Q0,Q0,Q0,Q1,Q1,Q1,Q2,Q2,Q2, | |
64 0,0,0,0,0 | |
65 }; | |
66 | |
67 static const sample_t q_1_2[32] = { | |
68 Q0,Q1,Q2,Q0,Q1,Q2,Q0,Q1,Q2, | |
69 Q0,Q1,Q2,Q0,Q1,Q2,Q0,Q1,Q2, | |
70 Q0,Q1,Q2,Q0,Q1,Q2,Q0,Q1,Q2, | |
71 0,0,0,0,0 | |
72 }; | |
73 | |
74 #undef Q0 | |
75 #undef Q1 | |
76 #undef Q2 | |
77 | |
78 #define Q0 ((-4 << 15) / 5.0) | |
79 #define Q1 ((-2 << 15) / 5.0) | |
80 #define Q2 (0) | |
81 #define Q3 ((2 << 15) / 5.0) | |
82 #define Q4 ((4 << 15) / 5.0) | |
83 | |
84 static const sample_t q_2_0[128] = { | |
85 Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0,Q0, | |
86 Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1,Q1, | |
87 Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2,Q2, | |
88 Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3,Q3, | |
89 Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4,Q4, | |
90 0,0,0 | |
91 }; | |
92 | |
93 static const sample_t q_2_1[128] = { | |
94 Q0,Q0,Q0,Q0,Q0,Q1,Q1,Q1,Q1,Q1,Q2,Q2,Q2,Q2,Q2,Q3,Q3,Q3,Q3,Q3,Q4,Q4,Q4,Q4,Q4, | |
95 Q0,Q0,Q0,Q0,Q0,Q1,Q1,Q1,Q1,Q1,Q2,Q2,Q2,Q2,Q2,Q3,Q3,Q3,Q3,Q3,Q4,Q4,Q4,Q4,Q4, | |
96 Q0,Q0,Q0,Q0,Q0,Q1,Q1,Q1,Q1,Q1,Q2,Q2,Q2,Q2,Q2,Q3,Q3,Q3,Q3,Q3,Q4,Q4,Q4,Q4,Q4, | |
97 Q0,Q0,Q0,Q0,Q0,Q1,Q1,Q1,Q1,Q1,Q2,Q2,Q2,Q2,Q2,Q3,Q3,Q3,Q3,Q3,Q4,Q4,Q4,Q4,Q4, | |
98 Q0,Q0,Q0,Q0,Q0,Q1,Q1,Q1,Q1,Q1,Q2,Q2,Q2,Q2,Q2,Q3,Q3,Q3,Q3,Q3,Q4,Q4,Q4,Q4,Q4, | |
99 0,0,0 | |
100 }; | |
101 | |
102 static const sample_t q_2_2[128] = { | |
103 Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4, | |
104 Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4, | |
105 Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4, | |
106 Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4, | |
107 Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4,Q0,Q1,Q2,Q3,Q4, | |
108 0,0,0 | |
109 }; | |
110 | |
111 #undef Q0 | |
112 #undef Q1 | |
113 #undef Q2 | |
114 #undef Q3 | |
115 #undef Q4 | |
116 | |
117 static const sample_t q_3[8] = { | |
118 (-6 << 15)/7.0, (-4 << 15)/7.0, (-2 << 15)/7.0, 0, | |
119 ( 2 << 15)/7.0, ( 4 << 15)/7.0, ( 6 << 15)/7.0, 0 | |
120 }; | |
121 | |
122 #define Q0 ((-10 << 15) / 11.0) | |
123 #define Q1 ((-8 << 15) / 11.0) | |
124 #define Q2 ((-6 << 15) / 11.0) | |
125 #define Q3 ((-4 << 15) / 11.0) | |
126 #define Q4 ((-2 << 15) / 11.0) | |
127 #define Q5 (0) | |
128 #define Q6 ((2 << 15) / 11.0) | |
129 #define Q7 ((4 << 15) / 11.0) | |
130 #define Q8 ((6 << 15) / 11.0) | |
131 #define Q9 ((8 << 15) / 11.0) | |
132 #define QA ((10 << 15) / 11.0) | |
133 | |
134 static const sample_t q_4_0[128] = { | |
135 Q0, Q0, Q0, Q0, Q0, Q0, Q0, Q0, Q0, Q0, Q0, | |
136 Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, | |
137 Q2, Q2, Q2, Q2, Q2, Q2, Q2, Q2, Q2, Q2, Q2, | |
138 Q3, Q3, Q3, Q3, Q3, Q3, Q3, Q3, Q3, Q3, Q3, | |
139 Q4, Q4, Q4, Q4, Q4, Q4, Q4, Q4, Q4, Q4, Q4, | |
140 Q5, Q5, Q5, Q5, Q5, Q5, Q5, Q5, Q5, Q5, Q5, | |
141 Q6, Q6, Q6, Q6, Q6, Q6, Q6, Q6, Q6, Q6, Q6, | |
142 Q7, Q7, Q7, Q7, Q7, Q7, Q7, Q7, Q7, Q7, Q7, | |
143 Q8, Q8, Q8, Q8, Q8, Q8, Q8, Q8, Q8, Q8, Q8, | |
144 Q9, Q9, Q9, Q9, Q9, Q9, Q9, Q9, Q9, Q9, Q9, | |
145 QA, QA, QA, QA, QA, QA, QA, QA, QA, QA, QA, | |
146 0, 0, 0, 0, 0, 0, 0 | |
147 }; | |
148 | |
149 static const sample_t q_4_1[128] = { | |
150 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
151 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
152 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
153 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
154 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
155 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
156 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
157 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
158 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
159 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
160 Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, QA, | |
161 0, 0, 0, 0, 0, 0, 0 | |
162 }; | |
163 | |
164 #undef Q0 | |
165 #undef Q1 | |
166 #undef Q2 | |
167 #undef Q3 | |
168 #undef Q4 | |
169 #undef Q5 | |
170 #undef Q6 | |
171 #undef Q7 | |
172 #undef Q8 | |
173 #undef Q9 | |
174 #undef QA | |
175 | |
176 static const sample_t q_5[16] = { | |
177 (-14 << 15)/15.0,(-12 << 15)/15.0,(-10 << 15)/15.0, | |
178 ( -8 << 15)/15.0,( -6 << 15)/15.0,( -4 << 15)/15.0, | |
179 ( -2 << 15)/15.0, 0 ,( 2 << 15)/15.0, | |
180 ( 4 << 15)/15.0,( 6 << 15)/15.0,( 8 << 15)/15.0, | |
181 ( 10 << 15)/15.0,( 12 << 15)/15.0,( 14 << 15)/15.0, | |
182 0 | |
183 }; | |
184 | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
3394
diff
changeset
|
185 static const sample_t scale_factor[25] = { |
3394 | 186 0.000030517578125, |
187 0.0000152587890625, | |
188 0.00000762939453125, | |
189 0.000003814697265625, | |
190 0.0000019073486328125, | |
191 0.00000095367431640625, | |
192 0.000000476837158203125, | |
193 0.0000002384185791015625, | |
194 0.00000011920928955078125, | |
195 0.000000059604644775390625, | |
196 0.0000000298023223876953125, | |
197 0.00000001490116119384765625, | |
198 0.000000007450580596923828125, | |
199 0.0000000037252902984619140625, | |
200 0.00000000186264514923095703125, | |
201 0.000000000931322574615478515625, | |
202 0.0000000004656612873077392578125, | |
203 0.00000000023283064365386962890625, | |
204 0.000000000116415321826934814453125, | |
205 0.0000000000582076609134674072265625, | |
206 0.00000000002910383045673370361328125, | |
207 0.000000000014551915228366851806640625, | |
208 0.0000000000072759576141834259033203125, | |
209 0.00000000000363797880709171295166015625, | |
210 0.000000000001818989403545856475830078125 | |
211 }; | |
212 | |
213 static const uint16_t dither_lut[256] = { | |
214 0x0000, 0xa011, 0xe033, 0x4022, 0x6077, 0xc066, 0x8044, 0x2055, | |
215 0xc0ee, 0x60ff, 0x20dd, 0x80cc, 0xa099, 0x0088, 0x40aa, 0xe0bb, | |
216 0x21cd, 0x81dc, 0xc1fe, 0x61ef, 0x41ba, 0xe1ab, 0xa189, 0x0198, | |
217 0xe123, 0x4132, 0x0110, 0xa101, 0x8154, 0x2145, 0x6167, 0xc176, | |
218 0x439a, 0xe38b, 0xa3a9, 0x03b8, 0x23ed, 0x83fc, 0xc3de, 0x63cf, | |
219 0x8374, 0x2365, 0x6347, 0xc356, 0xe303, 0x4312, 0x0330, 0xa321, | |
220 0x6257, 0xc246, 0x8264, 0x2275, 0x0220, 0xa231, 0xe213, 0x4202, | |
221 0xa2b9, 0x02a8, 0x428a, 0xe29b, 0xc2ce, 0x62df, 0x22fd, 0x82ec, | |
222 0x8734, 0x2725, 0x6707, 0xc716, 0xe743, 0x4752, 0x0770, 0xa761, | |
223 0x47da, 0xe7cb, 0xa7e9, 0x07f8, 0x27ad, 0x87bc, 0xc79e, 0x678f, | |
224 0xa6f9, 0x06e8, 0x46ca, 0xe6db, 0xc68e, 0x669f, 0x26bd, 0x86ac, | |
225 0x6617, 0xc606, 0x8624, 0x2635, 0x0660, 0xa671, 0xe653, 0x4642, | |
226 0xc4ae, 0x64bf, 0x249d, 0x848c, 0xa4d9, 0x04c8, 0x44ea, 0xe4fb, | |
227 0x0440, 0xa451, 0xe473, 0x4462, 0x6437, 0xc426, 0x8404, 0x2415, | |
228 0xe563, 0x4572, 0x0550, 0xa541, 0x8514, 0x2505, 0x6527, 0xc536, | |
229 0x258d, 0x859c, 0xc5be, 0x65af, 0x45fa, 0xe5eb, 0xa5c9, 0x05d8, | |
230 0xae79, 0x0e68, 0x4e4a, 0xee5b, 0xce0e, 0x6e1f, 0x2e3d, 0x8e2c, | |
231 0x6e97, 0xce86, 0x8ea4, 0x2eb5, 0x0ee0, 0xaef1, 0xeed3, 0x4ec2, | |
232 0x8fb4, 0x2fa5, 0x6f87, 0xcf96, 0xefc3, 0x4fd2, 0x0ff0, 0xafe1, | |
233 0x4f5a, 0xef4b, 0xaf69, 0x0f78, 0x2f2d, 0x8f3c, 0xcf1e, 0x6f0f, | |
234 0xede3, 0x4df2, 0x0dd0, 0xadc1, 0x8d94, 0x2d85, 0x6da7, 0xcdb6, | |
235 0x2d0d, 0x8d1c, 0xcd3e, 0x6d2f, 0x4d7a, 0xed6b, 0xad49, 0x0d58, | |
236 0xcc2e, 0x6c3f, 0x2c1d, 0x8c0c, 0xac59, 0x0c48, 0x4c6a, 0xec7b, | |
237 0x0cc0, 0xacd1, 0xecf3, 0x4ce2, 0x6cb7, 0xcca6, 0x8c84, 0x2c95, | |
238 0x294d, 0x895c, 0xc97e, 0x696f, 0x493a, 0xe92b, 0xa909, 0x0918, | |
239 0xe9a3, 0x49b2, 0x0990, 0xa981, 0x89d4, 0x29c5, 0x69e7, 0xc9f6, | |
240 0x0880, 0xa891, 0xe8b3, 0x48a2, 0x68f7, 0xc8e6, 0x88c4, 0x28d5, | |
241 0xc86e, 0x687f, 0x285d, 0x884c, 0xa819, 0x0808, 0x482a, 0xe83b, | |
242 0x6ad7, 0xcac6, 0x8ae4, 0x2af5, 0x0aa0, 0xaab1, 0xea93, 0x4a82, | |
243 0xaa39, 0x0a28, 0x4a0a, 0xea1b, 0xca4e, 0x6a5f, 0x2a7d, 0x8a6c, | |
244 0x4b1a, 0xeb0b, 0xab29, 0x0b38, 0x2b6d, 0x8b7c, 0xcb5e, 0x6b4f, | |
245 0x8bf4, 0x2be5, 0x6bc7, 0xcbd6, 0xeb83, 0x4b92, 0x0bb0, 0xaba1 | |
246 }; |