comparison cookdata.h @ 2956:5f51b1e0bed6 libavcodec

Cook compatibe decoder, patch by Benjamin Larsson Add cook demucing, change rm demuxer so that it reorders audio packets before sending them to the decoder, and send minimum decodeable sized packets; pass only real codec extradata fo the decoder Fix 28_8 decoder for the new demuxer strategy
author rtognimp
date Fri, 09 Dec 2005 16:08:18 +0000
parents
children 0b546eab515d
comparison
equal deleted inserted replaced
2955:64f38f1be88f 2956:5f51b1e0bed6
1 /*
2 * COOK compatible decoder data
3 * Copyright (c) 2003 Sascha Sommer
4 * Copyright (c) 2005 Benjamin Larsson
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 */
21
22 /**
23 * @file cookdata.h
24 * Cook AKA RealAudio G2 compatible decoderdata
25 */
26
27 /* various data tables */
28
29 static const int expbits_tab[8] = {
30 52,47,43,37,29,22,16,0,
31 };
32
33 static const float dither_tab[8] = {
34 0.0, 0.0, 0.0, 0.0, 0.0, 0.176777, 0.25, 0.707107,
35 };
36
37 static const float randsign[2] = {1.0, -1.0};
38
39 static const float quant_centroid_tab[7][14] = {
40 { 0.000, 0.392, 0.761, 1.120, 1.477, 1.832, 2.183, 2.541, 2.893, 3.245, 3.598, 3.942, 4.288, 4.724 },
41 { 0.000, 0.544, 1.060, 1.563, 2.068, 2.571, 3.072, 3.562, 4.070, 4.620, 0.000, 0.000, 0.000, 0.000 },
42 { 0.000, 0.746, 1.464, 2.180, 2.882, 3.584, 4.316, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 },
43 { 0.000, 1.006, 2.000, 2.993, 3.985, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 },
44 { 0.000, 1.321, 2.703, 3.983, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 },
45 { 0.000, 1.657, 3.491, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 },
46 { 0.000, 1.964, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000 }
47 };
48
49 static const int invradix_tab[7] = {
50 74899, 104858, 149797, 209716, 262144, 349526, 524288,
51 };
52
53 static const int kmax_tab[7] = {
54 13, 9, 6, 4, 3, 2, 1,
55 };
56
57 static const int vd_tab[7] = {
58 2, 2, 2, 4, 4, 5, 5,
59 };
60
61 static const int vpr_tab[7] = {
62 10, 10, 10, 5, 5, 4, 4,
63 };
64
65
66
67 /* VLC data */
68
69 static const int vhsize_tab[7] = {
70 191, 97, 48, 607, 246, 230, 32,
71 };
72
73 static const int vhvlcsize_tab[7] = {
74 8, 7, 7, 10, 9, 9, 6,
75 };
76
77 static const uint8_t envelope_quant_index_huffbits[13][24] = {
78 { 4, 6, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 4, 5, 7, 8, 9, 11, 11, 12, 12, 12, 12 },
79 { 10, 8, 6, 5, 5, 4, 3, 3, 3, 3, 3, 3, 4, 5, 7, 9, 11, 12, 13, 15, 15, 15, 16, 16 },
80 { 12, 10, 8, 6, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 4, 4, 5, 5, 7, 9, 11, 13, 14, 14 },
81 { 13, 10, 9, 9, 7, 7, 5, 5, 4, 3, 3, 3, 3, 3, 4, 4, 4, 5, 7, 9, 11, 13, 13, 13 },
82 { 12, 13, 10, 8, 6, 6, 5, 5, 4, 4, 3, 3, 3, 3, 3, 4, 5, 5, 6, 7, 9, 11, 14, 14 },
83 { 12, 11, 9, 8, 8, 7, 5, 4, 4, 3, 3, 3, 3, 3, 4, 4, 5, 5, 7, 8, 10, 13, 14, 14 },
84 { 15, 16, 15, 12, 10, 8, 6, 5, 4, 3, 3, 3, 2, 3, 4, 5, 5, 7, 9, 11, 13, 16, 16, 16 },
85 { 14, 14, 11, 10, 9, 7, 7, 5, 5, 4, 3, 3, 2, 3, 3, 4, 5, 7, 9, 9, 12, 14, 15, 15 },
86 { 9, 9, 9, 8, 7, 6, 5, 4, 3, 3, 3, 3, 3, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 13 },
87 { 14, 12, 10, 8, 6, 6, 5, 4, 3, 3, 3, 3, 3, 3, 4, 5, 6, 8, 8, 9, 11, 14, 14, 14 },
88 { 13, 10, 9, 8, 6, 6, 5, 4, 4, 4, 3, 3, 2, 3, 4, 5, 6, 8, 9, 9, 11, 12, 14, 14 },
89 { 16, 13, 12, 11, 9, 6, 5, 5, 4, 4, 4, 3, 2, 3, 3, 4, 5, 7, 8, 10, 14, 16, 16, 16 },
90 { 13, 14, 14, 14, 10, 8, 7, 7, 5, 4, 3, 3, 2, 3, 3, 4, 5, 5, 7, 9, 11, 14, 14, 14 },
91 };
92
93 static const uint16_t envelope_quant_index_huffcodes[13][24] = {
94 {0x0006, 0x003e, 0x001c, 0x001d, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x0000, 0x0001,
95 0x0002, 0x000d, 0x001e, 0x007e, 0x00fe, 0x01fe, 0x07fc, 0x07fd, 0x0ffc, 0x0ffd, 0x0ffe, 0x0fff},
96 {0x03fe, 0x00fe, 0x003e, 0x001c, 0x001d, 0x000c, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005,
97 0x000d, 0x001e, 0x007e, 0x01fe, 0x07fe, 0x0ffe, 0x1ffe, 0x7ffc, 0x7ffd, 0x7ffe, 0xfffe, 0xffff},
98 {0x0ffe, 0x03fe, 0x00fe, 0x003e, 0x001c, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x0000,
99 0x0001, 0x0002, 0x000c, 0x000d, 0x001d, 0x001e, 0x007e, 0x01fe, 0x07fe, 0x1ffe, 0x3ffe, 0x3fff},
100 {0x1ffc, 0x03fe, 0x01fc, 0x01fd, 0x007c, 0x007d, 0x001c, 0x001d, 0x000a, 0x0000, 0x0001, 0x0002,
101 0x0003, 0x0004, 0x000b, 0x000c, 0x000d, 0x001e, 0x007e, 0x01fe, 0x07fe, 0x1ffd, 0x1ffe, 0x1fff},
102 {0x0ffe, 0x1ffe, 0x03fe, 0x00fe, 0x003c, 0x003d, 0x001a, 0x001b, 0x000a, 0x000b, 0x0000, 0x0001,
103 0x0002, 0x0003, 0x0004, 0x000c, 0x001c, 0x001d, 0x003e, 0x007e, 0x01fe, 0x07fe, 0x3ffe, 0x3fff},
104 {0x0ffe, 0x07fe, 0x01fe, 0x00fc, 0x00fd, 0x007c, 0x001c, 0x000a, 0x000b, 0x0000, 0x0001, 0x0002,
105 0x0003, 0x0004, 0x000c, 0x000d, 0x001d, 0x001e, 0x007d, 0x00fe, 0x03fe, 0x1ffe, 0x3ffe, 0x3fff},
106 {0x7ffc, 0xfffc, 0x7ffd, 0x0ffe, 0x03fe, 0x00fe, 0x003e, 0x001c, 0x000c, 0x0002, 0x0003, 0x0004,
107 0x0000, 0x0005, 0x000d, 0x001d, 0x001e, 0x007e, 0x01fe, 0x07fe, 0x1ffe, 0xfffd, 0xfffe, 0xffff},
108 {0x3ffc, 0x3ffd, 0x07fe, 0x03fe, 0x01fc, 0x007c, 0x007d, 0x001c, 0x001d, 0x000c, 0x0002, 0x0003,
109 0x0000, 0x0004, 0x0005, 0x000d, 0x001e, 0x007e, 0x01fd, 0x01fe, 0x0ffe, 0x3ffe, 0x7ffe, 0x7fff},
110 {0x01fc, 0x01fd, 0x01fe, 0x00fc, 0x007c, 0x003c, 0x001c, 0x000c, 0x0000, 0x0001, 0x0002, 0x0003,
111 0x0004, 0x0005, 0x000d, 0x001d, 0x003d, 0x007d, 0x00fd, 0x03fe, 0x07fe, 0x0ffe, 0x1ffe, 0x1fff},
112 {0x3ffc, 0x0ffe, 0x03fe, 0x00fc, 0x003c, 0x003d, 0x001c, 0x000c, 0x0000, 0x0001, 0x0002, 0x0003,
113 0x0004, 0x0005, 0x000d, 0x001d, 0x003e, 0x00fd, 0x00fe, 0x01fe, 0x07fe, 0x3ffd, 0x3ffe, 0x3fff},
114 {0x1ffe, 0x03fe, 0x01fc, 0x00fc, 0x003c, 0x003d, 0x001c, 0x000a, 0x000b, 0x000c, 0x0002, 0x0003,
115 0x0000, 0x0004, 0x000d, 0x001d, 0x003e, 0x00fd, 0x01fd, 0x01fe, 0x07fe, 0x0ffe, 0x3ffe, 0x3fff},
116 {0xfffc, 0x1ffe, 0x0ffe, 0x07fe, 0x01fe, 0x003e, 0x001c, 0x001d, 0x000a, 0x000b, 0x000c, 0x0002,
117 0x0000, 0x0003, 0x0004, 0x000d, 0x001e, 0x007e, 0x00fe, 0x03fe, 0x3ffe, 0xfffd, 0xfffe, 0xffff},
118 {0x1ffc, 0x3ffa, 0x3ffb, 0x3ffc, 0x03fe, 0x00fe, 0x007c, 0x007d, 0x001c, 0x000c, 0x0002, 0x0003,
119 0x0000, 0x0004, 0x0005, 0x000d, 0x001d, 0x001e, 0x007e, 0x01fe, 0x07fe, 0x3ffd, 0x3ffe, 0x3fff},
120 };
121
122
123 static const uint8_t cvh_huffbits0[191] = {
124 1, 4, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10,
125 11, 11, 4, 5, 6, 7, 7, 8, 8, 9, 9, 9,
126 9, 10, 11, 11, 5, 6, 7, 8, 8, 9, 9, 9,
127 9, 10, 10, 10, 11, 12, 6, 7, 8, 9, 9, 9,
128 9, 10, 10, 10, 10, 11, 12, 13, 7, 7, 8, 9,
129 9, 9, 10, 10, 10, 10, 11, 11, 12, 13, 8, 8,
130 9, 9, 9, 10, 10, 10, 10, 11, 11, 12, 13, 14,
131 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13,
132 13, 15, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12,
133 12, 13, 14, 15, 9, 9, 9, 10, 10, 10, 11, 11,
134 12, 13, 12, 14, 15, 16, 9, 9, 10, 10, 10, 10,
135 11, 12, 12, 14, 14, 16, 16, 0, 9, 9, 10, 10,
136 11, 11, 12, 13, 13, 14, 14, 15, 0, 0, 10, 10,
137 10, 11, 11, 12, 12, 13, 15, 15, 16, 0, 0, 0,
138 11, 11, 11, 12, 13, 13, 13, 15, 16, 16, 0, 0,
139 0, 0, 11, 11, 12, 13, 13, 14, 15, 16, 16,
140 };
141
142 static const uint16_t cvh_huffcodes0[191] = {
143 0x0000,0x0008,0x002c,0x002d,0x0062,0x0063,0x00d4,0x00d5,0x00d6,0x01c6,0x01c7,0x03ca,
144 0x07d6,0x07d7,0x0009,0x0014,0x002e,0x0064,0x0065,0x00d7,0x00d8,0x01c8,0x01c9,0x01ca,
145 0x01cb,0x03cb,0x07d8,0x07d9,0x0015,0x002f,0x0066,0x00d9,0x00da,0x01cc,0x01cd,0x01ce,
146 0x01cf,0x03cc,0x03cd,0x03ce,0x07da,0x0fe4,0x0030,0x0067,0x00db,0x01d0,0x01d1,0x01d2,
147 0x01d3,0x03cf,0x03d0,0x03d1,0x03d2,0x07db,0x0fe5,0x1fea,0x0068,0x0069,0x00dc,0x01d4,
148 0x01d5,0x01d6,0x03d3,0x03d4,0x03d5,0x03d6,0x07dc,0x07dd,0x0fe6,0x1feb,0x00dd,0x00de,
149 0x01d7,0x01d8,0x01d9,0x03d7,0x03d8,0x03d9,0x03da,0x07de,0x07df,0x0fe7,0x1fec,0x3ff2,
150 0x00df,0x00e0,0x01da,0x01db,0x03db,0x03dc,0x07e0,0x07e1,0x07e2,0x0fe8,0x0fe9,0x1fed,
151 0x1fee,0x7ff4,0x00e1,0x00e2,0x01dc,0x01dd,0x03dd,0x03de,0x07e3,0x07e4,0x07e5,0x0fea,
152 0x0feb,0x1fef,0x3ff3,0x7ff5,0x01de,0x01df,0x01e0,0x03df,0x03e0,0x03e1,0x07e6,0x07e7,
153 0x0fec,0x1ff0,0x0fed,0x3ff4,0x7ff6,0xfff8,0x01e1,0x01e2,0x03e2,0x03e3,0x03e4,0x03e5,
154 0x07e8,0x0fee,0x0fef,0x3ff5,0x3ff6,0xfff9,0xfffa,0xfffa,0x01e3,0x01e4,0x03e6,0x03e7,
155 0x07e9,0x07ea,0x0ff0,0x1ff1,0x1ff2,0x3ff7,0x3ff8,0x7ff7,0x7ff7,0xfffa,0x03e8,0x03e9,
156 0x03ea,0x07eb,0x07ec,0x0ff1,0x0ff2,0x1ff3,0x7ff8,0x7ff9,0xfffb,0x3ff8,0x7ff7,0x7ff7,
157 0x07ed,0x07ee,0x07ef,0x0ff3,0x1ff4,0x1ff5,0x1ff6,0x7ffa,0xfffc,0xfffd,0xfffb,0xfffb,
158 0x3ff8,0x7ff7,0x07f0,0x07f1,0x0ff4,0x1ff7,0x1ff8,0x3ff9,0x7ffb,0xfffe,0xffff,
159 };
160
161
162 static const uint8_t cvh_huffbits1[97] = {
163 1, 4, 5, 6, 7, 8, 8, 9, 10, 10, 4, 5,
164 6, 7, 7, 8, 8, 9, 9, 11, 5, 5, 6, 7,
165 8, 8, 9, 9, 10, 11, 6, 6, 7, 8, 8, 9,
166 9, 10, 11, 12, 7, 7, 8, 8, 9, 9, 10, 11,
167 11, 13, 8, 8, 8, 9, 9, 10, 10, 11, 12, 14,
168 8, 8, 8, 9, 10, 11, 11, 12, 13, 15, 9, 9,
169 9, 10, 11, 12, 12, 14, 14, 0, 9, 9, 9, 10,
170 11, 12, 14, 16, 0, 0, 10, 10, 11, 12, 13, 14,
171 16,
172 };
173
174
175 static const uint16_t cvh_huffcodes1[97] = {
176 0x0000,0x0008,0x0014,0x0030,0x006a,0x00e2,0x00e3,0x01e4,0x03ec,0x03ed,0x0009,0x0015,
177 0x0031,0x006b,0x006c,0x00e4,0x00e5,0x01e5,0x01e6,0x07f0,0x0016,0x0017,0x0032,0x006d,
178 0x00e6,0x00e7,0x01e7,0x01e8,0x03ee,0x07f1,0x0033,0x0034,0x006e,0x00e8,0x00e9,0x01e9,
179 0x01ea,0x03ef,0x07f2,0x0ff6,0x006f,0x0070,0x00ea,0x00eb,0x01eb,0x01ec,0x03f0,0x07f3,
180 0x07f4,0x1ffa,0x00ec,0x00ed,0x00ee,0x01ed,0x01ee,0x03f1,0x03f2,0x07f5,0x0ff7,0x3ffa,
181 0x00ef,0x00f0,0x00f1,0x01ef,0x03f3,0x07f6,0x07f7,0x0ff8,0x1ffb,0x7ffe,0x01f0,0x01f1,
182 0x01f2,0x03f4,0x07f8,0x0ff9,0x0ffa,0x3ffb,0x3ffc,0x0000,0x01f3,0x01f4,0x01f5,0x03f5,
183 0x07f9,0x0ffb,0x3ffd,0xfffe,0x0000,0x0000,0x03f6,0x03f7,0x07fa,0x0ffc,0x1ffc,0x3ffe,
184 0xffff,
185 };
186
187 static const uint8_t cvh_huffbits2[48] = {
188 1, 4, 5, 7, 8, 9, 10, 3, 4, 5, 7, 8,
189 9, 10, 5, 5, 6, 7, 8, 10, 10, 7, 6, 7,
190 8, 9, 10, 12, 8, 8, 8, 9, 10, 12, 14, 8,
191 9, 9, 10, 11, 15, 16, 9, 10, 11, 12, 13, 16,
192 };
193
194 static const uint16_t cvh_huffcodes2[48] = {
195 0x0000,0x000a,0x0018,0x0074,0x00f2,0x01f4,0x03f6,0x0004,0x000b,0x0019,0x0075,0x00f3,
196 0x01f5,0x03f7,0x001a,0x001b,0x0038,0x0076,0x00f4,0x03f8,0x03f9,0x0077,0x0039,0x0078,
197 0x00f5,0x01f6,0x03fa,0x0ffc,0x00f6,0x00f7,0x00f8,0x01f7,0x03fb,0x0ffd,0x3ffe,0x00f9,
198 0x01f8,0x01f9,0x03fc,0x07fc,0x7ffe,0xfffe,0x01fa,0x03fd,0x07fd,0x0ffe,0x1ffe,0xffff,
199 };
200
201 static const uint8_t cvh_huffbits3[607] = {
202 2, 4, 6, 8, 10, 5, 5, 6, 8, 10, 7, 8,
203 8, 10, 12, 9, 9, 10, 12, 15, 10, 11, 13, 16,
204 16, 5, 6, 8, 10, 11, 5, 6, 8, 10, 12, 7,
205 7, 8, 10, 13, 9, 9, 10, 12, 15, 12, 11, 13,
206 16, 16, 7, 9, 10, 12, 15, 7, 8, 10, 12, 13,
207 9, 9, 11, 13, 16, 11, 11, 12, 14, 16, 12, 12,
208 14, 16, 0, 9, 11, 12, 16, 16, 9, 10, 13, 15,
209 16, 10, 11, 12, 16, 16, 13, 13, 16, 16, 16, 16,
210 16, 15, 16, 0, 11, 13, 16, 16, 15, 11, 13, 15,
211 16, 16, 13, 13, 16, 16, 0, 14, 16, 16, 16, 0,
212 16, 16, 0, 0, 0, 4, 6, 8, 10, 13, 6, 6,
213 8, 10, 13, 9, 8, 10, 12, 16, 10, 10, 11, 15,
214 16, 13, 12, 14, 16, 16, 5, 6, 8, 11, 13, 6,
215 6, 8, 10, 13, 8, 8, 9, 11, 14, 10, 10, 12,
216 12, 16, 13, 12, 13, 15, 16, 7, 8, 9, 12, 16,
217 7, 8, 10, 12, 14, 9, 9, 10, 13, 16, 11, 10,
218 12, 15, 16, 13, 13, 16, 16, 0, 9, 11, 13, 16,
219 16, 9, 10, 12, 15, 16, 10, 11, 13, 16, 16, 13,
220 12, 16, 16, 16, 16, 16, 16, 16, 0, 11, 13, 16,
221 16, 16, 11, 13, 16, 16, 16, 12, 13, 15, 16, 0,
222 16, 16, 16, 16, 0, 16, 16, 0, 0, 0, 6, 8,
223 11, 13, 16, 8, 8, 10, 12, 16, 11, 10, 11, 13,
224 16, 12, 13, 13, 15, 16, 16, 16, 14, 16, 0, 6,
225 8, 10, 13, 16, 8, 8, 10, 12, 16, 10, 10, 11,
226 13, 16, 13, 12, 13, 16, 16, 14, 14, 14, 16, 0,
227 8, 9, 11, 13, 16, 8, 9, 11, 16, 14, 10, 10,
228 12, 15, 16, 12, 12, 13, 16, 16, 15, 16, 16, 16,
229 0, 10, 12, 15, 16, 16, 10, 12, 12, 14, 16, 12,
230 12, 13, 16, 16, 14, 15, 16, 16, 0, 16, 16, 16,
231 0, 0, 12, 15, 15, 16, 0, 13, 13, 16, 16, 0,
232 14, 16, 16, 16, 0, 16, 16, 16, 0, 0, 0, 0,
233 0, 0, 0, 8, 10, 13, 15, 16, 10, 11, 13, 16,
234 16, 13, 13, 14, 16, 16, 16, 16, 16, 16, 16, 16,
235 16, 16, 16, 0, 8, 10, 11, 15, 16, 9, 10, 12,
236 16, 16, 12, 12, 15, 16, 16, 16, 14, 16, 16, 16,
237 16, 16, 16, 16, 0, 9, 11, 14, 16, 16, 10, 11,
238 13, 16, 16, 14, 13, 14, 16, 16, 16, 15, 15, 16,
239 0, 16, 16, 16, 0, 0, 11, 13, 16, 16, 16, 11,
240 13, 15, 16, 16, 13, 16, 16, 16, 0, 16, 16, 16,
241 16, 0, 16, 16, 0, 0, 0, 15, 16, 16, 16, 0,
242 14, 16, 16, 16, 0, 16, 16, 16, 0, 0, 16, 16,
243 0, 0, 0, 0, 0, 0, 0, 0, 9, 13, 16, 16,
244 16, 11, 13, 16, 16, 16, 14, 15, 16, 16, 0, 15,
245 16, 16, 16, 0, 16, 16, 0, 0, 0, 9, 13, 15,
246 15, 16, 12, 13, 14, 16, 16, 16, 15, 16, 16, 0,
247 16, 16, 16, 16, 0, 16, 16, 0, 0, 0, 11, 13,
248 15, 16, 0, 12, 14, 16, 16, 0, 16, 16, 16, 16,
249 0, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 16,
250 16, 16, 16, 0, 16, 16, 16, 16, 0, 16, 16, 16,
251 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0,
252 16, 16, 0, 0, 0, 16, 16,
253 };
254
255
256 static const uint16_t cvh_huffcodes3[607] = {
257 0x0000,0x0004,0x0022,0x00c6,0x03b0,0x000c,0x000d,0x0023,0x00c7,0x03b1,0x005c,0x00c8,
258 0x00c9,0x03b2,0x0fa4,0x01c2,0x01c3,0x03b3,0x0fa5,0x7f72,0x03b4,0x07b2,0x1f9a,0xff24,
259 0xff25,0x000e,0x0024,0x00ca,0x03b5,0x07b3,0x000f,0x0025,0x00cb,0x03b6,0x0fa6,0x005d,
260 0x005e,0x00cc,0x03b7,0x1f9b,0x01c4,0x01c5,0x03b8,0x0fa7,0x7f73,0x0fa8,0x07b4,0x1f9c,
261 0xff26,0xff27,0x005f,0x01c6,0x03b9,0x0fa9,0x7f74,0x0060,0x00cd,0x03ba,0x0faa,0x1f9d,
262 0x01c7,0x01c8,0x07b5,0x1f9e,0xff28,0x07b6,0x07b7,0x0fab,0x3fa2,0xff29,0x0fac,0x0fad,
263 0x3fa3,0xff2a,0x3fa2,0x01c9,0x07b8,0x0fae,0xff2b,0xff2c,0x01ca,0x03bb,0x1f9f,0x7f75,
264 0xff2d,0x03bc,0x07b9,0x0faf,0xff2e,0xff2f,0x1fa0,0x1fa1,0xff30,0xff31,0xff32,0xff33,
265 0xff34,0x7f76,0xff35,0xff31,0x07ba,0x1fa2,0xff36,0xff37,0x7f77,0x07bb,0x1fa3,0x7f78,
266 0xff38,0xff39,0x1fa4,0x1fa5,0xff3a,0xff3b,0xff2e,0x3fa4,0xff3c,0xff3d,0xff3e,0xff31,
267 0xff3f,0xff40,0xff30,0xff31,0xff31,0x0005,0x0026,0x00ce,0x03bd,0x1fa6,0x0027,0x0028,
268 0x00cf,0x03be,0x1fa7,0x01cb,0x00d0,0x03bf,0x0fb0,0xff41,0x03c0,0x03c1,0x07bc,0x7f79,
269 0xff42,0x1fa8,0x0fb1,0x3fa5,0xff43,0xff44,0x0010,0x0029,0x00d1,0x07bd,0x1fa9,0x002a,
270 0x002b,0x00d2,0x03c2,0x1faa,0x00d3,0x00d4,0x01cc,0x07be,0x3fa6,0x03c3,0x03c4,0x0fb2,
271 0x0fb3,0xff45,0x1fab,0x0fb4,0x1fac,0x7f7a,0xff46,0x0061,0x00d5,0x01cd,0x0fb5,0xff47,
272 0x0062,0x00d6,0x03c5,0x0fb6,0x3fa7,0x01ce,0x01cf,0x03c6,0x1fad,0xff48,0x07bf,0x03c7,
273 0x0fb7,0x7f7b,0xff49,0x1fae,0x1faf,0xff4a,0xff4b,0x7f7b,0x01d0,0x07c0,0x1fb0,0xff4c,
274 0xff4d,0x01d1,0x03c8,0x0fb8,0x7f7c,0xff4e,0x03c9,0x07c1,0x1fb1,0xff4f,0xff50,0x1fb2,
275 0x0fb9,0xff51,0xff52,0xff53,0xff54,0xff55,0xff56,0xff57,0xff52,0x07c2,0x1fb3,0xff58,
276 0xff59,0xff5a,0x07c3,0x1fb4,0xff5b,0xff5c,0xff5d,0x0fba,0x1fb5,0x7f7d,0xff5e,0xff4f,
277 0xff5f,0xff60,0xff61,0xff62,0xff52,0xff63,0xff64,0xff51,0xff52,0xff52,0x002c,0x00d7,
278 0x07c4,0x1fb6,0xff65,0x00d8,0x00d9,0x03ca,0x0fbb,0xff66,0x07c5,0x03cb,0x07c6,0x1fb7,
279 0xff67,0x0fbc,0x1fb8,0x1fb9,0x7f7e,0xff68,0xff69,0xff6a,0x3fa8,0xff6b,0x7f7e,0x002d,
280 0x00da,0x03cc,0x1fba,0xff6c,0x00db,0x00dc,0x03cd,0x0fbd,0xff6d,0x03ce,0x03cf,0x07c7,
281 0x1fbb,0xff6e,0x1fbc,0x0fbe,0x1fbd,0xff6f,0xff70,0x3fa9,0x3faa,0x3fab,0xff71,0xff6f,
282 0x00dd,0x01d2,0x07c8,0x1fbe,0xff72,0x00de,0x01d3,0x07c9,0xff73,0x3fac,0x03d0,0x03d1,
283 0x0fbf,0x7f7f,0xff74,0x0fc0,0x0fc1,0x1fbf,0xff75,0xff76,0x7f80,0xff77,0xff78,0xff79,
284 0xff75,0x03d2,0x0fc2,0x7f81,0xff7a,0xff7b,0x03d3,0x0fc3,0x0fc4,0x3fad,0xff7c,0x0fc5,
285 0x0fc6,0x1fc0,0xff7d,0xff7e,0x3fae,0x7f82,0xff7f,0xff80,0xff80,0xff81,0xff82,0xff83,
286 0xff80,0xff80,0x0fc7,0x7f83,0x7f84,0xff84,0xff7a,0x1fc1,0x1fc2,0xff85,0xff86,0x3fad,
287 0x3faf,0xff87,0xff88,0xff89,0xff7d,0xff8a,0xff8b,0xff8c,0xff80,0xff80,0x3fae,0x7f82,
288 0xff7f,0xff80,0xff80,0x00df,0x03d4,0x1fc3,0x7f85,0xff8d,0x03d5,0x07ca,0x1fc4,0xff8e,
289 0xff8f,0x1fc5,0x1fc6,0x3fb0,0xff90,0xff91,0xff92,0xff93,0xff94,0xff95,0xff96,0xff97,
290 0xff98,0xff99,0xff9a,0xff95,0x00e0,0x03d6,0x07cb,0x7f86,0xff9b,0x01d4,0x03d7,0x0fc8,
291 0xff9c,0xff9d,0x0fc9,0x0fca,0x7f87,0xff9e,0xff9f,0xffa0,0x3fb1,0xffa1,0xffa2,0xffa3,
292 0xffa4,0xffa5,0xffa6,0xffa7,0xffa2,0x01d5,0x07cc,0x3fb2,0xffa8,0xffa9,0x03d8,0x07cd,
293 0x1fc7,0xffaa,0xffab,0x3fb3,0x1fc8,0x3fb4,0xffac,0xffad,0xffae,0x7f88,0x7f89,0xffaf,
294 0xffaf,0xffb0,0xffb1,0xffb2,0xffaf,0xffaf,0x07ce,0x1fc9,0xffb3,0xffb4,0xffb5,0x07cf,
295 0x1fca,0x7f8a,0xffb6,0xffb7,0x1fcb,0xffb8,0xffb9,0xffba,0xffba,0xffbb,0xffbc,0xffbd,
296 0xffbe,0xffbe,0xffbf,0xffc0,0xffbd,0xffbe,0xffbe,0x7f8b,0xffc1,0xffc2,0xffc3,0xffb4,
297 0x3fb5,0xffc4,0xffc5,0xffc6,0xffb6,0xffc7,0xffc8,0xffc9,0xffba,0xffba,0xffca,0xffcb,
298 0xffbd,0xffbe,0xffbe,0xffbb,0xffbc,0xffbd,0xffbe,0xffbe,0x01d6,0x1fcc,0xffcc,0xffcd,
299 0xffce,0x07d0,0x1fcd,0xffcf,0xffd0,0xffd1,0x3fb6,0x7f8c,0xffd2,0xffd3,0xff90,0x7f8d,
300 0xffd4,0xffd5,0xffd6,0xff95,0xffd7,0xffd8,0xff94,0xff95,0xff95,0x01d7,0x1fce,0x7f8e,
301 0x7f8f,0xffd9,0x0fcb,0x1fcf,0x3fb7,0xffda,0xffdb,0xffdc,0x7f90,0xffdd,0xffde,0xff9e,
302 0xffdf,0xffe0,0xffe1,0xffe2,0xffa2,0xffe3,0xffe4,0xffa1,0xffa2,0xffa2,0x07d1,0x1fd0,
303 0x7f91,0xffe5,0xffa8,0x0fcc,0x3fb8,0xffe6,0xffe7,0xffaa,0xffe8,0xffe9,0xffea,0xffeb,
304 0xffac,0xffec,0xffed,0xffee,0xffaf,0xffaf,0xffae,0x7f88,0x7f89,0xffaf,0xffaf,0xffef,
305 0xfff0,0xfff1,0xfff2,0xffb4,0xfff3,0xfff4,0xfff5,0xfff6,0xffb6,0xfff7,0xfff8,0xfff9,
306 0xffba,0xffba,0xfffa,0xfffb,0xffbd,0xffbe,0xffbe,0xffbb,0xffbc,0xffbd,0xffbe,0xffbe,
307 0xfffc,0xfffd,0xffb3,0xffb4,0xffb4,0xfffe,0xffff,
308 };
309
310 static const uint8_t cvh_huffbits4[246] = {
311 2, 4, 7, 10, 4, 5, 7, 10, 7, 8, 10, 14,
312 11, 11, 15, 15, 4, 5, 9, 12, 5, 5, 8, 12,
313 8, 7, 10, 15, 11, 11, 15, 15, 7, 9, 12, 15,
314 8, 8, 12, 15, 10, 10, 13, 15, 14, 14, 15, 0,
315 11, 13, 15, 15, 11, 13, 15, 15, 14, 15, 15, 0,
316 15, 15, 0, 0, 4, 5, 9, 13, 5, 6, 9, 13,
317 9, 9, 11, 15, 14, 13, 15, 15, 4, 6, 9, 12,
318 5, 6, 9, 13, 9, 8, 11, 15, 13, 12, 15, 15,
319 7, 9, 12, 15, 7, 8, 11, 15, 10, 10, 14, 15,
320 14, 15, 15, 0, 10, 12, 15, 15, 11, 13, 15, 15,
321 15, 15, 15, 0, 15, 15, 0, 0, 6, 9, 13, 14,
322 8, 9, 12, 15, 12, 12, 15, 15, 15, 15, 15, 0,
323 7, 9, 13, 15, 8, 9, 12, 15, 11, 12, 15, 15,
324 15, 15, 15, 0, 9, 11, 15, 15, 9, 11, 15, 15,
325 14, 14, 15, 0, 15, 15, 0, 0, 14, 15, 15, 0,
326 14, 15, 15, 0, 15, 15, 0, 0, 0, 0, 0, 0,
327 9, 12, 15, 15, 12, 13, 15, 15, 15, 15, 15, 0,
328 15, 15, 0, 0, 10, 12, 15, 15, 12, 14, 15, 15,
329 15, 15, 15, 0, 15, 15, 0, 0, 14, 15, 15, 0,
330 15, 15, 15, 0, 15, 15, 0, 0, 0, 0, 0, 0,
331 15, 15, 0, 0, 15, 15,
332 };
333
334
335 static const uint16_t cvh_huffcodes4[246] = {
336 0x0000,0x0004,0x006c,0x03e6,0x0005,0x0012,0x006d,0x03e7,0x006e,0x00e8,0x03e8,0x3fc4,
337 0x07e0,0x07e1,0x7fa4,0x7fa5,0x0006,0x0013,0x01e2,0x0fda,0x0014,0x0015,0x00e9,0x0fdb,
338 0x00ea,0x006f,0x03e9,0x7fa6,0x07e2,0x07e3,0x7fa7,0x7fa8,0x0070,0x01e3,0x0fdc,0x7fa9,
339 0x00eb,0x00ec,0x0fdd,0x7faa,0x03ea,0x03eb,0x1fd6,0x7fab,0x3fc5,0x3fc6,0x7fac,0x1fd6,
340 0x07e4,0x1fd7,0x7fad,0x7fae,0x07e5,0x1fd8,0x7faf,0x7fb0,0x3fc7,0x7fb1,0x7fb2,0x1fd6,
341 0x7fb3,0x7fb4,0x1fd6,0x1fd6,0x0007,0x0016,0x01e4,0x1fd9,0x0017,0x0032,0x01e5,0x1fda,
342 0x01e6,0x01e7,0x07e6,0x7fb5,0x3fc8,0x1fdb,0x7fb6,0x7fb7,0x0008,0x0033,0x01e8,0x0fde,
343 0x0018,0x0034,0x01e9,0x1fdc,0x01ea,0x00ed,0x07e7,0x7fb8,0x1fdd,0x0fdf,0x7fb9,0x7fba,
344 0x0071,0x01eb,0x0fe0,0x7fbb,0x0072,0x00ee,0x07e8,0x7fbc,0x03ec,0x03ed,0x3fc9,0x7fbd,
345 0x3fca,0x7fbe,0x7fbf,0x3fc9,0x03ee,0x0fe1,0x7fc0,0x7fc1,0x07e9,0x1fde,0x7fc2,0x7fc3,
346 0x7fc4,0x7fc5,0x7fc6,0x3fc9,0x7fc7,0x7fc8,0x3fc9,0x3fc9,0x0035,0x01ec,0x1fdf,0x3fcb,
347 0x00ef,0x01ed,0x0fe2,0x7fc9,0x0fe3,0x0fe4,0x7fca,0x7fcb,0x7fcc,0x7fcd,0x7fce,0x7fca,
348 0x0073,0x01ee,0x1fe0,0x7fcf,0x00f0,0x01ef,0x0fe5,0x7fd0,0x07ea,0x0fe6,0x7fd1,0x7fd2,
349 0x7fd3,0x7fd4,0x7fd5,0x7fd1,0x01f0,0x07eb,0x7fd6,0x7fd7,0x01f1,0x07ec,0x7fd8,0x7fd9,
350 0x3fcc,0x3fcd,0x7fda,0x7fda,0x7fdb,0x7fdc,0x7fda,0x7fda,0x3fce,0x7fdd,0x7fde,0x7fd6,
351 0x3fcf,0x7fdf,0x7fe0,0x7fd8,0x7fe1,0x7fe2,0x7fda,0x7fda,0x3fcc,0x3fcd,0x7fda,0x7fda,
352 0x01f2,0x0fe7,0x7fe3,0x7fe4,0x0fe8,0x1fe1,0x7fe5,0x7fe6,0x7fe7,0x7fe8,0x7fe9,0x7fca,
353 0x7fea,0x7feb,0x7fca,0x7fca,0x03ef,0x0fe9,0x7fec,0x7fed,0x0fea,0x3fd0,0x7fee,0x7fef,
354 0x7ff0,0x7ff1,0x7ff2,0x7fd1,0x7ff3,0x7ff4,0x7fd1,0x7fd1,0x3fd1,0x7ff5,0x7ff6,0x7fd6,
355 0x7ff7,0x7ff8,0x7ff9,0x7fd8,0x7ffa,0x7ffb,0x7fda,0x7fda,0x3fcc,0x3fcd,0x7fda,0x7fda,
356 0x7ffc,0x7ffd,0x7fd6,0x7fd6,0x7ffe,0x7fff,
357 };
358
359
360 static const uint8_t cvh_huffbits5[230] = {
361 2, 4, 8, 4, 5, 9, 9, 10, 14, 4, 6, 11,
362 5, 6, 12, 10, 11, 15, 9, 11, 15, 10, 13, 15,
363 14, 15, 0, 4, 6, 12, 6, 7, 12, 12, 12, 15,
364 5, 7, 13, 6, 7, 13, 12, 13, 15, 10, 12, 15,
365 11, 13, 15, 15, 15, 0, 8, 13, 15, 11, 12, 15,
366 15, 15, 0, 10, 13, 15, 12, 15, 15, 15, 15, 0,
367 15, 15, 0, 15, 15, 0, 0, 0, 0, 4, 5, 11,
368 5, 7, 12, 11, 12, 15, 6, 7, 13, 7, 8, 14,
369 12, 14, 15, 11, 13, 15, 12, 13, 15, 15, 15, 0,
370 5, 6, 13, 7, 8, 15, 12, 14, 15, 6, 8, 14,
371 7, 8, 15, 14, 15, 15, 12, 12, 15, 12, 13, 15,
372 15, 15, 0, 9, 13, 15, 12, 13, 15, 15, 15, 0,
373 11, 13, 15, 13, 13, 15, 15, 15, 0, 14, 15, 0,
374 15, 15, 0, 0, 0, 0, 8, 10, 15, 11, 12, 15,
375 15, 15, 0, 10, 12, 15, 12, 13, 15, 15, 15, 0,
376 14, 15, 0, 15, 15, 0, 0, 0, 0, 8, 12, 15,
377 12, 13, 15, 15, 15, 0, 11, 13, 15, 13, 15, 15,
378 15, 15, 0, 15, 15, 0, 15, 15, 0, 0, 0, 0,
379 14, 15, 0, 15, 15, 0, 0, 0, 0, 15, 15, 0,
380 15, 15,
381 };
382
383
384
385 static const uint16_t cvh_huffcodes5[230] = {
386 0x0000,0x0004,0x00f0,0x0005,0x0012,0x01f0,0x01f1,0x03e8,0x3fce,0x0006,0x0030,0x07de,
387 0x0013,0x0031,0x0fd2,0x03e9,0x07df,0x7fb0,0x01f2,0x07e0,0x7fb1,0x03ea,0x1fd2,0x7fb2,
388 0x3fcf,0x7fb3,0x0031,0x0007,0x0032,0x0fd3,0x0033,0x0070,0x0fd4,0x0fd5,0x0fd6,0x7fb4,
389 0x0014,0x0071,0x1fd3,0x0034,0x0072,0x1fd4,0x0fd7,0x1fd5,0x7fb5,0x03eb,0x0fd8,0x7fb6,
390 0x07e1,0x1fd6,0x7fb7,0x7fb8,0x7fb9,0x0072,0x00f1,0x1fd7,0x7fba,0x07e2,0x0fd9,0x7fbb,
391 0x7fbc,0x7fbd,0x0070,0x03ec,0x1fd8,0x7fbe,0x0fda,0x7fbf,0x7fc0,0x7fc1,0x7fc2,0x0072,
392 0x7fc3,0x7fc4,0x0071,0x7fc5,0x7fc6,0x0072,0x0034,0x0072,0x0072,0x0008,0x0015,0x07e3,
393 0x0016,0x0073,0x0fdb,0x07e4,0x0fdc,0x7fc7,0x0035,0x0074,0x1fd9,0x0075,0x00f2,0x3fd0,
394 0x0fdd,0x3fd1,0x7fc8,0x07e5,0x1fda,0x7fc9,0x0fde,0x1fdb,0x7fca,0x7fcb,0x7fcc,0x00f2,
395 0x0017,0x0036,0x1fdc,0x0076,0x00f3,0x7fcd,0x0fdf,0x3fd2,0x7fce,0x0037,0x00f4,0x3fd3,
396 0x0077,0x00f5,0x7fcf,0x3fd4,0x7fd0,0x7fd1,0x0fe0,0x0fe1,0x7fd2,0x0fe2,0x1fdd,0x7fd3,
397 0x7fd4,0x7fd5,0x00f5,0x01f3,0x1fde,0x7fd6,0x0fe3,0x1fdf,0x7fd7,0x7fd8,0x7fd9,0x00f3,
398 0x07e6,0x1fe0,0x7fda,0x1fe1,0x1fe2,0x7fdb,0x7fdc,0x7fdd,0x00f5,0x3fd5,0x7fde,0x00f4,
399 0x7fdf,0x7fe0,0x00f5,0x0077,0x00f5,0x00f5,0x00f6,0x03ed,0x7fe1,0x07e7,0x0fe4,0x7fe2,
400 0x7fe3,0x7fe4,0x0073,0x03ee,0x0fe5,0x7fe5,0x0fe6,0x1fe3,0x7fe6,0x7fe7,0x7fe8,0x00f2,
401 0x3fd6,0x7fe9,0x0074,0x7fea,0x7feb,0x00f2,0x0075,0x00f2,0x00f2,0x00f7,0x0fe7,0x7fec,
402 0x0fe8,0x1fe4,0x7fed,0x7fee,0x7fef,0x00f3,0x07e8,0x1fe5,0x7ff0,0x1fe6,0x7ff1,0x7ff2,
403 0x7ff3,0x7ff4,0x00f5,0x7ff5,0x7ff6,0x00f4,0x7ff7,0x7ff8,0x00f5,0x0077,0x00f5,0x00f5,
404 0x3fd7,0x7ff9,0x0036,0x7ffa,0x7ffb,0x00f3,0x0076,0x00f3,0x00f3,0x7ffc,0x7ffd,0x0000,
405 0x7ffe,0x7fff,
406 };
407
408
409 static const uint8_t cvh_huffbits6[32] = {
410 1, 4, 4, 6, 4, 6, 6, 8, 4, 6, 6, 8,
411 6, 9, 8, 10, 4, 6, 7, 8, 6, 9, 8, 11,
412 6, 9, 8, 10, 8, 10, 9, 11,
413 };
414
415 static const uint16_t cvh_huffcodes6[32] = {
416 0x0000,0x0008,0x0009,0x0034,0x000a,0x0035,0x0036,0x00f6,0x000b,0x0037,0x0038,0x00f7,
417 0x0039,0x01fa,0x00f8,0x03fc,0x000c,0x003a,0x007a,0x00f9,0x003b,0x01fb,0x00fa,0x07fe,
418 0x003c,0x01fc,0x00fb,0x03fd,0x00fc,0x03fe,0x01fd,0x07ff,
419 };
420
421 static const uint16_t* cvh_huffcodes[7] = {
422 cvh_huffcodes0, cvh_huffcodes1, cvh_huffcodes2, cvh_huffcodes3,
423 cvh_huffcodes4, cvh_huffcodes5, cvh_huffcodes6,
424 };
425
426 static const uint8_t* cvh_huffbits[7] = {
427 cvh_huffbits0, cvh_huffbits1, cvh_huffbits2, cvh_huffbits3,
428 cvh_huffbits4, cvh_huffbits5, cvh_huffbits6,
429 };
430
431
432 static const uint16_t ccpl_huffcodes2[3] = {
433 0x02,0x00,0x03,
434 };
435
436 static const uint16_t ccpl_huffcodes3[7] = {
437 0x3e,0x1e,0x02,0x00,0x06,0x0e,0x3f,
438 };
439
440 static const uint16_t ccpl_huffcodes4[15] = {
441 0xfc,0xfd,0x7c,0x3c,0x1c,0x0c,0x04,0x00,0x05,0x0d,0x1d,0x3d,
442 0x7d,0xfe,0xff,
443 };
444
445 static const uint16_t ccpl_huffcodes5[31] = {
446 0x03f8,0x03f9,0x03fa,0x03fb,0x01f8,0x01f9,0x00f8,0x00f9,0x0078,0x0079,0x0038,0x0039,
447 0x0018,0x0019,0x0004,0x0000,0x0005,0x001a,0x001b,0x003a,0x003b,0x007a,0x007b,0x00fa,
448 0x00fb,0x01fa,0x01fb,0x03fc,0x03fd,0x03fe,0x03ff,
449 };
450
451 static const uint16_t ccpl_huffcodes6[63] = {
452 0x0004,0x0005,0x0005,0x0006,0x0006,0x0007,0x0007,0x0007,0x0007,0x0008,0x0008,0x0008,
453 0x0008,0x0009,0x0009,0x0009,0x0009,0x000a,0x000a,0x000a,0x000a,0x000a,0x000b,0x000b,
454 0x000b,0x000b,0x000c,0x000d,0x000e,0x000e,0x0010,0x0000,0x000a,0x0018,0x0019,0x0036,
455 0x0037,0x0074,0x0075,0x0076,0x0077,0x00f4,0x00f5,0x00f6,0x00f7,0x01f5,0x01f6,0x01f7,
456 0x01f8,0x03f6,0x03f7,0x03f8,0x03f9,0x03fa,0x07fa,0x07fb,0x07fc,0x07fd,0x0ffd,0x1ffd,
457 0x3ffd,0x3ffe,0xffff,
458 };
459
460 static const uint8_t ccpl_huffbits2[3] = {
461 2,1,2,
462 };
463
464 static const uint8_t ccpl_huffbits3[7] = {
465 6,5,2,1,3,4,6,
466 };
467
468 static const uint8_t ccpl_huffbits4[15] = {
469 8,8,7,6,5,4,3,1,3,4,5,6,7,8,8,
470 };
471
472 static const uint8_t ccpl_huffbits5[31] = {
473 10,10,10,10,9,9,8,8,7,7,6,6,
474 5,5,3,1,3,5,5,6,6,7,7,8,
475 8,9,9,10,10,10,10,
476 };
477
478 static const uint8_t ccpl_huffbits6[63] = {
479 16,15,14,13,12,11,11,11,11,10,10,10,
480 10,9,9,9,9,9,8,8,8,8,7,7,
481 7,7,6,6,5,5,3,1,4,5,5,6,
482 6,7,7,7,7,8,8,8,8,9,9,9,
483 9,10,10,10,10,10,11,11,11,11,12,13,
484 14,14,16,
485 };
486
487 static const uint16_t* ccpl_huffcodes[5] = {
488 ccpl_huffcodes2,ccpl_huffcodes3,
489 ccpl_huffcodes4,ccpl_huffcodes5,ccpl_huffcodes6
490 };
491
492 static const uint8_t* ccpl_huffbits[5] = {
493 ccpl_huffbits2,ccpl_huffbits3,
494 ccpl_huffbits4,ccpl_huffbits5,ccpl_huffbits6
495 };
496
497
498 //Coupling tables
499
500 static const int cplband[51] = {
501 0,1,2,3,4,5,6,7,8,9,
502 10,11,11,12,12,13,13,14,14,14,
503 15,15,15,15,16,16,16,16,16,17,
504 17,17,17,17,17,18,18,18,18,18,
505 18,18,19,19,19,19,19,19,19,19,
506 19,
507 };
508
509 static const float cplscale2[3] = {
510 0.953020632266998,0.70710676908493,0.302905440330505,
511 };
512
513 static const float cplscale3[7] = {
514 0.981279790401459,0.936997592449188,0.875934481620789,0.70710676908493,
515 0.482430040836334,0.349335819482803,0.192587479948997,
516 };
517
518 static const float cplscale4[15] = {
519 0.991486728191376,0.973249018192291,0.953020632266998,0.930133521556854,
520 0.903453230857849,0.870746195316315,0.826180458068848,0.70710676908493,
521 0.563405573368073,0.491732746362686,0.428686618804932,0.367221474647522,
522 0.302905440330505,0.229752898216248,0.130207896232605,
523 };
524
525 static const float cplscale5[31] = {
526 0.995926380157471,0.987517595291138,0.978726446628571,0.969505727291107,
527 0.95979779958725,0.949531257152557,0.938616216182709,0.926936149597168,
528 0.914336204528809,0.900602877140045,0.885426938533783,0.868331849575043,
529 0.84851086139679,0.824381768703461,0.791833400726318,0.70710676908493,
530 0.610737144947052,0.566034197807312,0.529177963733673,0.495983630418777,
531 0.464778542518616,0.434642940759659,0.404955863952637,0.375219136476517,
532 0.344963222742081,0.313672333955765,0.280692428350449,0.245068684220314,
533 0.205169528722763,0.157508864998817,0.0901700109243393,
534 };
535
536 static const float cplscale6[63] = {
537 0.998005926609039,0.993956744670868,0.989822506904602,0.985598564147949,
538 0.981279790401459,0.976860702037811,0.972335040569305,0.967696130275726,
539 0.962936460971832,0.958047747612000,0.953020632266998,0.947844684123993,
540 0.942508161067963,0.936997592449188,0.931297719478607,0.925390899181366,
541 0.919256627559662,0.912870943546295,0.906205296516418,0.899225592613220,
542 0.891890347003937,0.884148240089417,0.875934481620789,0.867165684700012,
543 0.857730865478516,0.847477376461029,0.836184680461884,0.823513329029083,
544 0.808890223503113,0.791194140911102,0.767520070075989,0.707106769084930,
545 0.641024887561798,0.611565053462982,0.587959706783295,0.567296981811523,
546 0.548448026180267,0.530831515789032,0.514098942279816,0.498019754886627,
547 0.482430040836334,0.467206478118896,0.452251672744751,0.437485188245773,
548 0.422837972640991,0.408248275518417,0.393658757209778,0.379014074802399,
549 0.364258885383606,0.349335819482803,0.334183186292648,0.318732559680939,
550 0.302905440330505,0.286608695983887,0.269728302955627,0.252119421958923,
551 0.233590632677078,0.213876649737358,0.192587479948997,0.169101938605309,
552 0.142307326197624,0.109772264957428,0.0631198287010193,
553 };
554
555 static const float* cplscales[5] = {
556 cplscale2, cplscale3, cplscale4, cplscale5, cplscale6,
557 };