Statistics
| Branch: | Revision:

ffmpeg / libavcodec / cookdata.h @ 7a886063

History | View | Annotate | Download (28 KB)

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