Statistics
| Branch: | Revision:

ffmpeg / libavcodec / cookdata.h @ 5509bffa

History | View | Annotate | Download (28 KB)

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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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
};