1/* 2 * Musepack SV8 decoder 3 * Copyright (c) 2007 Konstantin Shishkov 4 * 5 * This file is part of Libav. 6 * 7 * Libav is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * Libav is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with Libav; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22#ifndef AVCODEC_MPC8HUFF_H 23#define AVCODEC_MPC8HUFF_H 24 25#include <stdint.h> 26 27#define MPC8_BANDS_SIZE 33 28#define MPC8_BANDS_BITS 9 29 30static const uint8_t mpc8_bands_codes[MPC8_BANDS_SIZE] = { 31 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 32 0x05, 0x06, 0x01, 0x02, 0x03, 0x00, 0x04, 0x05, 33 0x06, 0x07, 0x08, 0x01, 0x09, 0x0A, 0x0B, 0x07, 34 0x08, 0x09, 0x06, 0x07, 0x05, 0x05, 0x03, 0x03, 35 0x01, 36}; 37static const int8_t mpc8_bands_bits[MPC8_BANDS_SIZE] = { 38 1, 3, 5, 6, 7, 8, 8, 9, 39 10, 11, 12, 12, 12, 13, 12, 12, 40 12, 12, 12, 13, 12, 12, 12, 11, 41 11, 11, 10, 10, 9, 8, 6, 5, 42 2, 43}; 44 45#define MPC8_SCFI0_SIZE 4 46#define MPC8_SCFI0_BITS 3 47 48static const uint8_t mpc8_scfi0_codes[MPC8_SCFI0_SIZE] = { 49 0x00, 0x01, 0x01, 0x01, 50}; 51static const int8_t mpc8_scfi0_bits[MPC8_SCFI0_SIZE] = { 52 3, 3, 1, 2, 53}; 54 55#define MPC8_SCFI1_SIZE 16 56#define MPC8_SCFI1_BITS 7 57 58static const uint8_t mpc8_scfi1_codes[MPC8_SCFI1_SIZE] = { 59 0x01, 0x00, 0x02, 0x03, 0x01, 0x03, 0x04, 0x05, 60 0x04, 0x06, 0x02, 0x02, 0x05, 0x07, 0x03, 0x03, 61 62}; 63static const int8_t mpc8_scfi1_bits[MPC8_SCFI1_SIZE] = { 64 6, 7, 6, 6, 7, 5, 5, 5, 65 6, 5, 2, 3, 6, 5, 3, 2, 66 67}; 68 69#define MPC8_DSCF0_SIZE 64 70#define MPC8_DSCF0_BITS 9 71 72static const uint8_t mpc8_dscf0_codes[MPC8_DSCF0_SIZE] = { 73 0x03, 0x04, 0x05, 0x04, 0x05, 0x06, 0x05, 0x06, 74 0x07, 0x08, 0x09, 0x07, 0x08, 0x09, 0x0A, 0x07, 75 0x08, 0x09, 0x0A, 0x07, 0x08, 0x09, 0x0A, 0x06, 76 0x07, 0x05, 0x04, 0x05, 0x06, 0x06, 0x07, 0x0A, 77 0x08, 0x05, 0x06, 0x07, 0x09, 0x07, 0x08, 0x09, 78 0x0B, 0x0B, 0x0C, 0x0D, 0x0B, 0x0C, 0x0D, 0x0B, 79 0x0C, 0x0D, 0x07, 0x08, 0x09, 0x06, 0x07, 0x03, 80 0x04, 0x05, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 81}; 82static const int8_t mpc8_dscf0_bits[MPC8_DSCF0_SIZE] = { 83 12, 12, 12, 11, 11, 11, 10, 10, 84 10, 10, 10, 9, 9, 9, 9, 8, 85 8, 8, 8, 7, 7, 7, 7, 6, 86 6, 5, 4, 4, 5, 4, 4, 10, 87 4, 3, 3, 3, 4, 5, 6, 6, 88 7, 8, 8, 8, 9, 9, 9, 10, 89 10, 10, 11, 11, 11, 12, 12, 13, 90 13, 13, 14, 14, 14, 14, 14, 14, 91 92}; 93 94#define MPC8_DSCF1_SIZE 65 95#define MPC8_DSCF1_BITS 9 96 97static const uint8_t mpc8_dscf1_codes[MPC8_DSCF1_SIZE] = { 98 0x00, 0x03, 0x04, 0x04, 0x05, 0x06, 0x05, 0x06, 99 0x07, 0x08, 0x07, 0x08, 0x09, 0x0A, 0x07, 0x08, 100 0x09, 0x0A, 0x07, 0x08, 0x09, 0x06, 0x07, 0x05, 101 0x06, 0x04, 0x03, 0x03, 0x04, 0x03, 0x04, 0x05, 102 0x06, 0x07, 0x05, 0x04, 0x05, 0x05, 0x07, 0x08, 103 0x09, 0x0A, 0x0B, 0x0B, 0x0C, 0x0D, 0x0B, 0x0C, 104 0x0D, 0x09, 0x0A, 0x0B, 0x0C, 0x07, 0x08, 0x09, 105 0x05, 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 106 0x0D, 107}; 108static const int8_t mpc8_dscf1_bits[MPC8_DSCF1_SIZE] = { 109 15, 14, 14, 13, 13, 13, 12, 12, 110 12, 12, 11, 11, 11, 11, 10, 10, 111 10, 10, 9, 9, 9, 8, 8, 7, 112 7, 6, 5, 4, 4, 3, 3, 3, 113 3, 3, 4, 5, 5, 6, 7, 8, 114 8, 9, 9, 10, 10, 10, 11, 11, 115 11, 12, 12, 12, 12, 13, 13, 13, 116 14, 14, 14, 15, 15, 15, 15, 15, 117 12, 118}; 119 120#define MPC8_RES_SIZE 17 121#define MPC8_RES_BITS 9 122 123static const uint8_t mpc8_res_codes[2][MPC8_RES_SIZE] = { 124 { 125 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 126 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 127 0x01, 128 }, 129 { 130 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 131 0x00, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 132 0x03, 133 } 134}; 135static const int8_t mpc8_res_bits[2][MPC8_RES_SIZE] = { 136 { 137 1, 2, 4, 5, 6, 7, 9, 10, 138 11, 12, 13, 14, 15, 16, 16, 8, 139 3, 140 }, 141 { 142 2, 2, 3, 5, 7, 8, 10, 12, 143 14, 14, 14, 14, 11, 9, 6, 4, 144 2, 145 } 146}; 147 148#define MPC8_Q1_SIZE 19 149#define MPC8_Q1_BITS 9 150 151static const uint8_t mpc8_q1_codes[MPC8_Q1_SIZE] = { 152 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 153 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 154 0x01, 0x00, 0x01, 155}; 156static const int8_t mpc8_q1_bits[MPC8_Q1_SIZE] = { 157 6, 4, 4, 3, 3, 3, 3, 3, 158 4, 4, 4, 5, 7, 8, 9, 10, 159 11, 12, 12, 160}; 161 162#define MPC8_Q9UP_SIZE 256 163#define MPC8_Q9UP_BITS 9 164 165static const uint8_t mpc8_q9up_codes[MPC8_Q9UP_SIZE] = { 166 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x06, 0x07, 167 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 168 0x10, 0x11, 0x12, 0x26, 0x27, 0x13, 0x14, 0x15, 169 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 170 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 171 0x28, 0x26, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 172 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 173 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 174 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 175 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 176 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 177 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 178 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 179 0x67, 0x68, 0x69, 0x6A, 0x56, 0x57, 0x58, 0x59, 180 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 181 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x3E, 182 0x3F, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 183 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 184 0x78, 0x79, 0x7A, 0x6B, 0x7B, 0x6C, 0x6D, 0x6E, 185 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 186 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 187 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 188 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 189 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 190 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 191 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 192 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0x27, 0x28, 0x29, 193 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 194 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 195 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 196 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 197 0x4A, 0x4B, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 198}; 199static const int8_t mpc8_q9up_bits[MPC8_Q9UP_SIZE] = { 200 10, 10, 10, 10, 10, 9, 9, 9, 201 9, 9, 9, 9, 9, 9, 9, 9, 202 9, 9, 9, 8, 8, 9, 9, 9, 203 9, 9, 9, 9, 9, 9, 9, 9, 204 9, 9, 9, 9, 9, 9, 9, 9, 205 8, 9, 8, 8, 8, 8, 8, 8, 206 8, 8, 8, 8, 8, 8, 8, 8, 207 8, 8, 8, 8, 8, 8, 8, 8, 208 8, 8, 8, 8, 8, 8, 8, 8, 209 8, 8, 8, 8, 8, 8, 8, 8, 210 8, 8, 8, 8, 8, 8, 8, 8, 211 8, 8, 8, 8, 8, 8, 8, 8, 212 8, 8, 8, 8, 8, 8, 8, 8, 213 8, 8, 8, 8, 7, 7, 7, 7, 214 7, 7, 7, 7, 7, 7, 7, 7, 215 7, 7, 7, 7, 7, 7, 7, 6, 216 6, 7, 7, 7, 7, 7, 7, 7, 217 7, 7, 7, 7, 7, 7, 7, 7, 218 7, 7, 7, 8, 7, 8, 8, 8, 219 8, 8, 8, 8, 8, 8, 8, 8, 220 8, 8, 8, 8, 8, 8, 8, 8, 221 8, 8, 8, 8, 8, 8, 8, 8, 222 8, 8, 8, 8, 8, 8, 8, 8, 223 8, 8, 8, 8, 8, 8, 8, 8, 224 8, 8, 8, 8, 8, 8, 8, 8, 225 8, 8, 8, 8, 8, 8, 8, 8, 226 8, 8, 8, 8, 8, 9, 9, 9, 227 9, 9, 9, 9, 9, 9, 9, 9, 228 9, 9, 9, 9, 9, 9, 9, 9, 229 9, 9, 9, 9, 9, 9, 9, 9, 230 9, 9, 9, 9, 9, 9, 9, 9, 231 9, 9, 10, 10, 10, 10, 11, 11, 232}; 233 234#define MPC8_Q2_SIZE 125 235#define MPC8_Q2_BITS 9 236 237static const uint8_t mpc8_q2_codes[2][MPC8_Q2_SIZE] = { 238{ 239 0x02, 0x03, 0x0F, 0x04, 0x00, 0x05, 0x0C, 0x12, 240 0x0D, 0x06, 0x07, 0x13, 0x15, 0x14, 0x08, 0x09, 241 0x0E, 0x15, 0x0F, 0x0A, 0x03, 0x0B, 0x10, 0x0C, 242 0x01, 0x0D, 0x10, 0x16, 0x11, 0x0E, 0x12, 0x0F, 243 0x10, 0x16, 0x13, 0x17, 0x11, 0x08, 0x12, 0x18, 244 0x14, 0x13, 0x14, 0x17, 0x15, 0x0F, 0x16, 0x19, 245 0x17, 0x10, 0x11, 0x1A, 0x18, 0x1B, 0x12, 0x1C, 246 0x15, 0x09, 0x16, 0x1D, 0x19, 0x0A, 0x07, 0x0B, 247 0x1A, 0x1E, 0x17, 0x0C, 0x18, 0x1F, 0x13, 0x20, 248 0x1B, 0x21, 0x14, 0x11, 0x18, 0x22, 0x19, 0x12, 249 0x1A, 0x19, 0x1A, 0x1B, 0x1B, 0x23, 0x1C, 0x0D, 250 0x1D, 0x24, 0x1C, 0x1C, 0x1E, 0x1F, 0x1D, 0x13, 251 0x1E, 0x25, 0x1F, 0x14, 0x02, 0x15, 0x15, 0x16, 252 0x04, 0x17, 0x20, 0x26, 0x21, 0x18, 0x16, 0x27, 253 0x1D, 0x28, 0x19, 0x1A, 0x22, 0x29, 0x23, 0x1B, 254 0x03, 0x1C, 0x17, 0x1D, 0x05, 255}, 256{ 257 0x02, 0x03, 0x0F, 0x04, 0x00, 0x05, 0x0C, 0x0D, 258 0x0E, 0x06, 0x07, 0x0F, 0x1E, 0x10, 0x10, 0x08, 259 0x11, 0x12, 0x13, 0x09, 0x03, 0x0A, 0x11, 0x0B, 260 0x01, 0x0C, 0x14, 0x15, 0x16, 0x0D, 0x17, 0x12, 261 0x0E, 0x13, 0x18, 0x19, 0x14, 0x0F, 0x10, 0x1A, 262 0x1B, 0x15, 0x11, 0x16, 0x1C, 0x0E, 0x1D, 0x1E, 263 0x1F, 0x0F, 0x12, 0x20, 0x1F, 0x21, 0x13, 0x22, 264 0x12, 0x13, 0x14, 0x23, 0x20, 0x15, 0x0F, 0x16, 265 0x21, 0x24, 0x17, 0x18, 0x19, 0x25, 0x14, 0x26, 266 0x22, 0x27, 0x15, 0x10, 0x28, 0x29, 0x2A, 0x11, 267 0x2B, 0x17, 0x1A, 0x18, 0x2C, 0x2D, 0x1B, 0x1C, 268 0x19, 0x2E, 0x2F, 0x1A, 0x1D, 0x1B, 0x30, 0x12, 269 0x31, 0x32, 0x33, 0x13, 0x02, 0x14, 0x15, 0x16, 270 0x04, 0x17, 0x34, 0x35, 0x36, 0x18, 0x16, 0x37, 271 0x23, 0x38, 0x19, 0x1A, 0x39, 0x3A, 0x3B, 0x1B, 272 0x03, 0x1C, 0x17, 0x1D, 0x05, 273} 274}; 275static const int8_t mpc8_q2_bits[2][MPC8_Q2_SIZE] = { 276{ 277 12, 11, 10, 11, 13, 11, 9, 8, 278 9, 11, 11, 8, 7, 8, 11, 11, 279 9, 8, 9, 11, 12, 11, 10, 11, 280 13, 11, 9, 8, 9, 11, 9, 6, 281 6, 7, 9, 8, 6, 4, 6, 8, 282 9, 6, 6, 7, 9, 11, 9, 8, 283 9, 11, 10, 8, 7, 8, 10, 8, 284 6, 4, 6, 8, 7, 4, 3, 4, 285 7, 8, 6, 4, 6, 8, 10, 8, 286 7, 8, 10, 11, 9, 8, 9, 11, 287 9, 6, 6, 6, 9, 8, 6, 4, 288 6, 8, 9, 7, 6, 6, 9, 11, 289 9, 8, 9, 11, 13, 11, 10, 11, 290 12, 11, 9, 8, 9, 11, 10, 8, 291 7, 8, 11, 11, 9, 8, 9, 11, 292 13, 11, 10, 11, 12, 293}, 294{ 295 11, 10, 9, 10, 12, 10, 8, 8, 296 8, 10, 10, 8, 7, 8, 9, 10, 297 8, 8, 8, 10, 11, 10, 9, 10, 298 12, 10, 8, 8, 8, 10, 8, 6, 299 5, 6, 8, 8, 6, 5, 5, 8, 300 8, 6, 5, 6, 8, 10, 8, 8, 301 8, 10, 9, 8, 7, 8, 9, 8, 302 5, 5, 5, 8, 7, 5, 4, 5, 303 7, 8, 5, 5, 5, 8, 9, 8, 304 7, 8, 9, 10, 8, 8, 8, 10, 305 8, 6, 5, 6, 8, 8, 5, 5, 306 6, 8, 8, 6, 5, 6, 8, 10, 307 8, 8, 8, 10, 12, 10, 10, 10, 308 11, 10, 8, 8, 8, 10, 9, 8, 309 7, 8, 10, 10, 8, 8, 8, 10, 310 12, 10, 9, 10, 11, 311} 312}; 313 314#define MPC8_Q3_SIZE 49 315#define MPC8_Q3_BITS 9 316#define MPC8_Q3_OFFSET -48 317 318static const uint8_t mpc8_q3_codes[MPC8_Q3_SIZE] = { 319 0x07, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0F, 320 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x13, 0x12, 0x11, 321 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 322 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 323 0x09, 0x08, 0x07, 0x06, 0x05, 0x09, 0x08, 0x07, 324 0x06, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x01, 325 0x00, 326}; 327static const int8_t mpc8_q3_bits[MPC8_Q3_SIZE] = { 328 3, 4, 4, 4, 4, 4, 4, 5, 329 5, 5, 5, 5, 5, 6, 6, 6, 330 6, 6, 6, 6, 6, 6, 6, 6, 331 7, 7, 7, 7, 7, 7, 7, 7, 332 7, 7, 7, 7, 7, 8, 8, 8, 333 8, 8, 8, 8, 8, 9, 9, 9, 334 9, 335}; 336static const int8_t mpc8_q3_syms[MPC8_Q3_SIZE] = { 337 48, 65, 64, 49, 63, 32, 47, 80, 338 79, 50, 62, 33, 16, 82, 81, 95, 339 94, 66, 78, 34, 46, 17, 31, 30, 340 97, 96, 111, 67, 77, 51, 61, 35, 341 45, 18, 1, 0, 15, 98, 110, 83, 342 93, 19, 29, 2, 14, 99, 109, 3, 343 13, 344}; 345 346#define MPC8_Q4_SIZE 81 347#define MPC8_Q4_BITS 9 348#define MPC8_Q4_OFFSET -64 349 350static const uint8_t mpc8_q4_codes[MPC8_Q4_SIZE] = { 351 0x0F, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, 0x17, 352 0x16, 0x15, 0x14, 0x13, 0x12, 0x23, 0x22, 0x21, 353 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 354 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 355 0x10, 0x0F, 0x0E, 0x0D, 0x19, 0x18, 0x17, 0x16, 356 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 357 0x0D, 0x0C, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 358 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 359 0x09, 0x08, 0x07, 0x06, 0x05, 0x09, 0x08, 0x07, 360 0x06, 0x05, 0x04, 0x03, 0x02, 0x03, 0x02, 0x01, 361 0x00, 362}; 363static const int8_t mpc8_q4_bits[MPC8_Q4_SIZE] = { 364 4, 5, 5, 5, 5, 5, 5, 5, 365 5, 5, 5, 5, 5, 6, 6, 6, 366 6, 6, 6, 6, 6, 6, 6, 6, 367 6, 6, 6, 6, 6, 6, 6, 6, 368 6, 6, 6, 6, 7, 7, 7, 7, 369 7, 7, 7, 7, 7, 7, 7, 7, 370 7, 7, 8, 8, 8, 8, 8, 8, 371 8, 8, 8, 8, 8, 8, 8, 8, 372 8, 8, 8, 8, 8, 9, 9, 9, 373 9, 9, 9, 9, 9, 10, 10, 10, 374 10, 375}; 376static const int8_t mpc8_q4_syms[MPC8_Q4_SIZE] = { 377 64, 96, 81, 80, 95, 66, 65, 79, 378 78, 49, 48, 63, 32, 113, 112, 98, 379 97, 111, 110, 83, 82, 94, 93, 67, 380 77, 51, 50, 62, 61, 34, 33, 47, 381 46, 17, 16, 31, 128, 114, 127, 126, 382 99, 109, 68, 76, 35, 45, 18, 30, 383 0, 15, 130, 129, 143, 142, 115, 125, 384 100, 108, 84, 92, 52, 60, 36, 44, 385 19, 29, 2, 1, 14, 131, 141, 116, 386 124, 20, 28, 3, 13, 132, 140, 4, 387 12, 388}; 389 390#define MPC8_Q5_SIZE 15 391#define MPC8_Q5_BITS 7 392#define MPC8_Q5_OFFSET -7 393 394static const uint8_t mpc8_q5_codes[2][MPC8_Q5_SIZE] = { 395{ 396 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 397 0x04, 0x05, 0x03, 0x03, 0x03, 0x02, 0x03, 398}, 399{ 400 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05, 401 0x06, 0x07, 0x04, 0x05, 0x03, 0x02, 0x03, 402} 403}; 404static const int8_t mpc8_q5_bits[2][MPC8_Q5_SIZE] = { 405{ 406 7, 7, 6, 5, 4, 3, 3, 2, 407 3, 3, 4, 5, 6, 7, 7, 408}, 409{ 410 6, 6, 5, 4, 4, 3, 3, 3, 411 3, 3, 4, 4, 5, 6, 6, 412} 413}; 414 415#define MPC8_Q6_SIZE 31 416#define MPC8_Q6_BITS 9 417#define MPC8_Q6_OFFSET -15 418 419static const uint8_t mpc8_q6_codes[2][MPC8_Q6_SIZE] = { 420{ 421 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x04, 0x03, 422 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x04, 0x03, 423 0x05, 0x06, 0x07, 0x07, 0x06, 0x07, 0x08, 0x09, 424 0x05, 0x06, 0x07, 0x04, 0x05, 0x06, 0x07, 425}, 426{ 427 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x05, 0x04, 428 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 429 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x07, 0x08, 0x09, 430 0x06, 0x07, 0x05, 0x06, 0x07, 0x02, 0x03, 431} 432}; 433static const int8_t mpc8_q6_bits[2][MPC8_Q6_SIZE] = { 434{ 435 9, 9, 9, 9, 8, 8, 7, 6, 436 6, 6, 5, 5, 4, 4, 3, 2, 437 3, 4, 4, 5, 6, 6, 6, 6, 438 7, 8, 8, 9, 9, 9, 9, 439}, 440{ 441 8, 8, 7, 7, 7, 6, 6, 5, 442 5, 5, 4, 4, 4, 4, 4, 4, 443 4, 4, 4, 4, 4, 5, 5, 5, 444 6, 6, 7, 7, 7, 8, 8, 445} 446}; 447 448#define MPC8_Q7_SIZE 63 449#define MPC8_Q7_BITS 9 450#define MPC8_Q7_OFFSET -31 451 452static const uint8_t mpc8_q7_codes[2][MPC8_Q7_SIZE] = { 453{ 454 0x00, 0x01, 0x02, 0x08, 0x09, 0x03, 0x04, 0x05, 455 0x06, 0x07, 0x0A, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 456 0x0C, 0x0D, 0x0E, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 457 0x0A, 0x0B, 0x0C, 0x08, 0x09, 0x06, 0x04, 0x03, 458 0x05, 0x07, 0x0A, 0x0B, 0x0D, 0x0E, 0x0F, 0x0F, 459 0x10, 0x11, 0x12, 0x0F, 0x13, 0x10, 0x11, 0x12, 460 0x13, 0x0E, 0x0F, 0x10, 0x11, 0x08, 0x09, 0x0A, 461 0x0B, 0x0C, 0x12, 0x13, 0x0D, 0x0E, 0x0F, 462}, 463{ 464 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 465 0x08, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x09, 0x0A, 466 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x0C, 0x0D, 467 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 468 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 469 0x1E, 0x1F, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 470 0x17, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x09, 0x0A, 471 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x02, 0x03, 472} 473}; 474static const int8_t mpc8_q7_bits[2][MPC8_Q7_SIZE] = { 475{ 476 10, 10, 10, 9, 9, 10, 10, 10, 477 10, 10, 9, 9, 9, 9, 8, 8, 478 8, 8, 8, 7, 7, 7, 7, 7, 479 6, 6, 6, 5, 5, 4, 3, 2, 480 3, 4, 5, 5, 6, 6, 6, 7, 481 7, 7, 7, 8, 7, 8, 8, 8, 482 8, 9, 9, 9, 9, 10, 10, 10, 483 10, 10, 9, 9, 10, 10, 10, 484}, 485{ 486 9, 9, 8, 8, 8, 8, 8, 8, 487 8, 7, 7, 7, 7, 7, 6, 6, 488 6, 6, 6, 6, 6, 6, 5, 5, 489 5, 5, 5, 5, 5, 5, 5, 5, 490 5, 5, 5, 5, 5, 5, 5, 5, 491 5, 5, 6, 6, 6, 6, 6, 6, 492 6, 7, 7, 7, 7, 7, 8, 8, 493 8, 8, 8, 8, 8, 9, 9, 494} 495}; 496 497#define MPC8_Q8_SIZE 127 498#define MPC8_Q8_BITS 9 499#define MPC8_Q8_OFFSET -63 500 501static const uint8_t mpc8_q8_codes[2][MPC8_Q8_SIZE] = { 502{ 503 0x03, 0x04, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1A, 504 0x0F, 0x1B, 0x10, 0x00, 0x01, 0x05, 0x06, 0x07, 505 0x08, 0x09, 0x0A, 0x0B, 0x11, 0x0C, 0x12, 0x13, 506 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1C, 0x1A, 507 0x1B, 0x1C, 0x1D, 0x1E, 0x1D, 0x1E, 0x1F, 0x20, 508 0x21, 0x22, 0x23, 0x24, 0x19, 0x25, 0x1A, 0x1B, 509 0x1C, 0x1D, 0x1E, 0x1F, 0x14, 0x15, 0x16, 0x17, 510 0x0E, 0x0F, 0x10, 0x11, 0x0B, 0x07, 0x04, 0x03, 511 0x05, 0x0C, 0x0D, 0x12, 0x13, 0x14, 0x15, 0x18, 512 0x19, 0x1A, 0x1B, 0x20, 0x21, 0x22, 0x23, 0x24, 513 0x25, 0x26, 0x27, 0x26, 0x27, 0x28, 0x29, 0x2A, 514 0x2B, 0x2C, 0x2D, 0x2E, 0x1F, 0x20, 0x2F, 0x21, 515 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 516 0x0D, 0x0E, 0x2A, 0x0F, 0x10, 0x11, 0x12, 0x02, 517 0x13, 0x03, 0x04, 0x05, 0x2B, 0x2C, 0x30, 0x31, 518 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 519}, 520{ 521 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 522 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 523 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x15, 0x16, 524 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 525 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 526 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 527 0x2F, 0x30, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 528 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 529 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 530 0x3C, 0x3D, 0x3E, 0x31, 0x3F, 0x32, 0x33, 0x34, 531 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 532 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 533 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x16, 534 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 535 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 536 0x27, 0x28, 0x29, 0x04, 0x05, 0x06, 0x07, 537} 538}; 539static const int8_t mpc8_q8_bits[2][MPC8_Q8_SIZE] = { 540{ 541 11, 11, 10, 10, 10, 10, 10, 9, 542 10, 9, 10, 12, 12, 11, 11, 11, 543 11, 11, 11, 11, 10, 11, 10, 10, 544 10, 10, 10, 10, 10, 10, 9, 10, 545 10, 10, 10, 10, 9, 9, 9, 9, 546 9, 9, 9, 9, 8, 9, 8, 8, 547 8, 8, 8, 8, 7, 7, 7, 7, 548 6, 6, 6, 6, 5, 4, 3, 2, 549 3, 5, 5, 6, 6, 6, 6, 7, 550 7, 7, 7, 8, 8, 8, 8, 8, 551 8, 8, 8, 9, 9, 9, 9, 9, 552 9, 9, 9, 9, 10, 10, 9, 10, 553 10, 10, 10, 10, 10, 10, 10, 10, 554 11, 11, 10, 11, 11, 11, 11, 12, 555 11, 12, 12, 12, 10, 10, 9, 9, 556 10, 10, 10, 10, 10, 10, 10, 557}, 558{ 559 9, 9, 9, 9, 8, 8, 8, 8, 560 8, 8, 8, 8, 8, 8, 8, 8, 561 8, 8, 8, 8, 8, 8, 7, 7, 562 7, 7, 7, 7, 7, 7, 7, 7, 563 7, 7, 7, 7, 7, 7, 7, 7, 564 7, 7, 7, 7, 7, 7, 7, 7, 565 7, 7, 6, 6, 6, 6, 6, 6, 566 6, 6, 6, 6, 6, 6, 6, 6, 567 6, 6, 6, 6, 6, 6, 6, 6, 568 6, 6, 6, 7, 6, 7, 7, 7, 569 7, 7, 7, 7, 7, 7, 7, 7, 570 7, 7, 7, 7, 7, 7, 7, 7, 571 7, 7, 7, 7, 7, 7, 7, 8, 572 8, 8, 8, 8, 8, 8, 8, 8, 573 8, 8, 8, 8, 8, 8, 8, 8, 574 8, 8, 8, 9, 9, 9, 9, 575} 576}; 577 578#endif /* AVCODEC_MPC8HUFF_H */ 579