Rev 1905 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1905 | Rev 3960 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* |
1 | /* |
2 | huffman.h: huffman tables ... recalcualted to work with optimzed decoder scheme (MH) |
2 | huffman.h: huffman tables ... recalcualted to work with optimized decoder scheme (MH) |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 |
4 | copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 |
5 | see COPYING and AUTHORS files in distribution or http://mpg123.org |
5 | see COPYING and AUTHORS files in distribution or http://mpg123.org |
Line 14... | Line 14... | ||
14 | #define _MPG123_HUFFMAN_H_ |
14 | #define _MPG123_HUFFMAN_H_ |
Line 15... | Line 15... | ||
15 | 15 | ||
16 | struct newhuff |
16 | struct newhuff |
17 | { |
17 | { |
18 | unsigned int linbits; |
18 | unsigned int linbits; |
19 | short *table; |
19 | const short *table; |
Line 20... | Line 20... | ||
20 | }; |
20 | }; |
21 | 21 | ||
22 | static short tab0[] = |
22 | static const short tab0[] = |
23 | { |
23 | { |
Line 24... | Line 24... | ||
24 | 0 |
24 | 0 |
25 | }; |
25 | }; |
26 | 26 | ||
27 | static short tab1[] = |
27 | static const short tab1[] = |
Line 28... | Line 28... | ||
28 | { |
28 | { |
29 | -5, -3, -1, 17, 1, 16, 0 |
29 | -5, -3, -1, 17, 1, 16, 0 |
30 | }; |
30 | }; |
31 | 31 | ||
32 | static short tab2[] = |
32 | static const short tab2[] = |
Line 33... | Line 33... | ||
33 | { |
33 | { |
34 | -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, |
34 | -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, |
35 | 16, 0 |
35 | 16, 0 |
36 | }; |
36 | }; |
37 | 37 | ||
Line 38... | Line 38... | ||
38 | static short tab3[] = |
38 | static const short tab3[] = |
39 | { |
39 | { |
40 | -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, |
40 | -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, |
41 | 1, 0 |
41 | 1, 0 |
42 | }; |
42 | }; |
43 | 43 | ||
Line 44... | Line 44... | ||
44 | static short tab5[] = |
44 | static const short tab5[] = |
45 | { |
45 | { |
46 | -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, |
46 | -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, |
47 | 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, |
47 | 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, |
48 | 0 |
48 | 0 |
49 | }; |
49 | }; |
Line 50... | Line 50... | ||
50 | 50 | ||
51 | static short tab6[] = |
51 | static const short tab6[] = |
52 | { |
52 | { |
53 | -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, |
53 | -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, |
54 | 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, |
54 | 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, |
55 | 0 |
55 | 0 |
56 | }; |
56 | }; |
57 | 57 | ||
Line 58... | Line 58... | ||
58 | static short tab7[] = |
58 | static const short tab7[] = |
59 | { |
59 | { |
60 | -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, |
60 | -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, |
61 | -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, |
61 | -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, |
62 | 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, |
62 | 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, |
63 | -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, |
63 | -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, |
64 | -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 |
64 | -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 |
65 | }; |
65 | }; |
Line 66... | Line 66... | ||
66 | 66 | ||
67 | static short tab8[] = |
67 | static const short tab8[] = |
68 | { |
68 | { |
69 | -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, |
69 | -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, |
70 | -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, |
70 | -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, |
71 | 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, |
71 | 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, |
72 | 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, |
72 | 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, |
73 | 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 |
73 | 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 |
Line 74... | Line 74... | ||
74 | }; |
74 | }; |
75 | 75 | ||
76 | static short tab9[] = |
76 | static const short tab9[] = |
77 | { |
77 | { |
78 | -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, |
78 | -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, |
79 | 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, |
79 | 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, |
Line 93... | Line 93... | ||
93 | -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, |
93 | -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, |
94 | 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, |
94 | 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, |
95 | 2, 32, 17, -1, 1, 16, 0 |
95 | 2, 32, 17, -1, 1, 16, 0 |
96 | }; |
96 | }; |
Line 97... | Line 97... | ||
97 | 97 | ||
98 | static short tab11[] = |
98 | static const short tab11[] = |
99 | { |
99 | { |
100 | -121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, |
100 | -121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, |
101 | -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, |
101 | -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, |
102 | -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, |
102 | -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, |
Line 106... | Line 106... | ||
106 | 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, |
106 | 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, |
107 | -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, |
107 | -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, |
108 | 32, 17, -3, -1, 1, 16, 0 |
108 | 32, 17, -3, -1, 1, 16, 0 |
109 | }; |
109 | }; |
Line 110... | Line 110... | ||
110 | 110 | ||
111 | static short tab12[] = |
111 | static const short tab12[] = |
112 | { |
112 | { |
113 | -115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, |
113 | -115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, |
114 | 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, |
114 | 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, |
115 | 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, |
115 | 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, |
Line 119... | Line 119... | ||
119 | 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, |
119 | 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, |
120 | -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, |
120 | -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, |
121 | 2, 32, 0, 17, -1, 1, 16 |
121 | 2, 32, 0, 17, -1, 1, 16 |
122 | }; |
122 | }; |
Line 123... | Line 123... | ||
123 | 123 | ||
124 | static short tab13[] = |
124 | static const short tab13[] = |
125 | { |
125 | { |
126 | -509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, |
126 | -509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, |
127 | -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, |
127 | -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, |
128 | 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, |
128 | 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, |
Line 158... | Line 158... | ||
158 | -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, |
158 | -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, |
159 | -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, |
159 | -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, |
160 | 0 |
160 | 0 |
161 | }; |
161 | }; |
Line 162... | Line 162... | ||
162 | 162 | ||
163 | static short tab15[] = |
163 | static const short tab15[] = |
164 | { |
164 | { |
165 | -495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, |
165 | -495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, |
166 | -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, |
166 | -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, |
167 | 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, |
167 | 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, |
Line 197... | Line 197... | ||
197 | 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, |
197 | 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, |
198 | 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, |
198 | 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, |
199 | 0 |
199 | 0 |
200 | }; |
200 | }; |
Line 201... | Line 201... | ||
201 | 201 | ||
202 | static short tab16[] = |
202 | static const short tab16[] = |
203 | { |
203 | { |
204 | -509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, |
204 | -509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, |
205 | 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, |
205 | 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, |
206 | -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, |
206 | -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, |
Line 236... | Line 236... | ||
236 | -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, |
236 | -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, |
237 | 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, |
237 | 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, |
238 | 0 |
238 | 0 |
239 | }; |
239 | }; |
Line 240... | Line 240... | ||
240 | 240 | ||
241 | static short tab24[] = |
241 | static const short tab24[] = |
242 | { |
242 | { |
243 | -451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, |
243 | -451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, |
244 | 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, |
244 | 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, |
245 | -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, |
245 | -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, |
Line 275... | Line 275... | ||
275 | -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, |
275 | -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, |
276 | 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, |
276 | 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, |
277 | 0 |
277 | 0 |
278 | }; |
278 | }; |
Line 279... | Line 279... | ||
279 | 279 | ||
280 | static short tab_c0[] = |
280 | static const short tab_c0[] = |
281 | { |
281 | { |
282 | -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, |
282 | -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, |
283 | 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, |
283 | 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, |
284 | 0 |
284 | 0 |
Line 285... | Line 285... | ||
285 | }; |
285 | }; |
286 | 286 | ||
287 | static short tab_c1[] = |
287 | static const short tab_c1[] = |
288 | { |
288 | { |
289 | -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, |
289 | -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, |
290 | 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, |
290 | 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, |
Line 291... | Line 291... | ||
291 | 0 |
291 | 0 |
292 | }; |
292 | }; |
293 | 293 | ||
294 | 294 | ||
295 | 295 | ||
296 | static struct newhuff ht[] = |
296 | static const struct newhuff ht[] = |
Line 328... | Line 328... | ||
328 | { /* 16 */ 9 , tab24 } , |
328 | { /* 16 */ 9 , tab24 } , |
329 | { /* 16 */ 11, tab24 } , |
329 | { /* 16 */ 11, tab24 } , |
330 | { /* 16 */ 13, tab24 } |
330 | { /* 16 */ 13, tab24 } |
331 | }; |
331 | }; |
Line 332... | Line 332... | ||
332 | 332 | ||
333 | static struct newhuff htc[] = |
333 | static const struct newhuff htc[] = |
334 | { |
334 | { |
335 | { /* 1 , 1 , */ 0 , tab_c0 } , |
335 | { /* 1 , 1 , */ 0 , tab_c0 } , |
336 | { /* 1 , 1 , */ 0 , tab_c1 } |
336 | { /* 1 , 1 , */ 0 , tab_c1 } |