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 decoder data 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 0xfffe, 0x7ffe, 0x3ffc, 0x1ffc, 0x0ffc, 0x07f6, 0x07f7, 0x07f8, 0x07f9, 457 0x03f2, 0x03f3, 0x03f4, 0x03f5, 0x01f0, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 458 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x0070, 0x0071, 0x0072, 0x0073, 0x0034, 459 0x0035, 0x0016, 0x0017, 0x0004, 0x0000, 0x000a, 0x0018, 0x0019, 0x0036, 460 0x0037, 0x0074, 0x0075, 0x0076, 0x0077, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 461 0x01f5, 0x01f6, 0x01f7, 0x01f8, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 462 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x0ffd, 0x1ffd, 0x3ffd, 0x3ffe, 0xffff 463 }; 464 465 static const uint8_t ccpl_huffbits2[3] = { 466 2,1,2, 467 }; 468 469 static const uint8_t ccpl_huffbits3[7] = { 470 6,5,2,1,3,4,6, 471 }; 472 473 static const uint8_t ccpl_huffbits4[15] = { 474 8,8,7,6,5,4,3,1,3,4,5,6,7,8,8, 475 }; 476 477 static const uint8_t ccpl_huffbits5[31] = { 478 10,10,10,10,9,9,8,8,7,7,6,6, 479 5,5,3,1,3,5,5,6,6,7,7,8, 480 8,9,9,10,10,10,10, 481 }; 482 483 static const uint8_t ccpl_huffbits6[63] = { 484 16,15,14,13,12,11,11,11,11,10,10,10, 485 10,9,9,9,9,9,8,8,8,8,7,7, 486 7,7,6,6,5,5,3,1,4,5,5,6, 487 6,7,7,7,7,8,8,8,8,9,9,9, 488 9,10,10,10,10,10,11,11,11,11,12,13, 489 14,14,16, 490 }; 491 492 static const uint16_t* const ccpl_huffcodes[5] = { 493 ccpl_huffcodes2,ccpl_huffcodes3, 494 ccpl_huffcodes4,ccpl_huffcodes5,ccpl_huffcodes6 495 }; 496 497 static const uint8_t* const ccpl_huffbits[5] = { 498 ccpl_huffbits2,ccpl_huffbits3, 499 ccpl_huffbits4,ccpl_huffbits5,ccpl_huffbits6 500 }; 501 502 503 //Coupling tables 504 505 static const int cplband[51] = { 506 0,1,2,3,4,5,6,7,8,9, 507 10,11,11,12,12,13,13,14,14,14, 508 15,15,15,15,16,16,16,16,16,17, 509 17,17,17,17,17,18,18,18,18,18, 510 18,18,19,19,19,19,19,19,19,19, 511 19, 512 }; 513 514 // The 1 and 0 at the beginning/end are to prevent overflows with 515 // bitstream-read indexes. E.g. if n_bits=5, we can access any 516 // index from [1, (1<<n_bits)] for the first decoupling coeff, 517 // and (1<<n_bits)-coeff1 as index for coeff2, i.e.: 518 // coeff1_idx = [1, 32], and coeff2_idx = [0, 31]. 519 // These values aren't part of the tables in the original binary. 520 521 static const float cplscale2[5] = { 522 1, 523 0.953020632266998,0.70710676908493,0.302905440330505, 524 0, 525 }; 526 527 static const float cplscale3[9] = { 528 1, 529 0.981279790401459,0.936997592449188,0.875934481620789,0.70710676908493, 530 0.482430040836334,0.349335819482803,0.192587479948997, 531 0, 532 }; 533 534 static const float cplscale4[17] = { 535 1, 536 0.991486728191376,0.973249018192291,0.953020632266998,0.930133521556854, 537 0.903453230857849,0.870746195316315,0.826180458068848,0.70710676908493, 538 0.563405573368073,0.491732746362686,0.428686618804932,0.367221474647522, 539 0.302905440330505,0.229752898216248,0.130207896232605, 540 0, 541 }; 542 543 static const float cplscale5[33] = { 544 1, 545 0.995926380157471,0.987517595291138,0.978726446628571,0.969505727291107, 546 0.95979779958725,0.949531257152557,0.938616216182709,0.926936149597168, 547 0.914336204528809,0.900602877140045,0.885426938533783,0.868331849575043, 548 0.84851086139679,0.824381768703461,0.791833400726318,0.70710676908493, 549 0.610737144947052,0.566034197807312,0.529177963733673,0.495983630418777, 550 0.464778542518616,0.434642940759659,0.404955863952637,0.375219136476517, 551 0.344963222742081,0.313672333955765,0.280692428350449,0.245068684220314, 552 0.205169528722763,0.157508864998817,0.0901700109243393, 553 0, 554 }; 555 556 static const float cplscale6[65] = { 557 1, 558 0.998005926609039,0.993956744670868,0.989822506904602,0.985598564147949, 559 0.981279790401459,0.976860702037811,0.972335040569305,0.967696130275726, 560 0.962936460971832,0.958047747612000,0.953020632266998,0.947844684123993, 561 0.942508161067963,0.936997592449188,0.931297719478607,0.925390899181366, 562 0.919256627559662,0.912870943546295,0.906205296516418,0.899225592613220, 563 0.891890347003937,0.884148240089417,0.875934481620789,0.867165684700012, 564 0.857730865478516,0.847477376461029,0.836184680461884,0.823513329029083, 565 0.808890223503113,0.791194140911102,0.767520070075989,0.707106769084930, 566 0.641024887561798,0.611565053462982,0.587959706783295,0.567296981811523, 567 0.548448026180267,0.530831515789032,0.514098942279816,0.498019754886627, 568 0.482430040836334,0.467206478118896,0.452251672744751,0.437485188245773, 569 0.422837972640991,0.408248275518417,0.393658757209778,0.379014074802399, 570 0.364258885383606,0.349335819482803,0.334183186292648,0.318732559680939, 571 0.302905440330505,0.286608695983887,0.269728302955627,0.252119421958923, 572 0.233590632677078,0.213876649737358,0.192587479948997,0.169101938605309, 573 0.142307326197624,0.109772264957428,0.0631198287010193, 574 0, 575 }; 576 577 static const float* const cplscales[5] = { 578 cplscale2, cplscale3, cplscale4, cplscale5, cplscale6, 579 }; 580 581 #endif /* AVCODEC_COOKDATA_H */ 582