diff options
Diffstat (limited to 'lib/rbcodec/codecs/libmusepack/huffman.c')
-rw-r--r-- | lib/rbcodec/codecs/libmusepack/huffman.c | 530 |
1 files changed, 530 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libmusepack/huffman.c b/lib/rbcodec/codecs/libmusepack/huffman.c new file mode 100644 index 0000000000..c304775623 --- /dev/null +++ b/lib/rbcodec/codecs/libmusepack/huffman.c | |||
@@ -0,0 +1,530 @@ | |||
1 | /* | ||
2 | Copyright (c) 2005-2009, The Musepack Development Team | ||
3 | All rights reserved. | ||
4 | |||
5 | Redistribution and use in source and binary forms, with or without | ||
6 | modification, are permitted provided that the following conditions are | ||
7 | met: | ||
8 | |||
9 | * Redistributions of source code must retain the above copyright | ||
10 | notice, this list of conditions and the following disclaimer. | ||
11 | |||
12 | * Redistributions in binary form must reproduce the above | ||
13 | copyright notice, this list of conditions and the following | ||
14 | disclaimer in the documentation and/or other materials provided | ||
15 | with the distribution. | ||
16 | |||
17 | * Neither the name of the The Musepack Development Team nor the | ||
18 | names of its contributors may be used to endorse or promote | ||
19 | products derived from this software without specific prior | ||
20 | written permission. | ||
21 | |||
22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
23 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
26 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
27 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
28 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
29 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
30 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
31 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
32 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
33 | */ | ||
34 | /// \file huffman.c | ||
35 | /// Implementations of sv7/sv8 huffman decoding functions. | ||
36 | #include "mpcdec.h" | ||
37 | #include "huffman.h" | ||
38 | |||
39 | |||
40 | // sv7 huffman tables | ||
41 | static const mpc_huffman mpc_table_HuffHdr [10] ICONST_ATTR = { | ||
42 | {0x8000, 1, 0}, {0x6000, 3, 1}, {0x5e00, 7,-4}, {0x5d80, 9, 3}, {0x5d00, 9, 4}, | ||
43 | {0x5c00, 8,-5}, {0x5800, 6, 2}, {0x5000, 5,-3}, {0x4000, 4,-2}, {0x0000, 2,-1} | ||
44 | }; | ||
45 | |||
46 | const mpc_huffman mpc_table_HuffSCFI [4] ICONST_ATTR = { | ||
47 | {0x8000, 1, 1}, {0x6000, 3, 2}, {0x4000, 3, 0}, {0x0000, 2, 3} | ||
48 | }; | ||
49 | |||
50 | static const mpc_huffman mpc_table_HuffDSCF [16] ICONST_ATTR = { | ||
51 | {0xf800, 5, 5}, {0xf000, 5,-4}, {0xe000, 4, 3}, {0xd000, 4,-3}, | ||
52 | {0xc000, 4, 8}, {0xa000, 3, 1}, {0x9000, 4, 0}, {0x8800, 5,-5}, | ||
53 | {0x8400, 6, 7}, {0x8000, 6,-7}, {0x6000, 3,-1}, {0x4000, 3, 2}, | ||
54 | {0x3000, 4, 4}, {0x2800, 5, 6}, {0x2000, 5,-6}, {0x0000, 3,-2} | ||
55 | }; | ||
56 | |||
57 | static const mpc_huffman mpc_table_HuffQ1 [2] [27] ICONST_ATTR = { | ||
58 | { | ||
59 | {0xe000, 3, 13}, {0xdc00, 6, 26}, {0xd800, 6, 0}, | ||
60 | {0xd400, 6, 20}, {0xd000, 6, 6}, {0xc000, 4, 14}, | ||
61 | {0xb000, 4, 12}, {0xa000, 4, 4}, {0x9000, 4, 22}, | ||
62 | {0x8c00, 6, 8}, {0x8800, 6, 18}, {0x8400, 6, 24}, | ||
63 | {0x8000, 6, 2}, {0x7000, 4, 16}, {0x6000, 4, 10}, | ||
64 | {0x5800, 5, 17}, {0x5000, 5, 9}, {0x4800, 5, 1}, | ||
65 | {0x4000, 5, 25}, {0x3800, 5, 5}, {0x3000, 5, 21}, | ||
66 | {0x2800, 5, 3}, {0x2000, 5, 11}, {0x1800, 5, 15}, | ||
67 | {0x1000, 5, 23}, {0x0800, 5, 19}, {0x0000, 5, 7} | ||
68 | }, { | ||
69 | {0x8000, 1, 13}, {0x7e00, 7, 15}, {0x7c00, 7, 1}, | ||
70 | {0x7a00, 7, 11}, {0x7800, 7, 7}, {0x7600, 7, 17}, | ||
71 | {0x7400, 7, 25}, {0x7200, 7, 19}, {0x7180, 9, 8}, | ||
72 | {0x7100, 9, 18}, {0x7080, 9, 2}, {0x7000, 9, 24}, | ||
73 | {0x6e00, 7, 3}, {0x6c00, 7, 23}, {0x6a00, 7, 21}, | ||
74 | {0x6800, 7, 5}, {0x6700, 8, 0}, {0x6600, 8, 26}, | ||
75 | {0x6500, 8, 6}, {0x6400, 8, 20}, {0x6000, 6, 9}, | ||
76 | {0x5000, 4, 14}, {0x4000, 4, 12}, {0x3000, 4, 4}, | ||
77 | {0x2000, 4, 22}, {0x1000, 4, 16}, {0x0000, 4, 10} | ||
78 | } | ||
79 | }; | ||
80 | |||
81 | static const mpc_huffman mpc_table_HuffQ2 [2] [25] ICONST_ATTR = { | ||
82 | { | ||
83 | {0xf000, 4, 13}, {0xe000, 4, 17}, {0xd000, 4, 7}, {0xc000, 4, 11}, {0xbc00, 6, 1}, | ||
84 | {0xb800, 6, 23}, {0xb600, 7, 4}, {0xb400, 7, 20}, {0xb200, 7, 0}, {0xb000, 7, 24}, | ||
85 | {0xa800, 5, 22}, {0xa000, 5, 10}, {0x8000, 3, 12}, {0x7800, 5, 2}, {0x7000, 5, 14}, | ||
86 | {0x6000, 4, 6}, {0x5000, 4, 18}, {0x4000, 4, 8}, {0x3000, 4, 16}, {0x2800, 5, 9}, | ||
87 | {0x2000, 5, 5}, {0x1800, 5, 15}, {0x1000, 5, 21}, {0x0800, 5, 19}, {0x0000, 5, 3} | ||
88 | }, { | ||
89 | {0xf800, 5, 18}, {0xf000, 5, 6}, {0xe800, 5, 8}, {0xe700, 8, 3}, {0xe6c0,10, 24}, | ||
90 | {0xe680,10, 4}, {0xe640,10, 0}, {0xe600,10, 20}, {0xe400, 7, 23}, {0xe200, 7, 1}, | ||
91 | {0xe000, 7, 19}, {0xd800, 5, 16}, {0xd600, 7, 15}, {0xd400, 7, 21}, {0xd200, 7, 9}, | ||
92 | {0xd000, 7, 5}, {0xcc00, 6, 2}, {0xc800, 6, 10}, {0xc400, 6, 14}, {0xc000, 6, 22}, | ||
93 | {0x8000, 2, 12}, {0x6000, 3, 13}, {0x4000, 3, 17}, {0x2000, 3, 11}, {0x0000, 3, 7} | ||
94 | } | ||
95 | }; | ||
96 | |||
97 | static const mpc_huffman mpc_table_HuffQ3 [2] [7] ICONST_ATTR = { | ||
98 | { | ||
99 | {0xe000, 3, 1}, {0xd000, 4, 3}, {0xc000, 4,-3}, {0xa000, 3, 2}, | ||
100 | {0x8000, 3,-2}, {0x4000, 2, 0}, {0x0000, 2,-1} | ||
101 | }, { | ||
102 | {0xc000, 2, 0}, {0x8000, 2,-1}, {0x4000, 2, 1}, {0x3000, 4,-2}, | ||
103 | {0x2800, 5, 3}, {0x2000, 5,-3}, {0x0000, 3, 2} | ||
104 | } | ||
105 | }; | ||
106 | |||
107 | static const mpc_huffman mpc_table_HuffQ4 [2] [9] ICONST_ATTR = { | ||
108 | { | ||
109 | {0xe000, 3, 0}, {0xc000, 3,-1}, {0xa000, 3, 1}, | ||
110 | {0x8000, 3,-2}, {0x6000, 3, 2}, {0x5000, 4,-4}, | ||
111 | {0x4000, 4, 4}, {0x2000, 3, 3}, {0x0000, 3,-3} | ||
112 | }, { | ||
113 | {0xe000, 3, 1}, {0xd000, 4, 2}, {0xc000, 4,-3}, | ||
114 | {0x8000, 2, 0}, {0x6000, 3,-2}, {0x5000, 4, 3}, | ||
115 | {0x4800, 5,-4}, {0x4000, 5, 4}, {0x0000, 2,-1} | ||
116 | } | ||
117 | }; | ||
118 | |||
119 | static const mpc_huffman mpc_table_HuffQ5 [2] [15] ICONST_ATTR = { | ||
120 | { | ||
121 | {0xf000, 4, 2}, {0xe800, 5, 5}, {0xe400, 6,-7}, {0xe000, 6, 7}, {0xd000, 4,-3}, | ||
122 | {0xc000, 4, 3}, {0xb800, 5,-6}, {0xb000, 5, 6}, {0xa000, 4,-4}, {0x9000, 4, 4}, | ||
123 | {0x8000, 4,-5}, {0x6000, 3, 0}, {0x4000, 3,-1}, {0x2000, 3, 1}, {0x0000, 3,-2} | ||
124 | }, { | ||
125 | {0xf000, 4, 3}, {0xe800, 5, 4}, {0xe600, 7, 6}, {0xe500, 8,-7}, {0xe400, 8, 7}, | ||
126 | {0xe000, 6,-6}, {0xc000, 3, 0}, {0xa000, 3,-1}, {0x8000, 3, 1}, {0x6000, 3,-2}, | ||
127 | {0x4000, 3, 2}, {0x3800, 5,-5}, {0x3000, 5, 5}, {0x2000, 4,-4}, {0x0000, 3,-3} | ||
128 | } | ||
129 | }; | ||
130 | |||
131 | static const mpc_huffman mpc_table_HuffQ6 [2] [31] ICONST_ATTR = { | ||
132 | { | ||
133 | {0xf800, 5, 3}, {0xf000, 5, -4}, {0xec00, 6,-11}, {0xe800, 6, 12}, {0xe000, 5, 4}, | ||
134 | {0xd800, 5, 6}, {0xd000, 5, -5}, {0xc800, 5, 5}, {0xc000, 5, 7}, {0xb800, 5, -7}, | ||
135 | {0xb400, 6,-12}, {0xb000, 6,-13}, {0xa800, 5, -6}, {0xa000, 5, 8}, {0x9800, 5, -8}, | ||
136 | {0x9000, 5, 9}, {0x8800, 5, -9}, {0x8400, 6, 13}, {0x8200, 7,-15}, {0x8000, 7, 15}, | ||
137 | {0x7000, 4, 0}, {0x6800, 5,-10}, {0x6000, 5, 10}, {0x5000, 4, -1}, {0x4000, 4, 2}, | ||
138 | {0x3000, 4, 1}, {0x2000, 4, -2}, {0x1c00, 6, 14}, {0x1800, 6,-14}, {0x1000, 5, 11}, | ||
139 | {0x0000, 4, -3} | ||
140 | }, { | ||
141 | {0xf800, 5, -6}, {0xf000, 5, 6}, {0xe000, 4, 1}, {0xd000, 4, -1}, {0xce00, 7, 10}, | ||
142 | {0xcc00, 7,-10}, {0xcb00, 8,-11}, {0xca80, 9,-12}, {0xca60,11, 13}, {0xca58,13, 15}, | ||
143 | {0xca50,13,-14}, {0xca48,13, 14}, {0xca40,13,-15}, {0xca00,10,-13}, {0xc900, 8, 11}, | ||
144 | {0xc800, 8, 12}, {0xc400, 6, -9}, {0xc000, 6, 9}, {0xb000, 4, -2}, {0xa000, 4, 2}, | ||
145 | {0x9000, 4, 3}, {0x8000, 4, -3}, {0x7800, 5, -7}, {0x7000, 5, 7}, {0x6000, 4, -4}, | ||
146 | {0x5000, 4, 4}, {0x4800, 5, -8}, {0x4000, 5, 8}, {0x3000, 4, 5}, {0x2000, 4, -5}, | ||
147 | {0x0000, 3, 0} | ||
148 | } | ||
149 | }; | ||
150 | |||
151 | static const mpc_huffman mpc_table_HuffQ7 [2] [63] ICONST_ATTR = { | ||
152 | { | ||
153 | {0xfc00, 6, 7}, {0xf800, 6, 8}, {0xf400, 6, 9}, {0xf000, 6, -8}, {0xec00, 6, 11}, | ||
154 | {0xea00, 7, 21}, {0xe900, 8,-28}, {0xe800, 8, 28}, {0xe400, 6, -9}, {0xe200, 7,-22}, | ||
155 | {0xe000, 7,-21}, {0xdc00, 6,-10}, {0xd800, 6,-11}, {0xd400, 6, 10}, {0xd000, 6, 12}, | ||
156 | {0xcc00, 6,-13}, {0xca00, 7, 22}, {0xc800, 7, 23}, {0xc400, 6,-12}, {0xc000, 6, 13}, | ||
157 | {0xbc00, 6, 14}, {0xb800, 6,-14}, {0xb600, 7,-23}, {0xb500, 8,-29}, {0xb400, 8, 29}, | ||
158 | {0xb000, 6,-15}, {0xac00, 6, 15}, {0xa800, 6, 16}, {0xa400, 6,-16}, {0xa200, 7,-24}, | ||
159 | {0xa000, 7, 24}, {0x9c00, 6, 17}, {0x9a00, 7,-25}, {0x9900, 8,-30}, {0x9800, 8, 30}, | ||
160 | {0x9400, 6,-17}, {0x9000, 6, 18}, {0x8c00, 6,-18}, {0x8a00, 7, 25}, {0x8800, 7, 26}, | ||
161 | {0x8400, 6, 19}, {0x8200, 7,-26}, {0x8000, 7,-27}, {0x7800, 5, 2}, {0x7400, 6,-19}, | ||
162 | {0x7000, 6, 20}, {0x6800, 5, -1}, {0x6700, 8,-31}, {0x6600, 8, 31}, {0x6400, 7, 27}, | ||
163 | {0x6000, 6,-20}, {0x5800, 5, 1}, {0x5000, 5, -5}, {0x4800, 5, -3}, {0x4000, 5, 3}, | ||
164 | {0x3800, 5, 0}, {0x3000, 5, -2}, {0x2800, 5, -4}, {0x2000, 5, 4}, {0x1800, 5, 5}, | ||
165 | {0x1000, 5, -6}, {0x0800, 5, 6}, {0x0000, 5, -7} | ||
166 | }, { | ||
167 | {0xf800, 5, -1}, {0xf000, 5, 2}, {0xe800, 5, -2}, {0xe000, 5, 3}, {0xdf00, 8,-20}, | ||
168 | {0xdec0,10, 24}, {0xdebc,14, 28}, {0xdeb8,14,-28}, {0xdeb4,14,-30}, {0xdeb0,14, 30}, | ||
169 | {0xdea0,12,-27}, {0xde9c,14, 29}, {0xde98,14,-29}, {0xde94,14, 31}, {0xde90,14,-31}, | ||
170 | {0xde80,12, 27}, {0xde00, 9,-22}, {0xdc00, 7,-17}, {0xd800, 6,-11}, {0xd000, 5, -3}, | ||
171 | {0xc800, 5, 4}, {0xc000, 5, -4}, {0xbe00, 7, 17}, {0xbd00, 8, 20}, {0xbc80, 9, 22}, | ||
172 | {0xbc40,10,-25}, {0xbc00,10,-26}, {0xb800, 6, 12}, {0xb000, 5, 5}, {0xa800, 5, -5}, | ||
173 | {0xa000, 5, 6}, {0x9800, 5, -6}, {0x9400, 6,-12}, {0x9200, 7,-18}, {0x9000, 7, 18}, | ||
174 | {0x8c00, 6, 13}, {0x8800, 6,-13}, {0x8000, 5, -7}, {0x7c00, 6, 14}, {0x7b00, 8, 21}, | ||
175 | {0x7a00, 8,-21}, {0x7800, 7,-19}, {0x7000, 5, 7}, {0x6800, 5, 8}, {0x6400, 6,-14}, | ||
176 | {0x6000, 6,-15}, {0x5800, 5, -8}, {0x5400, 6, 15}, {0x5200, 7, 19}, {0x51c0,10, 25}, | ||
177 | {0x5180,10, 26}, {0x5100, 9,-23}, {0x5080, 9, 23}, {0x5000, 9,-24}, {0x4800, 5,-9}, | ||
178 | {0x4000, 5, 9}, {0x3c00, 6, 16}, {0x3800, 6,-16}, {0x3000, 5, 10}, {0x2000, 4, 0}, | ||
179 | {0x1800, 5,-10}, {0x1000, 5, 11}, {0x0000, 4, 1} | ||
180 | } | ||
181 | }; | ||
182 | |||
183 | // sv8 huffman tables | ||
184 | static const mpc_huffman mpc_huff_SCFI_1 [3] ICONST_ATTR = { | ||
185 | {0x8000, 1, 1}, {0x4000, 2, 2}, {0x0, 3, 3} | ||
186 | }; // 3 | ||
187 | static const mpc_int8_t mpc_sym_SCFI_1 [4] ICONST_ATTR = { | ||
188 | 2, 3, 1, 0 | ||
189 | }; | ||
190 | static const mpc_huffman mpc_huff_SCFI_2 [5] ICONST_ATTR = { | ||
191 | {0x8000, 2, 3}, {0x4000, 3, 5}, {0x1800, 5, 11}, {0x400, 6, 14}, {0x0, 7, 15} | ||
192 | }; // 5 | ||
193 | static const mpc_int8_t mpc_sym_SCFI_2 [16] ICONST_ATTR = { | ||
194 | 15, 10, 14, 11, 13, 9, 7, 6, 5, 12, 8, 3, 2, 0, 4, 1 | ||
195 | }; | ||
196 | |||
197 | static const mpc_huffman mpc_huff_DSCF_1 [12] ICONST_ATTR = { | ||
198 | {0xa000, 3, 7}, {0x4000, 4, 12}, {0x2800, 5, 16}, {0x1800, 6, 21}, | ||
199 | {0x0e00, 7, 27}, {0x0700, 8, 34}, {0x0380, 9, 41}, {0x0140, 10, 48}, | ||
200 | {0x0080, 11, 53}, {0x0030, 12, 57}, {0x0018, 13, 60}, {0x0000, 14, 63} | ||
201 | }; // 12 | ||
202 | static const mpc_int8_t mpc_sym_DSCF_1 [64] ICONST_ATTR = { | ||
203 | 35, 34, 33, 36, 32, 30, 29, 27, 26, 37, 28, 25, 39, 38, 24, 23, | ||
204 | 40, 22, 21, 20, 19, 43, 42, 41, 18, 17, 16, 15, 46, 45, 44, 14, | ||
205 | 13, 12, 11, 49, 48, 47, 31, 10, 9, 8, 7, 6, 52, 51, 50, 5, | ||
206 | 4, 3, 54, 53, 2, 1, 0, 57, 56, 55, 63, 62, 61, 60, 59, 58 | ||
207 | }; | ||
208 | static const mpc_huffman mpc_huff_DSCF_2 [13] ICONST_ATTR = { | ||
209 | {0x6000, 3, 7}, {0x3000, 4, 10}, {0x1800, 5, 13}, {0x1000, 6, 16}, | ||
210 | {0x0a00, 7, 20}, {0x0600, 8, 25}, {0x0380, 9, 31}, {0x01c0, 10, 38}, | ||
211 | {0x00e0, 11, 45}, {0x0050, 12, 52}, {0x0020, 13, 57}, {0x000c, 14, 61}, | ||
212 | {0x0000, 15, 64} | ||
213 | }; // 13 | ||
214 | static const mpc_int8_t mpc_sym_DSCF_2 [65] ICONST_ATTR = { | ||
215 | 33, 32, 31, 30, 29, 34, 28, 27, 36, 35, 26, 37, 25, 38, 24, 23, | ||
216 | 40, 39, 22, 21, 42, 41, 20, 19, 18, 45, 44, 43, 17, 16, 15, 14, | ||
217 | 48, 47, 46, 13, 12, 11, 10, 64, 52, 51, 50, 49, 9, 8, 7, 6, | ||
218 | 55, 54, 53, 5, 4, 3, 58, 57, 56, 2, 1, 63, 62, 61, 60, 59, | ||
219 | 0 | ||
220 | }; | ||
221 | |||
222 | static const mpc_huffman mpc_huff_Bands [12] ICONST_ATTR = { | ||
223 | {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 5, 6}, | ||
224 | {0x0800, 6, 8}, {0x0600, 7, 10}, {0x0300, 8, 13}, {0x0200, 9, 16}, | ||
225 | {0x0140, 10, 20}, {0x00c0, 11, 25}, {0x0010, 12, 31}, {0x0000, 13, 32} | ||
226 | }; // 12 | ||
227 | static const mpc_int8_t mpc_sym_Bands [33] ICONST_ATTR = { | ||
228 | 0, 32, 1, 31, 2, 30, 3, 4, 29, 6, 5, 28, 7, 27, 26, 8, | ||
229 | 25, 24, 23, 9, 22, 21, 20, 18, 17, 16, 15, 14, 12, 11, 10, 19, | ||
230 | 13 | ||
231 | }; | ||
232 | |||
233 | static const mpc_huffman mpc_huff_Res_1 [16] ICONST_ATTR = { | ||
234 | {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 4, 4}, | ||
235 | {0x0800, 5, 5}, {0x0400, 6, 6}, {0x0200, 7, 7}, {0x0100, 8, 8}, | ||
236 | {0x0080, 9, 9}, {0x0040, 10, 10}, {0x0020, 11, 11}, {0x0010, 12, 12}, | ||
237 | {0x0008, 13, 13}, {0x0004, 14, 14}, {0x0002, 15, 15}, {0x0000, 16, 16} | ||
238 | }; // 16 | ||
239 | static const mpc_int8_t mpc_sym_Res_1 [17] ICONST_ATTR = { | ||
240 | 0, 1, 16, 2, 3, 4, 5, 15, 6, 7, 8, 9, 10, 11, 12, 14, 13 | ||
241 | }; | ||
242 | static const mpc_huffman mpc_huff_Res_2 [12] ICONST_ATTR = { | ||
243 | {0x4000, 2, 3}, {0x2000, 3, 4}, {0x1000, 4, 5}, {0x0800, 5, 6}, | ||
244 | {0x0400, 6, 7}, {0x0200, 7, 8}, {0x0100, 8, 9}, {0x0080, 9, 10}, | ||
245 | {0x0040, 10, 11}, {0x0020, 11, 12}, {0x0010, 12, 13}, {0x0000, 14, 16} | ||
246 | }; // 12 | ||
247 | static const mpc_int8_t mpc_sym_Res_2 [17] ICONST_ATTR = { | ||
248 | 16, 1, 0, 2, 15, 3, 14, 4, 5, 13, 6, 12, 7, 11, 10, 9, 8 | ||
249 | }; | ||
250 | |||
251 | static const mpc_huffman mpc_huff_Q1 [10] ICONST_ATTR = { | ||
252 | {0x6000, 3, 7}, {0x1000, 4, 10}, {0x0800, 5, 11}, {0x0400, 6, 12}, | ||
253 | {0x0200, 7, 13}, {0x0100, 8, 14}, {0x0080, 9, 15}, {0x0040, 10, 16}, | ||
254 | {0x0020, 11, 17}, {0x0000, 12, 18} | ||
255 | }; // 10 | ||
256 | static const mpc_int8_t mpc_sym_Q1 [19] ICONST_ATTR = { | ||
257 | 7, 6, 5, 4, 3, 10, 9, 8, 2, 1, 11, 0, 12, 13, 14, 15, 16, 18, 17 | ||
258 | }; | ||
259 | |||
260 | static const mpc_huffman mpc_huff_Q2_1 [10] ICONST_ATTR = { | ||
261 | {0xe000, 3, 7}, {0x8000, 4, 14}, {0x3c00, 6, 38}, {0x2a00, 7, 53}, | ||
262 | {0x1200, 8, 74}, {0x0600, 9, 92}, {0x03c0, 10,104}, {0x0060, 11,119}, | ||
263 | {0x0020, 12,122}, {0x0000, 13,124} | ||
264 | }; // 10 | ||
265 | static const mpc_int8_t mpc_sym_Q2_1 [125] ICONST_ATTR = { | ||
266 | 62, 87, 67, 63, 61, 57, 37, 93, 92, 88, 86, 83, 82, 81, 68, 66, 58, 56, 42, 41, 38, 36, 32, 31,112, | ||
267 | 91, 72, 64, 60, 52, 43, 33, 12,117,113,111,107, 97, 89, 85, 77, 73, 71, 69, 65, 59, 55, 53, 51, 47, | ||
268 | 39, 35, 27, 17, 13, 11, 7,118,116,108,106, 98, 96, 94, 90, 84, 80, 78, 76, 48, 46, 44, 40, 34, 30, | ||
269 | 28, 26, 18, 16, 8, 6,122,110,102, 74, 70, 54, 50, 22, 2,123,121,119,115,114,109,105,103,101, 99, | ||
270 | 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 14, 10, 9, 5, 3, 1,124,104, 20, 0,120,100, 24, 4 | ||
271 | }; | ||
272 | static const mpc_huffman mpc_huff_Q2_2 [9] ICONST_ATTR = { | ||
273 | {0xf000, 4, 15}, {0x7000, 5, 30}, {0x4800, 6, 44}, | ||
274 | {0x3c00, 7, 62}, {0x0c00, 8, 92}, {0x0780, 9,104}, | ||
275 | {0x00c0, 10,119}, {0x0040, 11,122}, {0x0000, 12,124} | ||
276 | }; // 9 | ||
277 | static const mpc_int8_t mpc_sym_Q2_2 [125] ICONST_ATTR = { | ||
278 | 62, 92, 87, 86, 82, 68, 67, 66, 63, 61, 58, 57, 56, 42, 38, 37, 32, 93, 91, 88, 83, 81, 43, 41, 36, | ||
279 | 33, 31,112, 72, 64, 60, 52, 12,118,117,116,113,111,108,107,106, 98, 97, 96, 94, 90, 89, 85, 84, 80, | ||
280 | 78, 77, 76, 73, 71, 69, 65, 59, 55, 53, 51, 48, 47, 46, 44, 40, 39, 35, 34, 30, 28, 27, 26, 18, 17, | ||
281 | 16, 13, 11, 8, 7, 6,122,110, 74, 70, 54, 50, 22, 14, 2,123,121,119,115,114,109,105,103,102,101, | ||
282 | 99, 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 10, 9, 5, 3, 1,124,104, 20, 0,120,100, 24, 4 | ||
283 | }; | ||
284 | |||
285 | static const mpc_huffman mpc_huff_Q3 [7] ICONST_ATTR = { | ||
286 | {0xe000, 3, 7}, {0x8000, 4, 14}, {0x5000, 5, 22}, {0x2400, 6, 32}, | ||
287 | {0x0a00, 7, 41}, {0x0200, 8, 46}, {0x0000, 9, 48} | ||
288 | }; // 7 | ||
289 | static const mpc_int8_t mpc_sym_Q3 [49] ICONST_ATTR = { | ||
290 | 0, 17, 16, 1, 15,-16, -1, | ||
291 | 32, 31, 2, 14,-15,-32, 34, | ||
292 | 33, 47, 46, 18, 30,-14, -2, | ||
293 | -31,-17,-18, 49, 48, 63, 19, | ||
294 | 29, 3, 13,-13, -3,-30,-47, | ||
295 | -48,-33, 50, 62, 35, 45,-29, | ||
296 | -19,-46,-34, 51, 61,-45,-35 | ||
297 | }; | ||
298 | |||
299 | static const mpc_huffman mpc_huff_Q4 [8] ICONST_ATTR = { | ||
300 | {0xf000, 4, 15}, {0x9000, 5, 30}, {0x3400, 6, 48}, {0x1800, 7, 61}, | ||
301 | {0x0500, 8, 73}, {0x0100, 9, 78}, {0x0000, 10, 80}, {0x0000, 0, 90} | ||
302 | }; // 8 | ||
303 | static const mpc_int8_t mpc_sym_Q4 [91] ICONST_ATTR = { | ||
304 | 0, 32, 17, 16, 31, 2, 1, 15, 14,-15,-16, -1,-32, 49, 48, | ||
305 | 34, 33, 47, 46, 19, 18, 30, 29, 3, 13,-13,-14, -2, -3,-30, | ||
306 | -31,-17,-18,-47,-48,-33, 64, 50, 63, 62, 35, 45, 4, 12,-29, | ||
307 | -19,-46,-34,-64,-49, 66, 65, 79, 78, 51, 61, 36, 44, 20, 28, | ||
308 | -12, -4,-28,-20,-45,-35,-62,-63,-50, 67, 77, 52, 60,-44,-36, | ||
309 | -61,-51, 68, 76,-60,-52, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
310 | 0 | ||
311 | }; | ||
312 | |||
313 | static const mpc_huffman mpc_huff_Q5_1 [6] ICONST_ATTR = { | ||
314 | {0xc000, 2, 3}, {0x4000, 3, 6}, {0x2000, 4, 8}, | ||
315 | {0x1000, 5, 10}, {0x0800, 6, 12}, {0x0000, 7, 14} | ||
316 | }; // 6 | ||
317 | static const mpc_int8_t mpc_sym_Q5_1 [15] ICONST_ATTR = { | ||
318 | 0, 2, 1, -1, -2, 3, -3, 4, -4, 5, -5, 7, 6, -6, -7 | ||
319 | }; | ||
320 | static const mpc_huffman mpc_huff_Q5_2 [4] ICONST_ATTR = { | ||
321 | {0x6000, 3, 7}, {0x2000, 4, 10}, {0x1000, 5, 12}, {0x0, 6, 14} | ||
322 | }; // 4 | ||
323 | static const mpc_int8_t mpc_sym_Q5_2 [15] ICONST_ATTR = { | ||
324 | 2, 1, 0, -1, -2, 4, 3, -3, -4, 5, -5, 7, 6, -6, -7 | ||
325 | }; | ||
326 | |||
327 | static const mpc_huffman mpc_huff_Q6_1 [8] ICONST_ATTR = { | ||
328 | {0xc000, 2, 3}, {0x8000, 3, 6}, {0x4000, 4, 10}, {0x2800, 5, 14}, | ||
329 | {0x0c00, 6, 19}, {0x0800, 7, 22}, {0x0400, 8, 26}, {0x0000, 9, 30} | ||
330 | }; // 8 | ||
331 | static const mpc_int8_t mpc_sym_Q6_1 [31] ICONST_ATTR = { | ||
332 | 0, 1, -1, 3, 2, -2, -3, 4, -4, -5, 8, 7, 6, 5, -6, | ||
333 | -7, -8, 9, -9, 11, 10,-10,-11, 15, 14, 13, 12,-12,-13,-14, | ||
334 | -15 | ||
335 | }; | ||
336 | static const mpc_huffman mpc_huff_Q6_2 [5] ICONST_ATTR = { | ||
337 | {0x5000, 4, 15}, {0x2000, 5, 20}, {0x1000, 6, 24}, {0x400, 7, 28}, {0x0, 8, 30} | ||
338 | }; // 5 | ||
339 | static const mpc_int8_t mpc_sym_Q6_2 [31] ICONST_ATTR = { | ||
340 | 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, 8, 7, 6, -6, | ||
341 | -7, -8, 10, 9, -9,-10, 13, 12, 11,-11,-12,-13, 15, 14,-14, | ||
342 | -15 | ||
343 | }; | ||
344 | |||
345 | static const mpc_huffman mpc_huff_Q7_1 [9] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
346 | {0xc000, 2, 3}, {0x8000, 3, 6}, {0x6000, 4, 10}, | ||
347 | {0x4000, 5, 16}, {0x2800, 6, 24}, {0x1400, 7, 34}, | ||
348 | {0x0a00, 8, 44}, {0x0400, 9, 54}, {0x0000, 10, 62} | ||
349 | }; // 9 | ||
350 | static const mpc_int8_t mpc_sym_Q7_1 [63] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
351 | 0, 1, -1, 2, -2, 4, 3, -3, -4, 7, 6, 5, -5, -6, -7, | ||
352 | 13, 11, 10, 9, 8, -8, -9,-10,-11,-12, 17, 16, 15, 14, 12, | ||
353 | -13,-14,-15,-16,-17, 28, 27, 21, 20, 19, 18,-18,-19,-20,-21, | ||
354 | -27,-28, 31, 30, 29, 26, 25, 24, 23, 22,-22,-23,-24,-25,-26, | ||
355 | -29,-30,-31 | ||
356 | }; | ||
357 | static const mpc_huffman mpc_huff_Q7_2 [5] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
358 | {0x6000, 5, 31}, {0x2400, 6, 43}, {0x1000, 7, 52}, {0x200, 8, 60}, {0x0, 9, 62} | ||
359 | }; // 5 | ||
360 | static const mpc_int8_t mpc_sym_Q7_2 [63] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
361 | 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, | ||
362 | -5, -6, -7, -8, -9, 17, 16, 15, 14, 13, 12, 11,-10,-11,-12, | ||
363 | -13,-14,-15,-16,-17, 22, 21, 20, 19, 18,-18,-19,-20,-21,-22, | ||
364 | 29, 28, 27, 26, 25, 24, 23,-23,-24,-25,-26,-27,-28,-29, 31, | ||
365 | 30,-30,-31 | ||
366 | }; | ||
367 | |||
368 | static const mpc_huffman mpc_huff_Q8_1 [11] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
369 | {0xc000, 2, 3}, {0x8000, 3, 6}, {0x7000, 4, 10}, {0x5800, 5, 17}, | ||
370 | {0x3800, 6, 28}, {0x2800, 7, 42}, {0x1900, 8, 62}, {0x0d00, 9, 87}, | ||
371 | {0x0280, 10,113}, {0x0060, 11,123}, {0x0000, 12,126} | ||
372 | }; // 11 | ||
373 | static const mpc_int8_t mpc_sym_Q8_1 [127] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
374 | 0, 1, -1, -2, 3, 2, -3, 7, 6, 5, 4, -4, -5, -6, -7, 11, 10, 9, 8, -8, | ||
375 | -9,-10,-11, 19, 18, 17, 16, 15, 14, 13, 12,-12,-13,-14,-15,-16,-17,-19, 56, 55, | ||
376 | 31, 28, 27, 26, 25, 24, 23, 22, 21, 20,-18,-20,-21,-22,-23,-24,-25,-26,-27,-33, | ||
377 | -54,-56, 63, 62, 61, 60, 59, 58, 57, 54, 53, 43, 40, 39, 38, 37, 36, 35, 34, 33, | ||
378 | 32, 30, 29,-28,-29,-30,-31,-32,-34,-35,-36,-37,-38,-39,-40,-41,-43,-53,-55,-57, | ||
379 | -58,-59,-60,-61, 49, 47, 46, 45, 44, 42, 41,-42,-44,-45,-46,-47,-48,-49,-50,-62, | ||
380 | -63, 52, 51, 50, 48,-51,-52 | ||
381 | }; | ||
382 | static const mpc_huffman mpc_huff_Q8_2 [4] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
383 | {0x9800, 6, 63}, {0x2a00, 7, 101}, {0x400, 8, 122}, {0x0, 9, 126} | ||
384 | }; // 4 | ||
385 | static const mpc_int8_t mpc_sym_Q8_2 [127] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
386 | 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, | ||
387 | -8, -9,-10,-11,-12,-13, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, | ||
388 | 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 12,-14,-15,-16,-17,-18,-19,-20, | ||
389 | -21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32,-33,-34,-35,-36,-37,-38,-39,-40, | ||
390 | -41, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, | ||
391 | 40,-42,-43,-44,-45,-46,-47,-48,-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59, 63, | ||
392 | 62, 61, 60,-60,-61,-62,-63 | ||
393 | }; | ||
394 | |||
395 | static const mpc_huffman mpc_huff_Q9up [6] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
396 | {0xf800, 6, 63}, {0xac00, 7,125}, {0x2600, 8, -45}, | ||
397 | {0x0280, 9, -7}, {0x0040, 10, -2}, {0x0000, 11, -1} | ||
398 | }; // 6 | ||
399 | static const mpc_int8_t mpc_sym_Q9up [256] ICONST_ATTR_MPC_LARGE_IRAM = { | ||
400 | -128, 127,-108,-110,-111,-112,-113,-114,-115,-116,-117,-118,-119,-120,-121,-122, | ||
401 | -123,-124,-125,-126,-127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, | ||
402 | 115, 114, 113, 112, 111, 110, 109, 108, -44, -45, -46, -47, -48, -49, -50, -51, | ||
403 | -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, | ||
404 | -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, | ||
405 | -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, | ||
406 | -100,-101,-102,-103,-104,-105,-106,-107,-109, 107, 106, 105, 104, 103, 102, 101, | ||
407 | 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, | ||
408 | 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, | ||
409 | 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, | ||
410 | 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 40, 20, 19, -7, -8, | ||
411 | -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, | ||
412 | -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, | ||
413 | -41, -42, -43, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, | ||
414 | 27, 26, 25, 24, 23, 22, 21, 18, 17, 16, 15, 14, 13, 12, 11, 10, | ||
415 | 9, 8, 7, 6, 5, -3, -4, -5, -6, 4, 3, 2, 1, 0, -1, -2 | ||
416 | }; | ||
417 | |||
418 | /* sv7 lookup tables */ | ||
419 | mpc_lut_data mpc_HuffHdr IBSS_ATTR_MPC_LARGE_IRAM; | ||
420 | mpc_lut_data mpc_HuffDSCF IBSS_ATTR_MPC_LARGE_IRAM; | ||
421 | mpc_lut_data mpc_HuffQ [7] [2] IBSS_ATTR_MPC_LARGE_IRAM; | ||
422 | |||
423 | /* sv8 lookup tables */ | ||
424 | mpc_can_data mpc_can_SCFI[2] IBSS_ATTR_MPC_LARGE_IRAM; | ||
425 | mpc_can_data mpc_can_DSCF[2] IBSS_ATTR_MPC_LARGE_IRAM; | ||
426 | mpc_can_data mpc_can_Bands IBSS_ATTR_MPC_LARGE_IRAM; | ||
427 | mpc_can_data mpc_can_Res[2] IBSS_ATTR_MPC_LARGE_IRAM; | ||
428 | mpc_can_data mpc_can_Q1 IBSS_ATTR_MPC_LARGE_IRAM; | ||
429 | mpc_can_data mpc_can_Q9up IBSS_ATTR_MPC_LARGE_IRAM; | ||
430 | mpc_can_data mpc_can_Q [6][2] IBSS_ATTR_MPC_LARGE_IRAM; | ||
431 | |||
432 | static void huff_fill_lut(const mpc_huffman *table, mpc_huff_lut *lut, const int bits) | ||
433 | { | ||
434 | int i, idx = 0; | ||
435 | const int shift = 16 - bits; | ||
436 | for (i = (1 << bits) - 1; i >= 0 ; i--) { | ||
437 | if ((table[idx].Code >> shift) < i) { | ||
438 | lut[i].Length = table[idx].Length; | ||
439 | lut[i].Value = table[idx].Value; | ||
440 | } else { | ||
441 | if (table[idx].Length <= bits) { | ||
442 | lut[i].Length = table[idx].Length; | ||
443 | lut[i].Value = table[idx].Value; | ||
444 | } else { | ||
445 | lut[i].Length = 0; | ||
446 | lut[i].Value = idx; | ||
447 | } | ||
448 | if (i != 0) | ||
449 | do { | ||
450 | idx++; | ||
451 | } while ((table[idx].Code >> shift) == i); | ||
452 | } | ||
453 | } | ||
454 | } | ||
455 | |||
456 | static void can_fill_lut(mpc_can_data * data, const int bits) | ||
457 | { | ||
458 | int i, idx = 0; | ||
459 | const int shift = 16 - bits; | ||
460 | const mpc_huffman * table = data->table; | ||
461 | const mpc_int8_t * sym = data->sym; | ||
462 | mpc_huff_lut * lut = data->lut; | ||
463 | for (i = (1 << bits) - 1; i >= 0 ; i--) { | ||
464 | if ((table[idx].Code >> shift) < i) { | ||
465 | if (table[idx].Length <= bits) { | ||
466 | lut[i].Length = table[idx].Length; | ||
467 | lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; | ||
468 | } else { | ||
469 | lut[i].Length = 0; | ||
470 | lut[i].Value = idx; | ||
471 | } | ||
472 | } else { | ||
473 | if (table[idx].Length <= bits) { | ||
474 | lut[i].Length = table[idx].Length; | ||
475 | lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; | ||
476 | } else { | ||
477 | lut[i].Length = 0; | ||
478 | lut[i].Value = idx; | ||
479 | } | ||
480 | if (i != 0) | ||
481 | do { | ||
482 | idx++; | ||
483 | } while ((table[idx].Code >> shift) == i); | ||
484 | } | ||
485 | } | ||
486 | } | ||
487 | |||
488 | void huff_init_lut(const int bits) | ||
489 | { | ||
490 | /* sv7: create vlc lookup tables */ | ||
491 | mpc_HuffDSCF.table = mpc_table_HuffDSCF ; huff_fill_lut(mpc_HuffDSCF.table , mpc_HuffDSCF.lut , bits); | ||
492 | mpc_HuffHdr.table = mpc_table_HuffHdr ; huff_fill_lut(mpc_HuffHdr.table , mpc_HuffHdr.lut , bits); | ||
493 | mpc_HuffQ[0][0].table = mpc_table_HuffQ1[0]; huff_fill_lut(mpc_HuffQ[0][0].table, mpc_HuffQ[0][0].lut, bits); | ||
494 | mpc_HuffQ[0][1].table = mpc_table_HuffQ1[1]; huff_fill_lut(mpc_HuffQ[0][1].table, mpc_HuffQ[0][1].lut, bits); | ||
495 | mpc_HuffQ[1][0].table = mpc_table_HuffQ2[0]; huff_fill_lut(mpc_HuffQ[1][0].table, mpc_HuffQ[1][0].lut, bits); | ||
496 | mpc_HuffQ[1][1].table = mpc_table_HuffQ2[1]; huff_fill_lut(mpc_HuffQ[1][1].table, mpc_HuffQ[1][1].lut, bits); | ||
497 | mpc_HuffQ[2][0].table = mpc_table_HuffQ3[0]; huff_fill_lut(mpc_HuffQ[2][0].table, mpc_HuffQ[2][0].lut, bits); | ||
498 | mpc_HuffQ[2][1].table = mpc_table_HuffQ3[1]; huff_fill_lut(mpc_HuffQ[2][1].table, mpc_HuffQ[2][1].lut, bits); | ||
499 | mpc_HuffQ[3][0].table = mpc_table_HuffQ4[0]; huff_fill_lut(mpc_HuffQ[3][0].table, mpc_HuffQ[3][0].lut, bits); | ||
500 | mpc_HuffQ[3][1].table = mpc_table_HuffQ4[1]; huff_fill_lut(mpc_HuffQ[3][1].table, mpc_HuffQ[3][1].lut, bits); | ||
501 | mpc_HuffQ[4][0].table = mpc_table_HuffQ5[0]; huff_fill_lut(mpc_HuffQ[4][0].table, mpc_HuffQ[4][0].lut, bits); | ||
502 | mpc_HuffQ[4][1].table = mpc_table_HuffQ5[1]; huff_fill_lut(mpc_HuffQ[4][1].table, mpc_HuffQ[4][1].lut, bits); | ||
503 | mpc_HuffQ[5][0].table = mpc_table_HuffQ6[0]; huff_fill_lut(mpc_HuffQ[5][0].table, mpc_HuffQ[5][0].lut, bits); | ||
504 | mpc_HuffQ[5][1].table = mpc_table_HuffQ6[1]; huff_fill_lut(mpc_HuffQ[5][1].table, mpc_HuffQ[5][1].lut, bits); | ||
505 | mpc_HuffQ[6][0].table = mpc_table_HuffQ7[0]; huff_fill_lut(mpc_HuffQ[6][0].table, mpc_HuffQ[6][0].lut, bits); | ||
506 | mpc_HuffQ[6][1].table = mpc_table_HuffQ7[1]; huff_fill_lut(mpc_HuffQ[6][1].table, mpc_HuffQ[6][1].lut, bits); | ||
507 | |||
508 | /* sv8: create vlc lookup tables */ | ||
509 | mpc_can_Bands.table = mpc_huff_Bands ; mpc_can_Bands.sym = mpc_sym_Bands; | ||
510 | mpc_can_SCFI[0].table = mpc_huff_SCFI_1; mpc_can_SCFI[0].sym = mpc_sym_SCFI_1; can_fill_lut(&mpc_can_SCFI[0], bits); | ||
511 | mpc_can_SCFI[1].table = mpc_huff_SCFI_2; mpc_can_SCFI[1].sym = mpc_sym_SCFI_2; can_fill_lut(&mpc_can_SCFI[1], bits); | ||
512 | mpc_can_DSCF[0].table = mpc_huff_DSCF_1; mpc_can_DSCF[0].sym = mpc_sym_DSCF_1; can_fill_lut(&mpc_can_DSCF[0], bits); | ||
513 | mpc_can_DSCF[1].table = mpc_huff_DSCF_2; mpc_can_DSCF[1].sym = mpc_sym_DSCF_2; can_fill_lut(&mpc_can_DSCF[1], bits); | ||
514 | mpc_can_Res[0].table = mpc_huff_Res_1 ; mpc_can_Res[0].sym = mpc_sym_Res_1 ; can_fill_lut(&mpc_can_Res[0] , bits); | ||
515 | mpc_can_Res[1].table = mpc_huff_Res_2 ; mpc_can_Res[1].sym = mpc_sym_Res_2 ; can_fill_lut(&mpc_can_Res[1] , bits); | ||
516 | mpc_can_Q1.table = mpc_huff_Q1 ; mpc_can_Q1.sym = mpc_sym_Q1 ; can_fill_lut(&mpc_can_Q1 , bits); | ||
517 | mpc_can_Q9up.table = mpc_huff_Q9up ; mpc_can_Q9up.sym = mpc_sym_Q9up ; can_fill_lut(&mpc_can_Q9up , bits); | ||
518 | mpc_can_Q[0][0].table = mpc_huff_Q2_1 ; mpc_can_Q[0][0].sym = mpc_sym_Q2_1 ; can_fill_lut(&mpc_can_Q[0][0], bits); | ||
519 | mpc_can_Q[0][1].table = mpc_huff_Q2_2 ; mpc_can_Q[0][1].sym = mpc_sym_Q2_2 ; can_fill_lut(&mpc_can_Q[0][1], bits); | ||
520 | mpc_can_Q[1][0].table = mpc_huff_Q3 ; mpc_can_Q[1][0].sym = mpc_sym_Q3 ; can_fill_lut(&mpc_can_Q[1][0], bits); | ||
521 | mpc_can_Q[1][1].table = mpc_huff_Q4 ; mpc_can_Q[1][1].sym = mpc_sym_Q4 ; can_fill_lut(&mpc_can_Q[1][1], bits); | ||
522 | mpc_can_Q[2][0].table = mpc_huff_Q5_1 ; mpc_can_Q[2][0].sym = mpc_sym_Q5_1 ; can_fill_lut(&mpc_can_Q[2][0], bits); | ||
523 | mpc_can_Q[2][1].table = mpc_huff_Q5_2 ; mpc_can_Q[2][1].sym = mpc_sym_Q5_2 ; can_fill_lut(&mpc_can_Q[2][1], bits); | ||
524 | mpc_can_Q[3][0].table = mpc_huff_Q6_1 ; mpc_can_Q[3][0].sym = mpc_sym_Q6_1 ; can_fill_lut(&mpc_can_Q[3][0], bits); | ||
525 | mpc_can_Q[3][1].table = mpc_huff_Q6_2 ; mpc_can_Q[3][1].sym = mpc_sym_Q6_2 ; can_fill_lut(&mpc_can_Q[3][1], bits); | ||
526 | mpc_can_Q[4][0].table = mpc_huff_Q7_1 ; mpc_can_Q[4][0].sym = mpc_sym_Q7_1 ; can_fill_lut(&mpc_can_Q[4][0], bits); | ||
527 | mpc_can_Q[4][1].table = mpc_huff_Q7_2 ; mpc_can_Q[4][1].sym = mpc_sym_Q7_2 ; can_fill_lut(&mpc_can_Q[4][1], bits); | ||
528 | mpc_can_Q[5][0].table = mpc_huff_Q8_1 ; mpc_can_Q[5][0].sym = mpc_sym_Q8_1 ; can_fill_lut(&mpc_can_Q[5][0], bits); | ||
529 | mpc_can_Q[5][1].table = mpc_huff_Q8_2 ; mpc_can_Q[5][1].sym = mpc_sym_Q8_2 ; can_fill_lut(&mpc_can_Q[5][1], bits); | ||
530 | } | ||