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