1/* 2 * DCA compatible decoder - huffman tables 3 * Copyright (C) 2004 Gildas Bazin 4 * Copyright (C) 2007 Konstantin Shishkov 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#include <stddef.h> 24 25#include "libavutil/avassert.h" 26#include "libavutil/macros.h" 27 28#include "dcahuff.h" 29#include "put_bits.h" 30 31#define TMODE_COUNT 4 32static const uint8_t tmode_vlc_bits[TMODE_COUNT] = { 3, 3, 3, 2 }; 33static const uint16_t tmode_codes[TMODE_COUNT][4] = { 34 { 0x0000, 0x0002, 0x0006, 0x0007 }, 35 { 0x0002, 0x0006, 0x0007, 0x0000 }, 36 { 0x0006, 0x0007, 0x0000, 0x0002 }, 37 { 0x0000, 0x0001, 0x0002, 0x0003 } 38}; 39 40static const uint8_t tmode_bits[TMODE_COUNT][4] = { 41 { 1, 2, 3, 3 }, 42 { 2, 3, 3, 1 }, 43 { 3, 3, 1, 2 }, 44 { 2, 2, 2, 2 } 45}; 46 47#define BITALLOC_12_VLC_BITS 9 48static const uint8_t bitalloc_12_vlc_bits[DCA_BITALLOC_12_COUNT] = { 49 9, 7, 7, 9, 9 50}; 51 52static const uint16_t bitalloc_12_codes[DCA_BITALLOC_12_COUNT][12] = { 53 { 0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, 0x00FF, 0x00FE, 54 0x01FB, 0x01FA, 0x01F9, 0x01F8, }, 55 { 0x0001, 0x0000, 0x0002, 0x000F, 0x000C, 0x001D, 0x0039, 0x0038, 56 0x0037, 0x0036, 0x0035, 0x0034, }, 57 { 0x0000, 0x0007, 0x0005, 0x0004, 0x0002, 0x000D, 0x000C, 0x0006, 58 0x000F, 0x001D, 0x0039, 0x0038, }, 59 { 0x0003, 0x0002, 0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, 60 0x007E, 0x00FE, 0x01FF, 0x01FE, }, 61 { 0x0001, 0x0000, 0x0002, 0x0006, 0x000E, 0x003F, 0x003D, 0x007C, 62 0x0079, 0x0078, 0x00FB, 0x00FA, } 63}; 64 65static const uint8_t bitalloc_12_bits[DCA_BITALLOC_12_COUNT][12] = { 66 { 1, 2, 3, 4, 5, 6, 8, 8, 9, 9, 9, 9 }, 67 { 1, 2, 3, 5, 5, 6, 7, 7, 7, 7, 7, 7 }, 68 { 2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 7, 7 }, 69 { 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10 }, 70 { 1, 2, 3, 4, 5, 7, 7, 8, 8, 8, 9, 9 } 71}; 72 73#define SCALES_COUNT 5 74#define SCALES_VLC_BITS 9 75static const uint16_t scales_codes[SCALES_COUNT][129] = { 76 { 0x3AB0, 0x3AB2, 0x3AB4, 0x3AB6, 0x3AB8, 0x3ABA, 0x3ABC, 0x3ABE, 77 0x3AC0, 0x3AC2, 0x3AC4, 0x3AC6, 0x3AC8, 0x3ACA, 0x3ACC, 0x3ACE, 78 0x3AD0, 0x3AD2, 0x3AD4, 0x3AD6, 0x3AD8, 0x3ADA, 0x3ADC, 0x3ADE, 79 0x3AE0, 0x3AE2, 0x3AE4, 0x3AE6, 0x3AE8, 0x3AEA, 0x3AEC, 0x3AEE, 80 0x3AF0, 0x3AF2, 0x3AF4, 0x3AF6, 0x3AF8, 0x3AFA, 0x3AFC, 0x3AFE, 81 0x0540, 0x0542, 0x0544, 0x0546, 0x0548, 0x054A, 0x054C, 0x054E, 82 0x0558, 0x055E, 0x02AD, 0x0154, 0x0754, 0x03A8, 0x0056, 0x0028, 83 0x00E8, 0x004A, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005, 84 0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x004B, 85 0x00E9, 0x0029, 0x0057, 0x03A9, 0x0755, 0x0155, 0x02AE, 0x055F, 86 0x0559, 0x054F, 0x054D, 0x054B, 0x0549, 0x0547, 0x0545, 0x0543, 87 0x0541, 0x3AFF, 0x3AFD, 0x3AFB, 0x3AF9, 0x3AF7, 0x3AF5, 0x3AF3, 88 0x3AF1, 0x3AEF, 0x3AED, 0x3AEB, 0x3AE9, 0x3AE7, 0x3AE5, 0x3AE3, 89 0x3AE1, 0x3ADF, 0x3ADD, 0x3ADB, 0x3AD9, 0x3AD7, 0x3AD5, 0x3AD3, 90 0x3AD1, 0x3ACF, 0x3ACD, 0x3ACB, 0x3AC9, 0x3AC7, 0x3AC5, 0x3AC3, 91 0x3AC1, 0x3ABF, 0x3ABD, 0x3ABB, 0x3AB9, 0x3AB7, 0x3AB5, 0x3AB3, 92 0x3AB1, }, 93 { 0x0F60, 0x0F62, 0x0F64, 0x0F66, 0x0F68, 0x0F6A, 0x0F6C, 0x0F6E, 94 0x0F70, 0x0F72, 0x0F74, 0x0F76, 0x0F78, 0x0F7A, 0x0F7C, 0x0F7E, 95 0x0F80, 0x0F82, 0x0F84, 0x0F86, 0x0F88, 0x0F8A, 0x0F8C, 0x0F8E, 96 0x0F90, 0x0F92, 0x0F94, 0x0F96, 0x0F98, 0x0F9A, 0x0F9C, 0x0F9E, 97 0x0FA0, 0x0FA2, 0x0FA4, 0x0FA6, 0x0FA8, 0x0FAA, 0x0FAC, 0x0FAE, 98 0x0FB0, 0x0FB2, 0x0FB4, 0x0FB6, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, 99 0x07A0, 0x07A2, 0x03D2, 0x01EA, 0x00FC, 0x007F, 0x001C, 0x000C, 100 0x0004, 0x0034, 0x0010, 0x001B, 0x0009, 0x000B, 0x000E, 0x0001, 101 0x0003, 0x0002, 0x000F, 0x000C, 0x000A, 0x0000, 0x0011, 0x0035, 102 0x0005, 0x000D, 0x001D, 0x003C, 0x00FD, 0x01EB, 0x03D3, 0x07A3, 103 0x07A1, 0x0FBF, 0x0FBD, 0x0FBB, 0x0FB9, 0x0FB7, 0x0FB5, 0x0FB3, 104 0x0FB1, 0x0FAF, 0x0FAD, 0x0FAB, 0x0FA9, 0x0FA7, 0x0FA5, 0x0FA3, 105 0x0FA1, 0x0F9F, 0x0F9D, 0x0F9B, 0x0F99, 0x0F97, 0x0F95, 0x0F93, 106 0x0F91, 0x0F8F, 0x0F8D, 0x0F8B, 0x0F89, 0x0F87, 0x0F85, 0x0F83, 107 0x0F81, 0x0F7F, 0x0F7D, 0x0F7B, 0x0F79, 0x0F77, 0x0F75, 0x0F73, 108 0x0F71, 0x0F6F, 0x0F6D, 0x0F6B, 0x0F69, 0x0F67, 0x0F65, 0x0F63, 109 0x0F61, }, 110 { 0x51D0, 0x51D2, 0x51D4, 0x51D6, 0x51D8, 0x51DA, 0x51DC, 0x51DE, 111 0x51E0, 0x51E2, 0x51E4, 0x51E6, 0x51E8, 0x51EA, 0x51EC, 0x51EE, 112 0x51F0, 0x51F2, 0x51F4, 0x51F6, 0x51F8, 0x51FA, 0x51FC, 0x51FE, 113 0x70C0, 0x70C2, 0x70C4, 0x70C6, 0x70C8, 0x70CA, 0x70CC, 0x70CE, 114 0x70EC, 0x10EA, 0x3868, 0x3877, 0x0876, 0x1C35, 0x0434, 0x0A34, 115 0x0E1B, 0x021B, 0x051B, 0x070F, 0x010F, 0x0380, 0x0080, 0x0140, 116 0x01C1, 0x0041, 0x00A1, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012, 117 0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000, 118 0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B, 119 0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A2, 0x0042, 120 0x01C2, 0x0141, 0x0081, 0x0381, 0x028C, 0x010C, 0x051C, 0x021C, 121 0x0E1C, 0x0A35, 0x0435, 0x1C3A, 0x0877, 0x0874, 0x3869, 0x10EB, 122 0x70ED, 0x70CF, 0x70CD, 0x70CB, 0x70C9, 0x70C7, 0x70C5, 0x70C3, 123 0x70C1, 0x51FF, 0x51FD, 0x51FB, 0x51F9, 0x51F7, 0x51F5, 0x51F3, 124 0x51F1, 0x51EF, 0x51ED, 0x51EB, 0x51E9, 0x51E7, 0x51E5, 0x51E3, 125 0x51E1, 0x51DF, 0x51DD, 0x51DB, 0x51D9, 0x51D7, 0x51D5, 0x51D3, 126 0x51D1, }, 127 { 0x6F64, 0x6F66, 0x6F68, 0x6F6A, 0x6F6C, 0x6F6E, 0x6F70, 0x6F72, 128 0x6F74, 0x6F76, 0x6F78, 0x6F7A, 0x6F7C, 0x6F7E, 0x6F80, 0x6F82, 129 0x6F84, 0x6F86, 0x6F88, 0x6F8A, 0x6F8C, 0x6F8E, 0x6F90, 0x6F92, 130 0x6F94, 0x6F96, 0x6F98, 0x6F9A, 0x6F9C, 0x6F9E, 0x6FA0, 0x6FA2, 131 0x6FA4, 0x6FA6, 0x6FA8, 0x6FAA, 0x6FAC, 0x6FAE, 0x6FB0, 0x6FB2, 132 0x6FB4, 0x6FB6, 0x17B4, 0x37DC, 0x0BDB, 0x1BEF, 0x05EE, 0x0DF8, 133 0x02F8, 0x06FD, 0x017D, 0x037F, 0x00BF, 0x0040, 0x00C0, 0x0021, 134 0x0061, 0x0011, 0x0031, 0x0009, 0x0019, 0x0006, 0x000E, 0x0004, 135 0x0000, 0x0005, 0x000F, 0x0007, 0x001A, 0x000A, 0x0036, 0x0016, 136 0x006E, 0x002E, 0x00C1, 0x0041, 0x01BC, 0x00BC, 0x037A, 0x017A, 137 0x02F9, 0x0DF9, 0x05EF, 0x05EC, 0x1BD8, 0x37DD, 0x17B5, 0x6FB7, 138 0x6FB5, 0x6FB3, 0x6FB1, 0x6FAF, 0x6FAD, 0x6FAB, 0x6FA9, 0x6FA7, 139 0x6FA5, 0x6FA3, 0x6FA1, 0x6F9F, 0x6F9D, 0x6F9B, 0x6F99, 0x6F97, 140 0x6F95, 0x6F93, 0x6F91, 0x6F8F, 0x6F8D, 0x6F8B, 0x6F89, 0x6F87, 141 0x6F85, 0x6F83, 0x6F81, 0x6F7F, 0x6F7D, 0x6F7B, 0x6F79, 0x6F77, 142 0x6F75, 0x6F73, 0x6F71, 0x6F6F, 0x6F6D, 0x6F6B, 0x6F69, 0x6F67, 143 0x6F65, }, 144 { 0xDF54, 0xDF56, 0xDFC8, 0xDFCA, 0xDFCC, 0xDFCE, 0xDFD0, 0xDFD2, 145 0xDFD4, 0xDFD6, 0xDFD8, 0xDFDA, 0xDFDC, 0xDFDE, 0xDFE0, 0xDFE2, 146 0x0FE8, 0x2FEA, 0x6FA8, 0x6FF6, 0x07F5, 0x07F7, 0x37D2, 0x37F9, 147 0x03F8, 0x0BF8, 0x0BFB, 0x1BEB, 0x01FA, 0x05FA, 0x09FA, 0x0DFA, 148 0x0DFF, 0x00FF, 0x02FF, 0x06FB, 0x007C, 0x017C, 0x027C, 0x027F, 149 0x003C, 0x00BC, 0x013C, 0x01BC, 0x001C, 0x005C, 0x009C, 0x00DC, 150 0x000C, 0x002C, 0x004C, 0x006C, 0x0004, 0x0014, 0x0024, 0x0034, 151 0x0000, 0x0008, 0x0010, 0x0018, 0x001E, 0x0002, 0x0006, 0x000A, 152 0x000E, 0x000B, 0x0007, 0x0003, 0x001F, 0x0019, 0x0011, 0x0009, 153 0x0001, 0x0035, 0x0025, 0x0015, 0x0005, 0x006D, 0x004D, 0x002D, 154 0x000D, 0x00DD, 0x009D, 0x005D, 0x001D, 0x01BD, 0x013D, 0x00BD, 155 0x003D, 0x037C, 0x027D, 0x017D, 0x007D, 0x06FC, 0x04FC, 0x02FC, 156 0x00FC, 0x0DFB, 0x09FB, 0x05FB, 0x01FB, 0x1BF8, 0x1BE8, 0x0BF9, 157 0x03F9, 0x37FA, 0x37D3, 0x17F4, 0x07F6, 0x6FF7, 0x6FA9, 0x2FEB, 158 0x0FE9, 0xDFE3, 0xDFE1, 0xDFDF, 0xDFDD, 0xDFDB, 0xDFD9, 0xDFD7, 159 0xDFD5, 0xDFD3, 0xDFD1, 0xDFCF, 0xDFCD, 0xDFCB, 0xDFC9, 0xDF57, 160 0xDF55, } 161}; 162 163static const uint8_t scales_bits[SCALES_COUNT][129] = { 164 { 14, 14, 14, 14, 14, 14, 14, 14, 165 14, 14, 14, 14, 14, 14, 14, 14, 166 14, 14, 14, 14, 14, 14, 14, 14, 167 14, 14, 14, 14, 14, 14, 14, 14, 168 14, 14, 14, 14, 14, 14, 14, 14, 169 13, 13, 13, 13, 13, 13, 13, 13, 170 13, 13, 12, 11, 11, 10, 9, 8, 171 8, 7, 6, 6, 5, 4, 4, 3, 172 2, 3, 3, 4, 5, 5, 6, 7, 173 8, 8, 9, 10, 11, 11, 12, 13, 174 13, 13, 13, 13, 13, 13, 13, 13, 175 13, 14, 14, 14, 14, 14, 14, 14, 176 14, 14, 14, 14, 14, 14, 14, 14, 177 14, 14, 14, 14, 14, 14, 14, 14, 178 14, 14, 14, 14, 14, 14, 14, 14, 179 14, 14, 14, 14, 14, 14, 14, 14, 180 14, }, 181 { 15, 15, 15, 15, 15, 15, 15, 15, 182 15, 15, 15, 15, 15, 15, 15, 15, 183 15, 15, 15, 15, 15, 15, 15, 15, 184 15, 15, 15, 15, 15, 15, 15, 15, 185 15, 15, 15, 15, 15, 15, 15, 15, 186 15, 15, 15, 15, 15, 15, 15, 15, 187 14, 14, 13, 12, 11, 10, 8, 7, 188 6, 6, 5, 5, 4, 4, 4, 3, 189 3, 3, 4, 4, 4, 4, 5, 6, 190 6, 7, 8, 9, 11, 12, 13, 14, 191 14, 15, 15, 15, 15, 15, 15, 15, 192 15, 15, 15, 15, 15, 15, 15, 15, 193 15, 15, 15, 15, 15, 15, 15, 15, 194 15, 15, 15, 15, 15, 15, 15, 15, 195 15, 15, 15, 15, 15, 15, 15, 15, 196 15, 15, 15, 15, 15, 15, 15, 15, 197 15, }, 198 { 15, 15, 15, 15, 15, 15, 15, 15, 199 15, 15, 15, 15, 15, 15, 15, 15, 200 15, 15, 15, 15, 15, 15, 15, 15, 201 15, 15, 15, 15, 15, 15, 15, 15, 202 15, 14, 14, 14, 13, 13, 12, 12, 203 12, 11, 11, 11, 10, 10, 9, 9, 204 9, 8, 8, 8, 7, 7, 7, 6, 205 6, 6, 5, 5, 5, 4, 4, 3, 206 3, 3, 4, 4, 5, 5, 5, 6, 207 6, 6, 7, 7, 7, 8, 8, 8, 208 9, 9, 9, 10, 10, 10, 11, 11, 209 12, 12, 12, 13, 13, 13, 14, 14, 210 15, 15, 15, 15, 15, 15, 15, 15, 211 15, 15, 15, 15, 15, 15, 15, 15, 212 15, 15, 15, 15, 15, 15, 15, 15, 213 15, 15, 15, 15, 15, 15, 15, 15, 214 15, }, 215 { 15, 15, 15, 15, 15, 15, 15, 15, 216 15, 15, 15, 15, 15, 15, 15, 15, 217 15, 15, 15, 15, 15, 15, 15, 15, 218 15, 15, 15, 15, 15, 15, 15, 15, 219 15, 15, 15, 15, 15, 15, 15, 15, 220 15, 15, 14, 14, 13, 13, 12, 12, 221 11, 11, 10, 10, 9, 8, 8, 7, 222 7, 6, 6, 5, 5, 4, 4, 3, 223 2, 3, 4, 4, 5, 5, 6, 6, 224 7, 7, 8, 8, 9, 9, 10, 10, 225 11, 12, 12, 12, 13, 14, 14, 15, 226 15, 15, 15, 15, 15, 15, 15, 15, 227 15, 15, 15, 15, 15, 15, 15, 15, 228 15, 15, 15, 15, 15, 15, 15, 15, 229 15, 15, 15, 15, 15, 15, 15, 15, 230 15, 15, 15, 15, 15, 15, 15, 15, 231 15, }, 232 { 16, 16, 16, 16, 16, 16, 16, 16, 233 16, 16, 16, 16, 16, 16, 16, 16, 234 15, 15, 15, 15, 14, 14, 14, 14, 235 13, 13, 13, 13, 12, 12, 12, 12, 236 12, 11, 11, 11, 10, 10, 10, 10, 237 9, 9, 9, 9, 8, 8, 8, 8, 238 7, 7, 7, 7, 6, 6, 6, 6, 239 5, 5, 5, 5, 5, 4, 4, 4, 240 4, 4, 4, 4, 5, 5, 5, 5, 241 5, 6, 6, 6, 6, 7, 7, 7, 242 7, 8, 8, 8, 8, 9, 9, 9, 243 9, 10, 10, 10, 10, 11, 11, 11, 244 11, 12, 12, 12, 12, 13, 13, 13, 245 13, 14, 14, 14, 14, 15, 15, 15, 246 15, 16, 16, 16, 16, 16, 16, 16, 247 16, 16, 16, 16, 16, 16, 16, 16, 248 16, 249 } 250}; 251 252static const uint16_t bitalloc_3_codes[3] = { 253 0x0003, 0x0000, 0x0002, 254}; 255 256static const uint8_t bitalloc_3_bits[3] = { 257 2, 1, 2, 258}; 259 260static const uint16_t bitalloc_5_codes_a[5] = { 261 0x000F, 0x0006, 0x0000, 0x0002, 0x000E, 262}; 263 264static const uint16_t bitalloc_5_codes_b[5] = { 265 0x0007, 0x0001, 0x0002, 0x0000, 0x0006, 266}; 267 268static const uint16_t bitalloc_5_codes_c[5] = { 269 0x0007, 0x0005, 0x0000, 0x0004, 0x0006, 270}; 271 272static const uint8_t bitalloc_5_bits_a[5] = { 273 4, 3, 1, 2, 4, 274}; 275 276static const uint8_t bitalloc_5_bits_b[5] = { 277 3, 2, 2, 2, 3, 278}; 279 280static const uint8_t bitalloc_5_bits_c[5] = { 281 3, 3, 1, 3, 3, 282}; 283 284static const uint16_t bitalloc_7_codes_a[7] = { 285 0x001E, 0x000E, 0x0005, 0x0000, 0x0006, 0x0004, 0x001F, 286}; 287 288static const uint16_t bitalloc_7_codes_b[7] = { 289 0x0014, 0x000B, 0x0000, 0x0003, 0x0001, 0x0004, 0x0015, 290}; 291 292static const uint16_t bitalloc_7_codes_c[7] = { 293 0x0000, 0x0002, 0x0001, 0x0003, 0x0002, 0x0003, 0x0001, 294}; 295 296static const uint8_t bitalloc_7_bits_a[7] = { 297 5, 4, 3, 1, 3, 3, 5, 298}; 299 300static const uint8_t bitalloc_7_bits_b[7] = { 301 5, 4, 2, 2, 2, 3, 5, 302}; 303 304static const uint8_t bitalloc_7_bits_c[7] = { 305 4, 4, 2, 2, 2, 4, 4, 306}; 307 308static const uint16_t bitalloc_9_codes_a[9] = { 309 0x0030, 0x0019, 0x0009, 0x0005, 0x0000, 0x0007, 0x000D, 0x0008, 310 0x0031, 311}; 312 313static const uint16_t bitalloc_9_codes_b[9] = { 314 0x0018, 0x001A, 0x0002, 0x0007, 0x0002, 0x0000, 0x0003, 0x001B, 315 0x0019, 316}; 317 318static const uint16_t bitalloc_9_codes_c[9] = { 319 0x001C, 0x000F, 0x0002, 0x0007, 0x0002, 0x0000, 0x0006, 0x0006, 320 0x001D, 321}; 322 323static const uint8_t bitalloc_9_bits_a[9] = { 324 6, 5, 4, 3, 1, 3, 4, 4, 6, 325}; 326 327static const uint8_t bitalloc_9_bits_b[9] = { 328 5, 5, 3, 3, 2, 2, 3, 5, 5, 329}; 330 331static const uint8_t bitalloc_9_bits_c[9] = { 332 6, 5, 3, 3, 2, 2, 3, 4, 6, 333}; 334 335static const uint16_t bitalloc_13_codes_a[13] = { 336 0x0070, 0x002E, 0x0039, 0x001D, 0x000C, 0x000F, 0x0000, 0x0004, 337 0x000D, 0x000A, 0x0016, 0x002F, 0x0071, 338}; 339 340static const uint16_t bitalloc_13_codes_b[13] = { 341 0x0038, 0x0010, 0x001D, 0x0007, 0x000F, 0x0005, 0x0000, 0x0006, 342 0x0002, 0x0009, 0x0006, 0x0011, 0x0039, 343}; 344 345static const uint16_t bitalloc_13_codes_c[13] = { 346 0x0004, 0x001A, 0x0003, 0x000E, 0x0000, 0x0003, 0x0005, 0x0004, 347 0x0002, 0x000F, 0x000C, 0x001B, 0x0005, 348}; 349 350static const uint8_t bitalloc_13_bits_a[13] = { 351 7, 6, 6, 5, 4, 4, 1, 3, 4, 4, 5, 6, 7, 352}; 353 354static const uint8_t bitalloc_13_bits_b[13] = { 355 6, 5, 5, 4, 4, 3, 2, 3, 3, 4, 4, 5, 6, 356}; 357 358static const uint8_t bitalloc_13_bits_c[13] = { 359 5, 5, 4, 4, 3, 3, 3, 3, 3, 4, 4, 5, 5, 360}; 361 362static const uint16_t bitalloc_17_codes_a[17] = { 363 0x0154, 0x00AB, 0x002B, 0x000B, 0x0003, 0x000A, 0x0001, 0x0006, 364 0x0001, 0x0007, 0x0004, 0x000B, 0x0000, 0x0004, 0x0014, 0x0054, 365 0x0155, 366}; 367 368static const uint16_t bitalloc_17_codes_b[17] = { 369 0x007C, 0x003F, 0x0019, 0x000D, 0x001C, 0x0008, 0x000F, 0x0005, 370 0x0000, 0x0006, 0x0002, 0x0009, 0x001D, 0x000E, 0x001E, 0x0018, 371 0x007D, 372}; 373 374static const uint16_t bitalloc_17_codes_c[17] = { 375 0x002C, 0x0017, 0x0005, 0x001C, 0x0003, 0x000A, 0x000F, 0x0003, 376 0x0006, 0x0004, 0x0000, 0x000B, 0x0004, 0x001D, 0x000A, 0x0004, 377 0x002D, 378}; 379 380static const uint16_t bitalloc_17_codes_d[17] = { 381 0x0100, 0x0102, 0x0082, 0x0042, 0x0022, 0x0012, 0x000A, 0x0006, 382 0x0000, 0x0007, 0x000B, 0x0013, 0x0023, 0x0043, 0x0083, 0x0103, 383 0x0101, 384}; 385 386static const uint16_t bitalloc_17_codes_e[17] = { 387 0x00E8, 0x00F6, 0x0075, 0x0034, 0x003B, 0x001B, 0x001F, 0x0004, 388 0x0000, 0x0005, 0x000C, 0x001C, 0x003C, 0x0035, 0x007A, 0x00F7, 389 0x00E9, 390}; 391 392static const uint16_t bitalloc_17_codes_f[17] = { 393 0x0004, 0x0003, 0x001E, 0x0001, 0x0001, 0x000E, 0x0001, 0x0004, 394 0x0006, 0x0005, 0x0002, 0x000F, 0x0006, 0x000E, 0x001F, 0x0000, 395 0x0005, 396}; 397 398static const uint16_t bitalloc_17_codes_g[17] = { 399 0x0060, 0x007E, 0x0031, 0x0019, 0x000D, 0x0004, 0x0000, 0x0006, 400 0x0002, 0x0007, 0x0001, 0x0005, 0x000E, 0x001E, 0x003E, 0x007F, 401 0x0061, 402}; 403 404static const uint8_t bitalloc_17_bits_a[17] = { 405 12, 11, 9, 7, 5, 4, 3, 3, 2, 3, 3, 4, 4, 6, 8, 10, 406 12, 407}; 408 409static const uint8_t bitalloc_17_bits_b[17] = { 410 8, 7, 6, 5, 5, 4, 4, 3, 2, 3, 3, 4, 5, 5, 6, 6, 411 8, 412}; 413 414static const uint8_t bitalloc_17_bits_c[17] = { 415 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 4, 4, 5, 5, 5, 416 7, 417}; 418 419static const uint8_t bitalloc_17_bits_d[17] = { 420 9, 9, 8, 7, 6, 5, 4, 3, 1, 3, 4, 5, 6, 7, 8, 9, 421 9, 422}; 423 424static const uint8_t bitalloc_17_bits_e[17] = { 425 8, 8, 7, 6, 6, 5, 5, 3, 1, 3, 4, 5, 6, 6, 7, 8, 426 8, 427}; 428 429static const uint8_t bitalloc_17_bits_f[17] = { 430 8, 7, 6, 5, 4, 4, 3, 3, 3, 3, 3, 4, 4, 5, 6, 6, 431 8, 432}; 433 434static const uint8_t bitalloc_17_bits_g[17] = { 435 8, 8, 7, 6, 5, 4, 3, 3, 2, 3, 3, 4, 5, 6, 7, 8, 436 8, 437}; 438 439static const uint16_t bitalloc_25_codes_a[25] = { 440 0x2854, 0x142B, 0x050B, 0x0143, 0x00A2, 0x0052, 0x002E, 0x0015, 441 0x0004, 0x000E, 0x0000, 0x0003, 0x0006, 0x0004, 0x0001, 0x000F, 442 0x0005, 0x0016, 0x002F, 0x0053, 0x00A3, 0x00A0, 0x0284, 0x0A14, 443 0x2855, 444}; 445 446static const uint16_t bitalloc_25_codes_b[25] = { 447 0x001C, 0x000F, 0x0005, 0x0000, 0x0030, 0x0036, 0x000E, 0x0019, 448 0x0001, 0x0008, 0x000E, 0x0001, 0x0005, 0x0002, 0x000F, 0x0009, 449 0x0006, 0x001A, 0x000F, 0x0037, 0x0031, 0x0001, 0x0006, 0x0004, 450 0x001D, 451}; 452 453static const uint16_t bitalloc_25_codes_c[25] = { 454 0x004C, 0x0027, 0x006D, 0x0028, 0x0037, 0x000E, 0x0015, 0x0000, 455 0x0005, 0x0008, 0x000B, 0x000E, 0x0001, 0x000F, 0x000C, 0x0009, 456 0x0006, 0x0001, 0x001A, 0x000F, 0x0008, 0x0029, 0x0012, 0x006C, 457 0x004D, 458}; 459 460static const uint16_t bitalloc_25_codes_d[25] = { 461 0x0780, 0x0782, 0x03C2, 0x01E2, 0x00FE, 0x0079, 0x003D, 0x001C, 462 0x000C, 0x0004, 0x0000, 0x0006, 0x0002, 0x0007, 0x0001, 0x0005, 463 0x000D, 0x001D, 0x003E, 0x007E, 0x00FF, 0x01E3, 0x03C3, 0x0783, 464 0x0781, 465}; 466 467static const uint16_t bitalloc_25_codes_e[25] = { 468 0x003C, 0x0092, 0x0018, 0x001F, 0x004E, 0x000D, 0x0025, 0x0004, 469 0x0010, 0x0000, 0x000A, 0x0002, 0x0003, 0x0003, 0x000B, 0x0001, 470 0x0011, 0x0005, 0x0026, 0x000E, 0x004F, 0x0048, 0x0019, 0x0093, 471 0x003D, 472}; 473 474static const uint16_t bitalloc_25_codes_f[25] = { 475 0x0324, 0x0193, 0x00CE, 0x0065, 0x0024, 0x000C, 0x0013, 0x0004, 476 0x0007, 0x000A, 0x000D, 0x000F, 0x0001, 0x0000, 0x000E, 0x000B, 477 0x0008, 0x0005, 0x0018, 0x000D, 0x0025, 0x0066, 0x00CF, 0x00C8, 478 0x0325, 479}; 480 481static const uint16_t bitalloc_25_codes_g[25] = { 482 0x03A8, 0x03AE, 0x01D5, 0x0094, 0x0014, 0x004B, 0x000B, 0x003B, 483 0x0013, 0x0003, 0x000F, 0x0005, 0x0001, 0x0006, 0x0000, 0x0008, 484 0x001C, 0x0004, 0x0024, 0x0074, 0x0015, 0x0095, 0x01D6, 0x03AF, 485 0x03A9, 486}; 487 488static const uint8_t bitalloc_25_bits_a[25] = { 489 14, 13, 11, 9, 8, 7, 6, 5, 4, 4, 3, 3, 3, 3, 3, 4, 490 4, 5, 6, 7, 8, 8, 10, 12, 14, 491}; 492 493static const uint8_t bitalloc_25_bits_b[25] = { 494 9, 8, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 4, 4, 495 4, 5, 5, 6, 6, 6, 7, 7, 9, 496}; 497 498static const uint8_t bitalloc_25_bits_c[25] = { 499 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 4, 4, 3, 4, 4, 4, 500 4, 4, 5, 5, 5, 6, 6, 7, 8, 501}; 502 503static const uint8_t bitalloc_25_bits_d[25] = { 504 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 3, 2, 3, 3, 4, 505 5, 6, 7, 8, 9, 10, 11, 12, 12, 506}; 507 508static const uint8_t bitalloc_25_bits_e[25] = { 509 8, 8, 7, 7, 7, 6, 6, 5, 5, 4, 4, 3, 2, 3, 4, 4, 510 5, 5, 6, 6, 7, 7, 7, 8, 8, 511}; 512 513static const uint8_t bitalloc_25_bits_f[25] = { 514 10, 9, 8, 7, 6, 5, 5, 4, 4, 4, 4, 4, 3, 3, 4, 4, 515 4, 4, 5, 5, 6, 7, 8, 8, 10, 516}; 517 518static const uint8_t bitalloc_25_bits_g[25] = { 519 10, 10, 9, 8, 7, 7, 6, 6, 5, 4, 4, 3, 2, 3, 3, 4, 520 5, 5, 6, 7, 7, 8, 9, 10, 10, 521}; 522 523static const uint16_t bitalloc_33_codes_a[33] = { 524 0x1580, 0x1582, 0x0AC2, 0x0562, 0x02B2, 0x015E, 0x00AD, 0x0054, 525 0x001C, 0x003C, 0x000F, 0x001F, 0x0008, 0x000B, 0x000D, 0x0000, 526 0x0002, 0x0001, 0x000E, 0x000C, 0x0009, 0x0006, 0x0014, 0x003D, 527 0x001D, 0x0055, 0x00AE, 0x015F, 0x02B3, 0x0563, 0x0AC3, 0x1583, 528 0x1581, 529}; 530 531static const uint16_t bitalloc_33_codes_b[33] = { 532 0x030C, 0x0187, 0x006D, 0x0028, 0x0037, 0x0066, 0x0015, 0x0031, 533 0x0000, 0x000B, 0x0012, 0x001A, 0x0001, 0x0007, 0x000A, 0x000E, 534 0x0001, 0x000F, 0x000B, 0x0008, 0x0004, 0x001B, 0x0013, 0x000C, 535 0x0001, 0x0032, 0x001A, 0x0067, 0x0060, 0x0029, 0x00C2, 0x006C, 536 0x030D, 537}; 538 539static const uint16_t bitalloc_33_codes_c[33] = { 540 0x00CC, 0x0067, 0x0005, 0x0070, 0x0003, 0x001A, 0x0039, 0x003F, 541 0x000A, 0x0012, 0x0018, 0x001D, 0x0001, 0x0003, 0x0007, 0x000A, 542 0x000D, 0x000B, 0x0008, 0x0004, 0x0002, 0x001E, 0x0019, 0x0013, 543 0x000B, 0x0000, 0x003E, 0x001B, 0x0018, 0x0071, 0x0032, 0x0004, 544 0x00CD, 545}; 546 547static const uint16_t bitalloc_33_codes_d[33] = { 548 0x3AF8, 0x3AFA, 0x1D7E, 0x0EBC, 0x075C, 0x03AC, 0x01D4, 0x0094, 549 0x0014, 0x004B, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005, 550 0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x0074, 551 0x0015, 0x0095, 0x01D5, 0x03AD, 0x075D, 0x0EBD, 0x1D7F, 0x3AFB, 552 0x3AF9, 553}; 554 555static const uint16_t bitalloc_33_codes_e[33] = { 556 0x01C8, 0x01E6, 0x0064, 0x00E2, 0x00E5, 0x0030, 0x0033, 0x0073, 557 0x007A, 0x001A, 0x003A, 0x0002, 0x001A, 0x001F, 0x0007, 0x0001, 558 0x0002, 0x0002, 0x000C, 0x0000, 0x001B, 0x0003, 0x003B, 0x001B, 559 0x007B, 0x0078, 0x0070, 0x0031, 0x00F2, 0x00E3, 0x0065, 0x01E7, 560 0x01C9, 561}; 562 563static const uint16_t bitalloc_33_codes_f[33] = { 564 0x0724, 0x0393, 0x01CE, 0x00E5, 0x002C, 0x0008, 0x0017, 0x003E, 565 0x0005, 0x0014, 0x001D, 0x0000, 0x0003, 0x0006, 0x0008, 0x000B, 566 0x000D, 0x000C, 0x0009, 0x0007, 0x0004, 0x0001, 0x001E, 0x0015, 567 0x000A, 0x003F, 0x0038, 0x0009, 0x002D, 0x00E6, 0x01CF, 0x01C8, 568 0x0725, 569}; 570 571static const uint16_t bitalloc_33_codes_g[33] = { 572 0x0284, 0x0042, 0x0140, 0x0143, 0x003E, 0x00BE, 0x0011, 0x0051, 573 0x0009, 0x0029, 0x0005, 0x0015, 0x0000, 0x0008, 0x000E, 0x0002, 574 0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0016, 0x0006, 0x002E, 575 0x000E, 0x005E, 0x001E, 0x00BF, 0x003F, 0x0020, 0x0141, 0x0043, 576 0x0285, 577}; 578 579static const uint8_t bitalloc_33_bits_a[33] = { 580 13, 13, 12, 11, 10, 9, 8, 7, 6, 6, 5, 5, 4, 4, 4, 3, 581 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 582 13, 583}; 584 585static const uint8_t bitalloc_33_bits_b[33] = { 586 10, 9, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 587 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 588 10, 589}; 590 591static const uint8_t bitalloc_33_bits_c[33] = { 592 9, 8, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 593 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, 594 9, 595}; 596 597static const uint8_t bitalloc_33_bits_d[33] = { 598 14, 14, 13, 12, 11, 10, 9, 8, 7, 7, 6, 6, 5, 4, 4, 3, 599 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 600 14, 601}; 602 603static const uint8_t bitalloc_33_bits_e[33] = { 604 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 5, 5, 5, 4, 3, 605 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 606 9, 607}; 608 609static const uint8_t bitalloc_33_bits_f[33] = { 610 11, 10, 9, 8, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 611 4, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, 612 11, 613}; 614 615static const uint8_t bitalloc_33_bits_g[33] = { 616 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 617 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 618 10, 619}; 620 621static const uint16_t bitalloc_65_codes_a[65] = { 622 0x9E5C, 0x9E5E, 0x4F2C, 0x2794, 0x13C4, 0x1E44, 0x09E3, 0x0F23, 623 0x04F3, 0x0792, 0x027E, 0x03CE, 0x013D, 0x01E5, 0x009C, 0x00CC, 624 0x0040, 0x0058, 0x0067, 0x001E, 0x0021, 0x002D, 0x003D, 0x0007, 625 0x0011, 0x0014, 0x0017, 0x001A, 0x001C, 0x001F, 0x0001, 0x0004, 626 0x0006, 0x0005, 0x0002, 0x0000, 0x001D, 0x001B, 0x0018, 0x0015, 627 0x0012, 0x000E, 0x0006, 0x0032, 0x0026, 0x001F, 0x0078, 0x0059, 628 0x0041, 0x00CD, 0x009D, 0x01E6, 0x013E, 0x03CF, 0x027F, 0x0793, 629 0x0790, 0x04F0, 0x09E4, 0x1E45, 0x13C5, 0x2795, 0x4F2D, 0x9E5F, 630 0x9E5D, 631}; 632 633static const uint16_t bitalloc_65_codes_b[65] = { 634 0x0A8C, 0x0547, 0x01B5, 0x0008, 0x00DB, 0x0152, 0x0005, 0x000B, 635 0x008E, 0x00AE, 0x00E4, 0x0003, 0x0037, 0x0039, 0x0055, 0x006C, 636 0x0073, 0x0003, 0x0015, 0x001D, 0x0028, 0x0030, 0x0037, 0x003E, 637 0x0006, 0x000B, 0x000F, 0x0012, 0x0016, 0x0019, 0x001D, 0x0001, 638 0x0004, 0x0002, 0x001E, 0x001A, 0x0017, 0x0013, 0x0010, 0x000C, 639 0x0007, 0x003F, 0x0038, 0x0031, 0x0029, 0x0022, 0x001A, 0x0014, 640 0x0000, 0x006D, 0x0056, 0x0046, 0x0038, 0x0004, 0x00E5, 0x00AF, 641 0x008F, 0x006C, 0x000A, 0x0153, 0x0150, 0x0009, 0x02A2, 0x01B4, 642 0x0A8D, 643}; 644 645static const uint16_t bitalloc_65_codes_c[65] = { 646 0x045C, 0x022F, 0x03F5, 0x01BC, 0x01FB, 0x0059, 0x00D0, 0x00DF, 647 0x000A, 0x002D, 0x002F, 0x0052, 0x0069, 0x0078, 0x007F, 0x000A, 648 0x0010, 0x001C, 0x0023, 0x002A, 0x0035, 0x003A, 0x003D, 0x0000, 649 0x0003, 0x0006, 0x0009, 0x000C, 0x000F, 0x0012, 0x0016, 0x0018, 650 0x001C, 0x0019, 0x0017, 0x0013, 0x0010, 0x000D, 0x000A, 0x0007, 651 0x0004, 0x0001, 0x003E, 0x003B, 0x0036, 0x002B, 0x0028, 0x001D, 652 0x0011, 0x000B, 0x0004, 0x0079, 0x006E, 0x0053, 0x0044, 0x002E, 653 0x000B, 0x00FC, 0x00D1, 0x008A, 0x0058, 0x01BD, 0x0116, 0x03F4, 654 0x045D, 655}; 656 657static const uint16_t bitalloc_65_codes_d[65] = { 658 0x70B0, 0x70B2, 0x70B4, 0x2852, 0x385B, 0x142E, 0x1C2E, 0x0A15, 659 0x0E14, 0x0214, 0x0704, 0x0104, 0x010B, 0x0383, 0x0083, 0x0143, 660 0x01C3, 0x0043, 0x00A2, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012, 661 0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000, 662 0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B, 663 0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A3, 0x00A0, 664 0x0040, 0x01C0, 0x0084, 0x0384, 0x0284, 0x0105, 0x0705, 0x0215, 665 0x0E15, 0x0A16, 0x1C2F, 0x142F, 0x1428, 0x2853, 0x70B5, 0x70B3, 666 0x70B1, 667}; 668 669static const uint16_t bitalloc_65_codes_e[65] = { 670 0x032C, 0x0332, 0x0378, 0x037E, 0x008C, 0x014A, 0x0188, 0x0197, 671 0x019E, 0x01BD, 0x0044, 0x0047, 0x00AA, 0x00C5, 0x00CD, 0x00DC, 672 0x001C, 0x002C, 0x0053, 0x0063, 0x0068, 0x0008, 0x000F, 0x0017, 673 0x002B, 0x0035, 0x0005, 0x0009, 0x0016, 0x001C, 0x0006, 0x000F, 674 0x0004, 0x0000, 0x0007, 0x001D, 0x0017, 0x000A, 0x0006, 0x0036, 675 0x0030, 0x0028, 0x0010, 0x0009, 0x0069, 0x0064, 0x0054, 0x002D, 676 0x001D, 0x00DD, 0x00CE, 0x00CA, 0x00AB, 0x00A4, 0x0045, 0x01BE, 677 0x019F, 0x0198, 0x0189, 0x014B, 0x008D, 0x037F, 0x0379, 0x0333, 678 0x032D, 679}; 680 681static const uint16_t bitalloc_65_codes_f[65] = { 682 0x0FE0, 0x0FE2, 0x0FE8, 0x0FEA, 0x0FEC, 0x0FEE, 0x0FF0, 0x0FF2, 683 0x0FF4, 0x2FF2, 0x07F2, 0x07FB, 0x03F6, 0x0BFA, 0x0BFD, 0x01FF, 684 0x05FF, 0x02FC, 0x007C, 0x017C, 0x003C, 0x00BC, 0x001C, 0x005C, 685 0x000C, 0x002C, 0x0004, 0x0014, 0x0000, 0x0008, 0x000E, 0x0002, 686 0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0015, 0x0005, 0x002D, 687 0x000D, 0x005D, 0x001D, 0x00BD, 0x003D, 0x017D, 0x007D, 0x02FD, 688 0x00FC, 0x05FC, 0x01FA, 0x0BFB, 0x03F7, 0x17F8, 0x07F3, 0x2FF3, 689 0x0FF5, 0x0FF3, 0x0FF1, 0x0FEF, 0x0FED, 0x0FEB, 0x0FE9, 0x0FE3, 690 0x0FE1, 691}; 692 693static const uint16_t bitalloc_65_codes_g[65] = { 694 0x010C, 0x038A, 0x0608, 0x0786, 0x0084, 0x0087, 0x0302, 0x0305, 695 0x0040, 0x00E0, 0x00E3, 0x0183, 0x001E, 0x005E, 0x009E, 0x00DE, 696 0x00F1, 0x0011, 0x0039, 0x0061, 0x0079, 0x0009, 0x001D, 0x0031, 697 0x003D, 0x0005, 0x000F, 0x0019, 0x001F, 0x0003, 0x0006, 0x000A, 698 0x000E, 0x000B, 0x0008, 0x0004, 0x0000, 0x001A, 0x0012, 0x000A, 699 0x0002, 0x0036, 0x0026, 0x0016, 0x0006, 0x006E, 0x004E, 0x002E, 700 0x000E, 0x00DF, 0x009F, 0x005F, 0x001F, 0x01E0, 0x0180, 0x00E1, 701 0x0041, 0x03C2, 0x0303, 0x01C4, 0x0085, 0x0787, 0x0609, 0x038B, 702 0x010D, 703}; 704 705static const uint8_t bitalloc_65_bits_a[65] = { 706 16, 16, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 707 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 4, 708 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 709 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 13, 13, 14, 15, 16, 710 16, 711}; 712 713static const uint8_t bitalloc_65_bits_b[65] = { 714 12, 11, 10, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 715 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 716 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 717 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 10, 10, 718 12, 719}; 720 721static const uint8_t bitalloc_65_bits_c[65] = { 722 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 723 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 724 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 725 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 10, 726 11, 727}; 728 729static const uint8_t bitalloc_65_bits_d[65] = { 730 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 731 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 3, 732 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 733 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 15, 15, 734 15, 735}; 736 737static const uint8_t bitalloc_65_bits_e[65] = { 738 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 739 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 740 3, 3, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 741 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 742 10, 743}; 744 745static const uint8_t bitalloc_65_bits_f[65] = { 746 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 747 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 748 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 749 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 750 14, 751}; 752 753static const uint8_t bitalloc_65_bits_g[65] = { 754 11, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 755 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 756 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 757 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 758 11, 759}; 760 761static const uint16_t bitalloc_129_codes_a[129] = { 762 0x0660, 0x0666, 0x06EC, 0x0722, 0x0760, 0x076E, 0x004C, 0x004E, 763 0x00F4, 0x010A, 0x0148, 0x0156, 0x01D4, 0x01F2, 0x0331, 0x0370, 764 0x0377, 0x0396, 0x03B1, 0x0024, 0x0064, 0x007B, 0x008A, 0x00A5, 765 0x00D4, 0x00EB, 0x00FA, 0x019A, 0x01B9, 0x01C9, 0x01D9, 0x0010, 766 0x0030, 0x0033, 0x0043, 0x0053, 0x006B, 0x007A, 0x00CA, 0x00D2, 767 0x00DE, 0x00E6, 0x00F6, 0x000E, 0x001F, 0x0023, 0x002B, 0x003B, 768 0x003F, 0x0067, 0x0070, 0x0077, 0x0005, 0x000D, 0x0012, 0x001B, 769 0x002C, 0x0035, 0x003A, 0x0004, 0x000B, 0x0017, 0x001F, 0x0009, 770 0x0008, 0x000A, 0x0000, 0x0018, 0x000C, 0x0005, 0x003C, 0x0036, 771 0x002D, 0x001C, 0x0013, 0x000E, 0x0006, 0x007A, 0x0071, 0x0068, 772 0x0064, 0x003C, 0x0034, 0x0028, 0x0020, 0x000F, 0x00F7, 0x00E7, 773 0x00DF, 0x00D3, 0x00CB, 0x007B, 0x0074, 0x0054, 0x0044, 0x003C, 774 0x0031, 0x0011, 0x01DA, 0x01CA, 0x01BA, 0x019B, 0x00FB, 0x00F8, 775 0x00D5, 0x00AA, 0x008B, 0x0084, 0x0065, 0x0025, 0x03B6, 0x0397, 776 0x0390, 0x0371, 0x0332, 0x01F3, 0x01D5, 0x0157, 0x0149, 0x010B, 777 0x00F5, 0x004F, 0x004D, 0x076F, 0x0761, 0x0723, 0x06ED, 0x0667, 778 0x0661, 779}; 780 781static const uint16_t bitalloc_129_codes_b[129] = { 782 0x29DC, 0x14EF, 0x0455, 0x0E9C, 0x022B, 0x0489, 0x0740, 0x074F, 783 0x0172, 0x0245, 0x0247, 0x030A, 0x03A1, 0x001C, 0x008B, 0x00D6, 784 0x010C, 0x0148, 0x014F, 0x0186, 0x01D1, 0x0008, 0x000F, 0x0046, 785 0x005D, 0x0078, 0x0087, 0x0096, 0x00A5, 0x00BC, 0x00D8, 0x00DE, 786 0x00F6, 0x0005, 0x0014, 0x0024, 0x002F, 0x003A, 0x003D, 0x0049, 787 0x0050, 0x0058, 0x005F, 0x0066, 0x006D, 0x0075, 0x007C, 0x0004, 788 0x000B, 0x0013, 0x0018, 0x001B, 0x001F, 0x0022, 0x0026, 0x002A, 789 0x002D, 0x0031, 0x0034, 0x0038, 0x003B, 0x003F, 0x0003, 0x0006, 790 0x000A, 0x0007, 0x0004, 0x0000, 0x003C, 0x0039, 0x0035, 0x0032, 791 0x002E, 0x002B, 0x0027, 0x0023, 0x0020, 0x001C, 0x0019, 0x0016, 792 0x0010, 0x0005, 0x007D, 0x007A, 0x006E, 0x0067, 0x0060, 0x0059, 793 0x0051, 0x004A, 0x0042, 0x003B, 0x0034, 0x0025, 0x0015, 0x0006, 794 0x00F7, 0x00DF, 0x00D9, 0x00BD, 0x00A6, 0x0097, 0x0090, 0x0079, 795 0x006A, 0x0047, 0x0044, 0x0009, 0x01D2, 0x0187, 0x0184, 0x0149, 796 0x010D, 0x00D7, 0x00B8, 0x001D, 0x03A6, 0x030B, 0x029C, 0x0246, 797 0x0173, 0x0114, 0x0741, 0x053A, 0x0488, 0x0E9D, 0x0A76, 0x0454, 798 0x29DD, 799}; 800 801static const uint16_t bitalloc_129_codes_c[129] = { 802 0x0E5C, 0x072F, 0x001D, 0x0724, 0x000F, 0x010D, 0x0324, 0x0393, 803 0x03E9, 0x0080, 0x0087, 0x00FA, 0x0164, 0x0193, 0x01DE, 0x01F5, 804 0x0010, 0x002A, 0x0041, 0x0064, 0x0073, 0x008E, 0x00A4, 0x00B3, 805 0x00D6, 0x00E5, 0x00F4, 0x00FB, 0x0002, 0x0009, 0x0013, 0x001E, 806 0x0026, 0x002C, 0x0033, 0x003F, 0x0041, 0x004C, 0x0053, 0x005E, 807 0x0065, 0x0070, 0x0073, 0x0078, 0x007B, 0x007E, 0x0002, 0x0005, 808 0x0007, 0x000B, 0x000D, 0x0011, 0x0014, 0x0017, 0x001A, 0x001D, 809 0x0021, 0x0024, 0x0027, 0x002A, 0x002D, 0x0030, 0x0033, 0x0036, 810 0x003A, 0x0037, 0x0034, 0x0031, 0x002E, 0x002B, 0x0028, 0x0025, 811 0x0022, 0x001E, 0x001B, 0x0018, 0x0015, 0x0012, 0x000E, 0x000C, 812 0x0008, 0x0006, 0x0003, 0x007F, 0x007C, 0x0079, 0x0076, 0x0071, 813 0x006A, 0x005F, 0x0058, 0x004D, 0x0046, 0x0040, 0x0038, 0x002D, 814 0x0027, 0x001F, 0x0014, 0x0012, 0x0003, 0x0000, 0x00F5, 0x00EE, 815 0x00D7, 0x00C8, 0x00A5, 0x008F, 0x007C, 0x0065, 0x0042, 0x002B, 816 0x0011, 0x0002, 0x01DF, 0x01C8, 0x0165, 0x00FB, 0x00E4, 0x0081, 817 0x0006, 0x03E8, 0x0325, 0x01CA, 0x010C, 0x0725, 0x0396, 0x001C, 818 0x0E5D, 819}; 820 821static const uint16_t bitalloc_129_codes_d[129] = { 822 0xA598, 0xA59A, 0xA59C, 0xA59E, 0xC598, 0xE586, 0x3ACC, 0x52CA, 823 0x62CD, 0x0D48, 0x1D67, 0x2978, 0x3167, 0x3966, 0x06A5, 0x0EBC, 824 0x14BD, 0x1CB1, 0x0350, 0x0353, 0x075F, 0x0A5F, 0x0C5E, 0x0E5E, 825 0x01AE, 0x03AD, 0x052D, 0x062D, 0x072D, 0x00D5, 0x01D4, 0x0294, 826 0x0314, 0x0394, 0x0014, 0x0094, 0x0114, 0x0174, 0x01B4, 0x01F4, 827 0x000B, 0x004B, 0x008B, 0x00BB, 0x00DB, 0x00FB, 0x001B, 0x003B, 828 0x0053, 0x0063, 0x0073, 0x0003, 0x0013, 0x0023, 0x002F, 0x0037, 829 0x003F, 0x0007, 0x000F, 0x0015, 0x0019, 0x001D, 0x0001, 0x0005, 830 0x0009, 0x0006, 0x0002, 0x001E, 0x001A, 0x0016, 0x0010, 0x0008, 831 0x0000, 0x0038, 0x0030, 0x0028, 0x001C, 0x000C, 0x007C, 0x006C, 832 0x005C, 0x0044, 0x0024, 0x0004, 0x00E4, 0x00C4, 0x00A4, 0x0074, 833 0x0034, 0x01F5, 0x01B5, 0x0175, 0x0115, 0x0095, 0x0015, 0x0395, 834 0x0315, 0x0295, 0x01D5, 0x00D6, 0x072E, 0x062E, 0x052E, 0x03AE, 835 0x01AF, 0x0E5F, 0x0C5F, 0x0C58, 0x0A58, 0x0758, 0x0351, 0x1CB2, 836 0x18B2, 0x0EBD, 0x0EB2, 0x3967, 0x3960, 0x2979, 0x2964, 0x0D49, 837 0x72C2, 0x52CB, 0x3ACD, 0xE587, 0xC599, 0xA59F, 0xA59D, 0xA59B, 838 0xA599, 839}; 840 841static const uint16_t bitalloc_129_codes_e[129] = { 842 0xA13C, 0xC720, 0xA13F, 0xA13E, 0xA13D, 0xE722, 0x5090, 0x6393, 843 0x7392, 0x2849, 0x31CE, 0x39CE, 0x1425, 0x18E5, 0x1CE5, 0x0844, 844 0x0A1C, 0x0C7C, 0x036C, 0x0423, 0x050F, 0x063F, 0x01B7, 0x0216, 845 0x0285, 0x031D, 0x039D, 0x0109, 0x0140, 0x0180, 0x01C8, 0x01CF, 846 0x007A, 0x008A, 0x00A2, 0x00C1, 0x00E5, 0x0014, 0x0037, 0x0043, 847 0x004E, 0x0056, 0x0061, 0x006C, 0x007C, 0x000B, 0x001C, 0x001F, 848 0x0023, 0x0025, 0x0029, 0x002C, 0x002E, 0x0032, 0x0034, 0x0037, 849 0x003A, 0x003C, 0x003F, 0x0001, 0x0003, 0x0006, 0x0008, 0x000A, 850 0x000C, 0x000B, 0x0009, 0x0007, 0x0004, 0x0002, 0x0000, 0x003D, 851 0x003B, 0x0038, 0x0035, 0x0033, 0x002F, 0x002D, 0x002A, 0x0026, 852 0x0024, 0x0020, 0x001D, 0x001A, 0x007D, 0x006D, 0x0062, 0x0057, 853 0x004F, 0x0044, 0x003C, 0x0015, 0x00E6, 0x00C6, 0x00A3, 0x008B, 854 0x007B, 0x006C, 0x01C9, 0x0181, 0x0141, 0x010A, 0x00DA, 0x031E, 855 0x0286, 0x0217, 0x0210, 0x0738, 0x0638, 0x0508, 0x036D, 0x0C7D, 856 0x0A1D, 0x0845, 0x1CE6, 0x18E6, 0x1426, 0x39CF, 0x31CF, 0x284E, 857 0x7393, 0x7390, 0x5091, 0xE723, 0xC724, 0xC725, 0xC722, 0xC723, 858 0xC721, 859}; 860 861static const uint16_t bitalloc_129_codes_f[129] = { 862 0x762C, 0x3B17, 0x1555, 0x0608, 0x0AAB, 0x0FF2, 0x0305, 0x0307, 863 0x0763, 0x0046, 0x010C, 0x01BC, 0x02AB, 0x03B6, 0x03FD, 0x0080, 864 0x0087, 0x00DF, 0x0156, 0x01D9, 0x01F8, 0x01FF, 0x002A, 0x0041, 865 0x0061, 0x0094, 0x00D4, 0x00EA, 0x00F2, 0x00FD, 0x0009, 0x000B, 866 0x001A, 0x0026, 0x0031, 0x0040, 0x004B, 0x006B, 0x0073, 0x0077, 867 0x007A, 0x007C, 0x0000, 0x0002, 0x0006, 0x0008, 0x000B, 0x000E, 868 0x0011, 0x0014, 0x0016, 0x0019, 0x001C, 0x001E, 0x0021, 0x0023, 869 0x0026, 0x0028, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0036, 870 0x0038, 0x0037, 0x0034, 0x0032, 0x0030, 0x002E, 0x002C, 0x0029, 871 0x0027, 0x0024, 0x0022, 0x001F, 0x001D, 0x001A, 0x0017, 0x0015, 872 0x0012, 0x000F, 0x000C, 0x0009, 0x0007, 0x0003, 0x0001, 0x007D, 873 0x007B, 0x0078, 0x0074, 0x0072, 0x0054, 0x0041, 0x0036, 0x0027, 874 0x001B, 0x0014, 0x000A, 0x00FE, 0x00F3, 0x00EB, 0x00D5, 0x0095, 875 0x006E, 0x0042, 0x002B, 0x0010, 0x01F9, 0x01DA, 0x0157, 0x0154, 876 0x00C0, 0x0081, 0x0022, 0x03B7, 0x03B0, 0x01BD, 0x010D, 0x0047, 877 0x07F8, 0x0554, 0x0306, 0x0FF3, 0x0EC4, 0x0609, 0x1D8A, 0x1554, 878 0x762D, 879}; 880 881static const uint16_t bitalloc_129_codes_g[129] = { 882 0x1E20, 0x1E5E, 0x031C, 0x051A, 0x0718, 0x0916, 0x0B14, 0x0D12, 883 0x0F11, 0x0090, 0x018F, 0x028E, 0x038D, 0x048C, 0x058B, 0x068A, 884 0x0789, 0x0049, 0x00C8, 0x0148, 0x01C7, 0x0247, 0x02C6, 0x0346, 885 0x03C5, 0x0025, 0x0065, 0x00A5, 0x00E4, 0x0124, 0x0164, 0x01A4, 886 0x01E3, 0x0013, 0x0033, 0x0053, 0x0073, 0x0093, 0x00B3, 0x00D3, 887 0x00F3, 0x000A, 0x001A, 0x002A, 0x003A, 0x004A, 0x005A, 0x006A, 888 0x007A, 0x0006, 0x000E, 0x0016, 0x001E, 0x0026, 0x002E, 0x0036, 889 0x003E, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C, 890 0x0000, 0x001D, 0x0019, 0x0015, 0x0011, 0x000D, 0x0009, 0x0005, 891 0x003F, 0x0037, 0x002F, 0x0027, 0x001F, 0x0017, 0x000F, 0x0007, 892 0x007B, 0x006B, 0x005B, 0x004B, 0x003B, 0x002B, 0x001B, 0x000B, 893 0x0008, 0x00F0, 0x00D0, 0x00B0, 0x0090, 0x0070, 0x0050, 0x0030, 894 0x01E4, 0x01A5, 0x0165, 0x0125, 0x00E5, 0x00E2, 0x00A2, 0x0062, 895 0x03CA, 0x0347, 0x02C7, 0x02C4, 0x0244, 0x0149, 0x00C9, 0x00C6, 896 0x0796, 0x068B, 0x0688, 0x048D, 0x048A, 0x028F, 0x028C, 0x0091, 897 0x0F2E, 0x0D13, 0x0B15, 0x0917, 0x0719, 0x051B, 0x031D, 0x1E5F, 898 0x1E21, 899}; 900 901static const uint8_t bitalloc_129_bits_a[129] = { 902 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 903 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 904 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 905 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 906 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 907 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 908 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 909 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 910 11, 911}; 912 913static const uint8_t bitalloc_129_bits_b[129] = { 914 14, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 915 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 916 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 917 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 918 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 919 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 920 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 921 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 922 14, 923}; 924 925static const uint8_t bitalloc_129_bits_c[129] = { 926 13, 12, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 927 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 928 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 929 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 930 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 931 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 932 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 933 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 934 13, 935}; 936 937static const uint8_t bitalloc_129_bits_d[129] = { 938 16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 13, 13, 939 13, 13, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 10, 10, 10, 940 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 7, 941 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 942 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 943 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 944 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 945 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16, 946 16, 947}; 948 949static const uint8_t bitalloc_129_bits_e[129] = { 950 16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 951 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 952 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 953 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 954 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 955 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 956 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 957 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16, 958 16, 959}; 960 961static const uint8_t bitalloc_129_bits_f[129] = { 962 15, 14, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 10, 10, 9, 963 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 964 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 965 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 966 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 967 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 968 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 969 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 970 15, 971}; 972 973static const uint8_t bitalloc_129_bits_g[129] = { 974 13, 13, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 975 11, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 976 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 977 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 978 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 979 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 980 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 981 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 13, 982 13, 983}; 984 985static const uint8_t bitalloc_sizes[DCA_CODE_BOOKS] = { 986 3, 5, 7, 9, 13, 17, 25, 33, 65, 129 987}; 988 989static const int8_t bitalloc_offsets[DCA_CODE_BOOKS] = { 990 -1, -2, -3, -4, -6, -8, -12, -16, -32, -64 991}; 992 993static const uint8_t bitalloc_maxbits[DCA_CODE_BOOKS][7] = { 994 { 2 }, 995 { 4, 3, 3 }, 996 { 5, 5, 4 }, 997 { 6, 5, 6 }, 998 { 7, 6, 5 }, 999 { 9, 8, 7, 9, 8, 8, 8 }, 1000 { 9, 9, 8, 9, 8, 9, 9 }, 1001 { 9, 9, 9, 9, 9, 9, 9 }, 1002 { 9, 9, 9, 9, 9, 9, 9 }, 1003 { 9, 9, 9, 9, 9, 9, 9 } 1004}; 1005 1006static const uint16_t *const bitalloc_codes[DCA_CODE_BOOKS][8] = { 1007 { bitalloc_3_codes, NULL }, 1008 { bitalloc_5_codes_a, bitalloc_5_codes_b, bitalloc_5_codes_c, NULL }, 1009 { bitalloc_7_codes_a, bitalloc_7_codes_b, bitalloc_7_codes_c, NULL }, 1010 { bitalloc_9_codes_a, bitalloc_9_codes_b, bitalloc_9_codes_c, NULL }, 1011 { bitalloc_13_codes_a, bitalloc_13_codes_b, bitalloc_13_codes_c, NULL }, 1012 { bitalloc_17_codes_a, bitalloc_17_codes_b, bitalloc_17_codes_c, bitalloc_17_codes_d, 1013 bitalloc_17_codes_e, bitalloc_17_codes_f, bitalloc_17_codes_g, NULL }, 1014 { bitalloc_25_codes_a, bitalloc_25_codes_b, bitalloc_25_codes_c, bitalloc_25_codes_d, 1015 bitalloc_25_codes_e, bitalloc_25_codes_f, bitalloc_25_codes_g, NULL }, 1016 { bitalloc_33_codes_a, bitalloc_33_codes_b, bitalloc_33_codes_c, bitalloc_33_codes_d, 1017 bitalloc_33_codes_e, bitalloc_33_codes_f, bitalloc_33_codes_g, NULL }, 1018 { bitalloc_65_codes_a, bitalloc_65_codes_b, bitalloc_65_codes_c, bitalloc_65_codes_d, 1019 bitalloc_65_codes_e, bitalloc_65_codes_f, bitalloc_65_codes_g, NULL }, 1020 { bitalloc_129_codes_a, bitalloc_129_codes_b, bitalloc_129_codes_c, bitalloc_129_codes_d, 1021 bitalloc_129_codes_e, bitalloc_129_codes_f, bitalloc_129_codes_g, NULL } 1022}; 1023 1024static const uint8_t *const bitalloc_bits[DCA_CODE_BOOKS][8] = { 1025 { bitalloc_3_bits, NULL }, 1026 { bitalloc_5_bits_a, bitalloc_5_bits_b, bitalloc_5_bits_c, NULL }, 1027 { bitalloc_7_bits_a, bitalloc_7_bits_b, bitalloc_7_bits_c, NULL }, 1028 { bitalloc_9_bits_a, bitalloc_9_bits_b, bitalloc_9_bits_c, NULL }, 1029 { bitalloc_13_bits_a, bitalloc_13_bits_b, bitalloc_13_bits_c, NULL }, 1030 { bitalloc_17_bits_a, bitalloc_17_bits_b, bitalloc_17_bits_c, bitalloc_17_bits_d, 1031 bitalloc_17_bits_e, bitalloc_17_bits_f, bitalloc_17_bits_g, NULL }, 1032 { bitalloc_25_bits_a, bitalloc_25_bits_b, bitalloc_25_bits_c, bitalloc_25_bits_d, 1033 bitalloc_25_bits_e, bitalloc_25_bits_f, bitalloc_25_bits_g, NULL }, 1034 { bitalloc_33_bits_a, bitalloc_33_bits_b, bitalloc_33_bits_c, bitalloc_33_bits_d, 1035 bitalloc_33_bits_e, bitalloc_33_bits_f, bitalloc_33_bits_g, NULL }, 1036 { bitalloc_65_bits_a, bitalloc_65_bits_b, bitalloc_65_bits_c, bitalloc_65_bits_d, 1037 bitalloc_65_bits_e, bitalloc_65_bits_f, bitalloc_65_bits_g, NULL }, 1038 { bitalloc_129_bits_a, bitalloc_129_bits_b, bitalloc_129_bits_c, bitalloc_129_bits_d, 1039 bitalloc_129_bits_e, bitalloc_129_bits_f, bitalloc_129_bits_g, NULL } 1040}; 1041 1042static const uint16_t tnl_grp_0_codes[37] = { 1043 0x0000, 0x0003, 0x0004, 0x0007, 0x0001, 0x0009, 0x000a, 0x000d, 1044 0x000e, 0x0006, 0x0012, 0x0005, 0x0015, 0x0016, 0x0022, 0x0025, 1045 0x0035, 0x0076, 0x0002, 0x0042, 0x00b6, 0x0036, 0x00c2, 0x0136, 1046 0x0182, 0x01c2, 0x03c2, 0x0482, 0x0682, 0x0082, 0x0882, 0x0a82, 1047 0x0282, 0x2282, 0x3282, 0x1282, 0x5282, 1048}; 1049 1050static const uint16_t tnl_grp_1_codes[34] = { 1051 0x0001, 0x0003, 0x0006, 0x0000, 0x0002, 0x0004, 0x0005, 0x0007, 1052 0x0008, 0x000f, 0x001a, 0x001c, 0x001d, 0x000a, 0x002c, 0x002d, 1053 0x000d, 0x002a, 0x004c, 0x004d, 0x006a, 0x008c, 0x00cd, 0x00ea, 1054 0x000c, 0x010c, 0x01ea, 0x020c, 0x030c, 0x07ea, 0x0bea, 0x03ea, 1055 0x13ea, 0x33ea, 1056}; 1057 1058static const uint16_t tnl_grp_2_codes[31] = { 1059 0x0001, 0x0003, 0x0006, 0x0007, 0x0004, 0x0008, 0x000c, 0x0010, 1060 0x0012, 0x001a, 0x0022, 0x0000, 0x000a, 0x0020, 0x0040, 0x004a, 1061 0x006a, 0x0002, 0x002a, 0x0042, 0x0082, 0x00aa, 0x00e0, 0x0060, 1062 0x00c2, 0x01c2, 0x0160, 0x0360, 0x0f60, 0x0760, 0x1760, 1063}; 1064 1065static const uint16_t tnl_grp_3_codes[28] = { 1066 0x0001, 0x0006, 0x0008, 0x0014, 0x001c, 0x0000, 0x0002, 0x0004, 1067 0x000a, 0x000c, 0x0010, 0x0012, 0x001a, 0x0020, 0x002a, 0x002c, 1068 0x0032, 0x003a, 0x0022, 0x0030, 0x0062, 0x0064, 0x0070, 0x0024, 1069 0x00a4, 0x01a4, 0x03a4, 0x07a4, 1070}; 1071 1072static const uint16_t tnl_grp_4_codes[23] = { 1073 0x0001, 0x0000, 0x000a, 0x0006, 0x0012, 0x001e, 0x0022, 0x002e, 1074 0x0036, 0x003e, 0x0002, 0x0016, 0x0032, 0x004e, 0x0056, 0x000e, 1075 0x0042, 0x0072, 0x00c2, 0x00f2, 0x008e, 0x018e, 0x038e, 1076}; 1077 1078static const uint16_t tnl_scf_codes[20] = { 1079 0x0000, 0x0001, 0x0002, 0x0005, 0x0006, 0x0007, 0x000b, 0x000c, 1080 0x0013, 0x0014, 0x0003, 0x0004, 0x0023, 0x0064, 0x00a4, 0x0024, 1081 0x0124, 0x0324, 0x0724, 0x0f24, 1082}; 1083 1084static const uint16_t damp_codes[7] = { 1085 0x0001, 0x0000, 0x0002, 0x0006, 0x000e, 0x001e, 0x003e, 1086}; 1087 1088static const uint16_t dph_codes[9] = { 1089 0x0000, 0x0002, 0x0003, 0x0001, 0x0009, 0x000d, 0x0005, 0x0015, 1090 0x0035, 1091}; 1092 1093static const uint16_t fst_rsd_amp_codes[24] = { 1094 0x0003, 0x0005, 0x0006, 0x0007, 0x0000, 0x0001, 0x0002, 0x0008, 1095 0x0009, 0x000a, 0x0014, 0x0004, 0x001a, 0x001c, 0x0024, 0x002c, 1096 0x003a, 0x000c, 0x003c, 0x004c, 0x00fc, 0x007c, 0x017c, 0x037c, 1097}; 1098 1099static const uint16_t rsd_apprx_codes[6] = { 1100 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 1101}; 1102 1103static const uint16_t rsd_amp_codes[33] = { 1104 0x0001, 0x0000, 0x0002, 0x0003, 0x0004, 0x000e, 0x000f, 0x0016, 1105 0x0007, 0x0027, 0x0037, 0x0026, 0x0066, 0x0006, 0x0017, 0x0046, 1106 0x0097, 0x00d7, 0x0086, 0x00c6, 0x01c6, 0x0157, 0x0186, 0x0257, 1107 0x0357, 0x0057, 0x0786, 0x0386, 0x0b86, 0x0457, 0x0c57, 0x1457, 1108 0x1c57, 1109}; 1110 1111static const uint16_t avg_g3_codes[18] = { 1112 0x0001, 0x0002, 0x0003, 0x0000, 0x000c, 0x0014, 0x0018, 0x0004, 1113 0x0008, 0x0028, 0x0068, 0x0024, 0x00a4, 0x00e4, 0x0164, 0x0064, 1114 0x0264, 0x0664, 1115}; 1116 1117static const uint16_t st_grid_codes[22] = { 1118 0x0001, 0x0002, 0x0000, 0x0004, 0x0008, 0x001c, 0x004c, 0x006c, 1119 0x000c, 0x002c, 0x008c, 0x00ac, 0x012c, 0x018c, 0x01ac, 0x038c, 1120 0x03ac, 0x032c, 0x072c, 0x0f2c, 0x172c, 0x1f2c, 1121}; 1122 1123static const uint16_t grid_2_codes[20] = { 1124 0x0000, 0x0002, 0x0003, 0x0001, 0x0005, 0x000d, 0x003d, 0x005d, 1125 0x009d, 0x011d, 0x001d, 0x061d, 0x041d, 0x0c1d, 0x0a1d, 0x121d, 1126 0x021d, 0x1a1d, 0x221d, 0x3a1d, 1127}; 1128 1129static const uint16_t grid_3_codes[13] = { 1130 0x0001, 0x0002, 0x0000, 0x0004, 0x000c, 0x001c, 0x007c, 0x003c, 1131 0x01bc, 0x00bc, 0x06bc, 0x02bc, 0x0abc, 1132}; 1133 1134static const uint16_t rsd_codes[9] = { 1135 0x0001, 0x0003, 0x0000, 0x0002, 0x0006, 0x0004, 0x000c, 0x001c, 1136 0x003c, 1137}; 1138 1139static const uint8_t tnl_grp_0_bitvals[74] = { 1140 3, 5, 3, 9, 3, 4, 3, 6, 4, 10, 4, 13, 4, 7, 4, 11, 1141 4, 8, 5, 12, 5, 14, 6, 15, 6, 18, 6, 1, 6, 17, 6, 16, 1142 6, 21, 7, 20, 8, 19, 8, 22, 8, 25, 9, 26, 9, 23, 9, 3, 1143 9, 24, 10, 29, 10, 27, 11, 28, 11, 30, 12, 33, 12, 31, 12, 32, 1144 14, 34, 14, 37, 14, 36, 15, 35, 15, 0, 1145}; 1146 1147static const uint8_t tnl_grp_1_bitvals[68] = { 1148 3, 9, 3, 6, 3, 5, 4, 4, 4, 8, 4, 10, 4, 1, 4, 11, 1149 4, 7, 4, 13, 5, 12, 5, 14, 5, 17, 6, 16, 6, 15, 6, 18, 1150 7, 20, 7, 19, 7, 21, 8, 25, 8, 23, 8, 22, 8, 24, 9, 26, 1151 10, 3, 10, 29, 10, 30, 10, 27, 10, 28, 11, 31, 12, 32, 13, 33, 1152 14, 34, 14, 0, 1153}; 1154 1155static const uint8_t tnl_grp_2_bitvals[62] = { 1156 2, 1, 3, 6, 3, 5, 3, 7, 4, 9, 4, 8, 4, 4, 5, 10, 1157 5, 11, 5, 13, 6, 12, 7, 14, 7, 16, 7, 15, 7, 17, 7, 18, 1158 7, 19, 8, 22, 8, 20, 8, 21, 8, 3, 8, 24, 8, 25, 9, 23, 1159 9, 26, 9, 27, 10, 28, 11, 29, 12, 31, 13, 30, 13, 0, 1160}; 1161 1162static const uint8_t tnl_grp_3_bitvals[56] = { 1163 1, 1, 3, 6, 4, 5, 5, 9, 5, 4, 6, 8, 6, 14, 6, 10, 1164 6, 21, 6, 13, 6, 7, 6, 3, 6, 16, 6, 2, 6, 18, 6, 17, 1165 6, 11, 6, 15, 7, 19, 7, 23, 7, 24, 7, 22, 7, 12, 8, 20, 1166 9, 25, 10, 26, 11, 27, 11, 0, 1167}; 1168 1169static const uint8_t tnl_grp_4_bitvals[46] = { 1170 1, 1, 2, 2, 4, 4, 5, 5, 6, 6, 6, 8, 6, 3, 6, 19, 1171 6, 20, 6, 9, 7, 7, 7, 11, 7, 13, 7, 17, 7, 10, 8, 12, 1172 8, 15, 8, 14, 8, 21, 8, 18, 9, 16, 10, 22, 10, 0, 1173}; 1174 1175static const uint8_t tnl_scf_bitvals[40] = { 1176 3, 3, 3, 1, 3, 2, 3, 5, 3, 4, 3, 6, 4, 8, 4, 7, 1177 5, 10, 5, 9, 6, 12, 6, 11, 6, 13, 7, 14, 8, 15, 9, 16, 1178 10, 17, 11, 18, 12, 19, 12, 0, 1179}; 1180 1181static const uint8_t damp_bitvals[14] = { 1182 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 0, 1183}; 1184 1185static const uint8_t dph_bitvals[18] = { 1186 2, 2, 2, 1, 2, 8, 4, 3, 4, 7, 4, 4, 5, 6, 6, 5, 1187 6, 0, 1188}; 1189 1190static const uint8_t fst_rsd_amp_bitvals[48] = { 1191 3, 13, 3, 15, 3, 16, 3, 14, 4, 12, 4, 10, 4, 11, 4, 17, 1192 4, 18, 5, 19, 5, 9, 6, 1, 6, 7, 6, 6, 6, 8, 6, 5, 1193 6, 4, 7, 20, 7, 2, 7, 3, 8, 21, 9, 22, 10, 23, 10, 0, 1194}; 1195 1196static const uint8_t rsd_apprx_bitvals[12] = { 1197 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 0, 1198}; 1199 1200static const uint8_t rsd_amp_bitvals[66] = { 1201 2, 3, 3, 2, 3, 5, 3, 4, 3, 1, 4, 7, 4, 6, 5, 9, 1202 6, 8, 6, 11, 6, 10, 7, 12, 7, 13, 8, 14, 8, 18, 8, 16, 1203 8, 15, 8, 22, 9, 20, 9, 24, 9, 17, 10, 28, 10, 26, 10, 21, 1204 10, 23, 11, 30, 11, 19, 12, 25, 12, 32, 13, 36, 13, 29, 13, 34, 1205 13, 0, 1206}; 1207 1208static const uint8_t avg_g3_bitvals[36] = { 1209 2, 15, 2, 16, 2, 17, 4, 14, 4, 18, 5, 12, 5, 13, 6, 10, 1210 6, 11, 7, 19, 7, 9, 8, 20, 8, 8, 8, 7, 9, 21, 10, 6, 1211 11, 23, 11, 0, 1212}; 1213 1214static const uint8_t st_grid_bitvals[44] = { 1215 1, 6, 2, 1, 4, 4, 4, 8, 4, 3, 5, 10, 7, 12, 7, 5, 1216 8, 14, 9, 16, 9, 7, 9, 18, 10, 11, 10, 9, 10, 20, 10, 22, 1217 10, 2, 11, 13, 13, 17, 13, 24, 13, 15, 13, 0, 1218}; 1219 1220static const uint8_t grid_2_bitvals[40] = { 1221 2, 3, 2, 2, 2, 1, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 1222 8, 9, 9, 10, 11, 11, 11, 12, 12, 13, 12, 17, 13, 15, 13, 18, 1223 14, 19, 14, 16, 14, 14, 14, 0, 1224}; 1225 1226static const uint8_t grid_3_bitvals[26] = { 1227 1, 17, 2, 16, 3, 18, 4, 15, 5, 19, 6, 14, 7, 20, 8, 13, 1228 9, 21, 10, 12, 11, 22, 12, 11, 12, 0, 1229}; 1230 1231static const uint8_t rsd_bitvals[18] = { 1232 2, 2, 2, 3, 3, 1, 3, 4, 3, 0, 4, 5, 5, 6, 6, 7, 1233 6, 4, 1234}; 1235 1236static const uint16_t vlc_offs[80] = { 1237 0, 512, 640, 768, 1282, 1794, 2436, 3080, 3770, 4454, 5364, 1238 5372, 5380, 5388, 5392, 5396, 5412, 5420, 5428, 5460, 5492, 5508, 1239 5572, 5604, 5668, 5796, 5860, 5892, 6412, 6668, 6796, 7308, 7564, 1240 7820, 8076, 8620, 9132, 9388, 9910, 10166, 10680, 11196, 11726, 12240, 1241 12752, 13298, 13810, 14326, 14840, 15500, 16022, 16540, 17158, 17678, 18264, 1242 18796, 19352, 19926, 20468, 21472, 22398, 23014, 23622, 24200, 24748, 25276, 1243 25792, 26306, 26826, 26890, 26954, 27468, 27500, 28038, 28554, 29086, 29630, 1244 30150, 30214 1245}; 1246 1247DCAVLC ff_dca_vlc_bit_allocation; 1248DCAVLC ff_dca_vlc_transition_mode; 1249DCAVLC ff_dca_vlc_scale_factor; 1250DCAVLC ff_dca_vlc_quant_index[DCA_CODE_BOOKS]; 1251 1252VLC ff_dca_vlc_tnl_grp[5]; 1253VLC ff_dca_vlc_tnl_scf; 1254VLC ff_dca_vlc_damp; 1255VLC ff_dca_vlc_dph; 1256VLC ff_dca_vlc_fst_rsd_amp; 1257VLC ff_dca_vlc_rsd_apprx; 1258VLC ff_dca_vlc_rsd_amp; 1259VLC ff_dca_vlc_avg_g3; 1260VLC ff_dca_vlc_st_grid; 1261VLC ff_dca_vlc_grid_2; 1262VLC ff_dca_vlc_grid_3; 1263VLC ff_dca_vlc_rsd; 1264 1265av_cold void ff_dca_init_vlcs(void) 1266{ 1267 static VLCElem dca_table[30214]; 1268 int i, j, k = 0; 1269 1270#define DCA_INIT_VLC(vlc, a, b, c, d) \ 1271 do { \ 1272 vlc.table = &dca_table[vlc_offs[k]]; \ 1273 vlc.table_allocated = vlc_offs[k + 1] - vlc_offs[k]; \ 1274 init_vlc(&vlc, a, b, c, 1, 1, d, 2, 2, INIT_VLC_USE_NEW_STATIC); \ 1275 k++; \ 1276 } while (0) 1277 1278 ff_dca_vlc_bit_allocation.offset = 1; 1279 ff_dca_vlc_bit_allocation.max_depth = 2; 1280 for (i = 0; i < 5; i++) 1281 DCA_INIT_VLC(ff_dca_vlc_bit_allocation.vlc[i], bitalloc_12_vlc_bits[i], 12, 1282 bitalloc_12_bits[i], bitalloc_12_codes[i]); 1283 1284 ff_dca_vlc_scale_factor.offset = -64; 1285 ff_dca_vlc_scale_factor.max_depth = 2; 1286 for (i = 0; i < 5; i++) 1287 DCA_INIT_VLC(ff_dca_vlc_scale_factor.vlc[i], SCALES_VLC_BITS, 129, 1288 scales_bits[i], scales_codes[i]); 1289 1290 ff_dca_vlc_transition_mode.offset = 0; 1291 ff_dca_vlc_transition_mode.max_depth = 1; 1292 for (i = 0; i < 4; i++) 1293 DCA_INIT_VLC(ff_dca_vlc_transition_mode.vlc[i], tmode_vlc_bits[i], 4, 1294 tmode_bits[i], tmode_codes[i]); 1295 1296 for (i = 0; i < DCA_CODE_BOOKS; i++) { 1297 ff_dca_vlc_quant_index[i].offset = bitalloc_offsets[i]; 1298 ff_dca_vlc_quant_index[i].max_depth = 1 + (i > 4); 1299 for (j = 0; bitalloc_codes[i][j]; j++) 1300 DCA_INIT_VLC(ff_dca_vlc_quant_index[i].vlc[j], bitalloc_maxbits[i][j], 1301 bitalloc_sizes[i], bitalloc_bits[i][j], bitalloc_codes[i][j]); 1302 } 1303 1304#define LBR_INIT_VLC(vlc, tab, nb_bits) \ 1305 do { \ 1306 vlc.table = &dca_table[vlc_offs[k]]; \ 1307 vlc.table_allocated = vlc_offs[k + 1] - vlc_offs[k]; \ 1308 ff_init_vlc_sparse(&vlc, nb_bits, FF_ARRAY_ELEMS(tab##_codes), \ 1309 &tab##_bitvals[0], 2, 1, \ 1310 tab##_codes, 2, 2, \ 1311 &tab##_bitvals[1], 2, 1, \ 1312 INIT_VLC_LE | INIT_VLC_USE_NEW_STATIC); \ 1313 k++; \ 1314 } while (0) 1315 1316 LBR_INIT_VLC(ff_dca_vlc_tnl_grp[0], tnl_grp_0, 9); 1317 LBR_INIT_VLC(ff_dca_vlc_tnl_grp[1], tnl_grp_1, 9); 1318 LBR_INIT_VLC(ff_dca_vlc_tnl_grp[2], tnl_grp_2, 9); 1319 LBR_INIT_VLC(ff_dca_vlc_tnl_grp[3], tnl_grp_3, 9); 1320 LBR_INIT_VLC(ff_dca_vlc_tnl_grp[4], tnl_grp_4, 9); 1321 LBR_INIT_VLC(ff_dca_vlc_tnl_scf, tnl_scf, 9); 1322 LBR_INIT_VLC(ff_dca_vlc_damp, damp, 6); 1323 LBR_INIT_VLC(ff_dca_vlc_dph, dph, 6); 1324 LBR_INIT_VLC(ff_dca_vlc_fst_rsd_amp, fst_rsd_amp, 9); 1325 LBR_INIT_VLC(ff_dca_vlc_rsd_apprx, rsd_apprx, 5); 1326 LBR_INIT_VLC(ff_dca_vlc_rsd_amp, rsd_amp, 9); 1327 LBR_INIT_VLC(ff_dca_vlc_avg_g3, avg_g3, 9); 1328 LBR_INIT_VLC(ff_dca_vlc_st_grid, st_grid, 9); 1329 LBR_INIT_VLC(ff_dca_vlc_grid_2, grid_2, 9); 1330 LBR_INIT_VLC(ff_dca_vlc_grid_3, grid_3, 9); 1331 LBR_INIT_VLC(ff_dca_vlc_rsd, rsd, 6); 1332} 1333 1334uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t table) 1335{ 1336 uint8_t i, id; 1337 uint32_t sum = 0; 1338 for (i = 0; i < n; i++) { 1339 id = values[i] - bitalloc_offsets[table]; 1340 av_assert0(id < bitalloc_sizes[table]); 1341 sum += bitalloc_bits[table][sel][id]; 1342 } 1343 return sum; 1344} 1345 1346void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t table) 1347{ 1348 uint8_t i, id; 1349 for (i = 0; i < n; i++) { 1350 id = values[i] - bitalloc_offsets[table]; 1351 av_assert0(id < bitalloc_sizes[table]); 1352 put_bits(pb, bitalloc_bits[table][sel][id], bitalloc_codes[table][sel][id]); 1353 } 1354} 1355 1356uint32_t ff_dca_vlc_calc_alloc_bits(int *values, uint8_t n, uint8_t sel) 1357{ 1358 uint8_t i, id; 1359 uint32_t sum = 0; 1360 for (i = 0; i < n; i++) { 1361 id = values[i] - 1; 1362 sum += bitalloc_12_bits[sel][id]; 1363 } 1364 return sum; 1365} 1366 1367void ff_dca_vlc_enc_alloc(PutBitContext *pb, int *values, uint8_t n, uint8_t sel) 1368{ 1369 uint8_t i, id; 1370 for (i = 0; i < n; i++) { 1371 id = values[i] - 1; 1372 put_bits(pb, bitalloc_12_bits[sel][id], bitalloc_12_codes[sel][id]); 1373 } 1374} 1375