Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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. #ifndef AVCODEC_DCAHUFF_H
  24. #define AVCODEC_DCAHUFF_H
  25.  
  26. #include <stdint.h>
  27. #include <stdlib.h>
  28.  
  29. #define TMODE_COUNT 4
  30. static const uint8_t tmode_vlc_bits[TMODE_COUNT] = { 3, 3, 3, 2 };
  31. static const uint16_t tmode_codes[TMODE_COUNT][4] = {
  32.   { 0x0000, 0x0002, 0x0006, 0x0007 },
  33.   { 0x0002, 0x0006, 0x0007, 0x0000 },
  34.   { 0x0006, 0x0007, 0x0000, 0x0002 },
  35.   { 0x0000, 0x0001, 0x0002, 0x0003 }
  36. };
  37. static const uint8_t tmode_bits[TMODE_COUNT][4] = {
  38.   {  1,  2,  3,  3 },
  39.   {  2,  3,  3,  1 },
  40.   {  3,  3,  1,  2 },
  41.   {  2,  2,  2,  2 }
  42. };
  43.  
  44.  
  45. #define BITALLOC_12_COUNT 5
  46. #define BITALLOC_12_VLC_BITS 9
  47. static const uint8_t bitalloc_12_vlc_bits[BITALLOC_12_COUNT] = {
  48.   9, 7, 7, 9, 9
  49. };
  50. static const uint16_t bitalloc_12_codes[BITALLOC_12_COUNT][12] = {
  51.   {
  52.     0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, 0x00FF, 0x00FE,
  53.     0x01FB, 0x01FA, 0x01F9, 0x01F8,
  54.   },
  55.   {
  56.     0x0001, 0x0000, 0x0002, 0x000F, 0x000C, 0x001D, 0x0039, 0x0038,
  57.     0x0037, 0x0036, 0x0035, 0x0034,
  58.   },
  59.   {
  60.     0x0000, 0x0007, 0x0005, 0x0004, 0x0002, 0x000D, 0x000C, 0x0006,
  61.     0x000F, 0x001D, 0x0039, 0x0038,
  62.   },
  63.   {
  64.     0x0003, 0x0002, 0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E,
  65.     0x007E, 0x00FE, 0x01FF, 0x01FE,
  66.   },
  67.   {
  68.     0x0001, 0x0000, 0x0002, 0x0006, 0x000E, 0x003F, 0x003D, 0x007C,
  69.     0x0079, 0x0078, 0x00FB, 0x00FA,
  70.   }
  71. };
  72. static const uint8_t bitalloc_12_bits[BITALLOC_12_COUNT][12] = {
  73.   { 1,  2,  3,  4,  5,  6,  8,  8,  9,  9,  9,  9 },
  74.   { 1,  2,  3,  5,  5,  6,  7,  7,  7,  7,  7,  7 },
  75.   { 2,  3,  3,  3,  3,  4,  4,  4,  5,  6,  7,  7 },
  76.   { 2,  2,  2,  3,  4,  5,  6,  7,  8,  9, 10, 10 },
  77.   { 1,  2,  3,  4,  5,  7,  7,  8,  8,  8,  9,  9 }
  78. };
  79.  
  80.  
  81. #define SCALES_COUNT 5
  82. #define SCALES_VLC_BITS 9
  83. static const uint16_t scales_codes[SCALES_COUNT][129] = {
  84.   {
  85.     0x3AB0, 0x3AB2, 0x3AB4, 0x3AB6, 0x3AB8, 0x3ABA, 0x3ABC, 0x3ABE,
  86.     0x3AC0, 0x3AC2, 0x3AC4, 0x3AC6, 0x3AC8, 0x3ACA, 0x3ACC, 0x3ACE,
  87.     0x3AD0, 0x3AD2, 0x3AD4, 0x3AD6, 0x3AD8, 0x3ADA, 0x3ADC, 0x3ADE,
  88.     0x3AE0, 0x3AE2, 0x3AE4, 0x3AE6, 0x3AE8, 0x3AEA, 0x3AEC, 0x3AEE,
  89.     0x3AF0, 0x3AF2, 0x3AF4, 0x3AF6, 0x3AF8, 0x3AFA, 0x3AFC, 0x3AFE,
  90.     0x0540, 0x0542, 0x0544, 0x0546, 0x0548, 0x054A, 0x054C, 0x054E,
  91.     0x0558, 0x055E, 0x02AD, 0x0154, 0x0754, 0x03A8, 0x0056, 0x0028,
  92.     0x00E8, 0x004A, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005,
  93.     0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x004B,
  94.     0x00E9, 0x0029, 0x0057, 0x03A9, 0x0755, 0x0155, 0x02AE, 0x055F,
  95.     0x0559, 0x054F, 0x054D, 0x054B, 0x0549, 0x0547, 0x0545, 0x0543,
  96.     0x0541, 0x3AFF, 0x3AFD, 0x3AFB, 0x3AF9, 0x3AF7, 0x3AF5, 0x3AF3,
  97.     0x3AF1, 0x3AEF, 0x3AED, 0x3AEB, 0x3AE9, 0x3AE7, 0x3AE5, 0x3AE3,
  98.     0x3AE1, 0x3ADF, 0x3ADD, 0x3ADB, 0x3AD9, 0x3AD7, 0x3AD5, 0x3AD3,
  99.     0x3AD1, 0x3ACF, 0x3ACD, 0x3ACB, 0x3AC9, 0x3AC7, 0x3AC5, 0x3AC3,
  100.     0x3AC1, 0x3ABF, 0x3ABD, 0x3ABB, 0x3AB9, 0x3AB7, 0x3AB5, 0x3AB3,
  101.     0x3AB1,
  102.   },
  103.   {
  104.     0x0F60, 0x0F62, 0x0F64, 0x0F66, 0x0F68, 0x0F6A, 0x0F6C, 0x0F6E,
  105.     0x0F70, 0x0F72, 0x0F74, 0x0F76, 0x0F78, 0x0F7A, 0x0F7C, 0x0F7E,
  106.     0x0F80, 0x0F82, 0x0F84, 0x0F86, 0x0F88, 0x0F8A, 0x0F8C, 0x0F8E,
  107.     0x0F90, 0x0F92, 0x0F94, 0x0F96, 0x0F98, 0x0F9A, 0x0F9C, 0x0F9E,
  108.     0x0FA0, 0x0FA2, 0x0FA4, 0x0FA6, 0x0FA8, 0x0FAA, 0x0FAC, 0x0FAE,
  109.     0x0FB0, 0x0FB2, 0x0FB4, 0x0FB6, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE,
  110.     0x07A0, 0x07A2, 0x03D2, 0x01EA, 0x00FC, 0x007F, 0x001C, 0x000C,
  111.     0x0004, 0x0034, 0x0010, 0x001B, 0x0009, 0x000B, 0x000E, 0x0001,
  112.     0x0003, 0x0002, 0x000F, 0x000C, 0x000A, 0x0000, 0x0011, 0x0035,
  113.     0x0005, 0x000D, 0x001D, 0x003C, 0x00FD, 0x01EB, 0x03D3, 0x07A3,
  114.     0x07A1, 0x0FBF, 0x0FBD, 0x0FBB, 0x0FB9, 0x0FB7, 0x0FB5, 0x0FB3,
  115.     0x0FB1, 0x0FAF, 0x0FAD, 0x0FAB, 0x0FA9, 0x0FA7, 0x0FA5, 0x0FA3,
  116.     0x0FA1, 0x0F9F, 0x0F9D, 0x0F9B, 0x0F99, 0x0F97, 0x0F95, 0x0F93,
  117.     0x0F91, 0x0F8F, 0x0F8D, 0x0F8B, 0x0F89, 0x0F87, 0x0F85, 0x0F83,
  118.     0x0F81, 0x0F7F, 0x0F7D, 0x0F7B, 0x0F79, 0x0F77, 0x0F75, 0x0F73,
  119.     0x0F71, 0x0F6F, 0x0F6D, 0x0F6B, 0x0F69, 0x0F67, 0x0F65, 0x0F63,
  120.     0x0F61,
  121.   },
  122.   {
  123.     0x51D0, 0x51D2, 0x51D4, 0x51D6, 0x51D8, 0x51DA, 0x51DC, 0x51DE,
  124.     0x51E0, 0x51E2, 0x51E4, 0x51E6, 0x51E8, 0x51EA, 0x51EC, 0x51EE,
  125.     0x51F0, 0x51F2, 0x51F4, 0x51F6, 0x51F8, 0x51FA, 0x51FC, 0x51FE,
  126.     0x70C0, 0x70C2, 0x70C4, 0x70C6, 0x70C8, 0x70CA, 0x70CC, 0x70CE,
  127.     0x70EC, 0x10EA, 0x3868, 0x3877, 0x0876, 0x1C35, 0x0434, 0x0A34,
  128.     0x0E1B, 0x021B, 0x051B, 0x070F, 0x010F, 0x0380, 0x0080, 0x0140,
  129.     0x01C1, 0x0041, 0x00A1, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012,
  130.     0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000,
  131.     0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B,
  132.     0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A2, 0x0042,
  133.     0x01C2, 0x0141, 0x0081, 0x0381, 0x028C, 0x010C, 0x051C, 0x021C,
  134.     0x0E1C, 0x0A35, 0x0435, 0x1C3A, 0x0877, 0x0874, 0x3869, 0x10EB,
  135.     0x70ED, 0x70CF, 0x70CD, 0x70CB, 0x70C9, 0x70C7, 0x70C5, 0x70C3,
  136.     0x70C1, 0x51FF, 0x51FD, 0x51FB, 0x51F9, 0x51F7, 0x51F5, 0x51F3,
  137.     0x51F1, 0x51EF, 0x51ED, 0x51EB, 0x51E9, 0x51E7, 0x51E5, 0x51E3,
  138.     0x51E1, 0x51DF, 0x51DD, 0x51DB, 0x51D9, 0x51D7, 0x51D5, 0x51D3,
  139.     0x51D1,
  140.   },
  141.   {
  142.     0x6F64, 0x6F66, 0x6F68, 0x6F6A, 0x6F6C, 0x6F6E, 0x6F70, 0x6F72,
  143.     0x6F74, 0x6F76, 0x6F78, 0x6F7A, 0x6F7C, 0x6F7E, 0x6F80, 0x6F82,
  144.     0x6F84, 0x6F86, 0x6F88, 0x6F8A, 0x6F8C, 0x6F8E, 0x6F90, 0x6F92,
  145.     0x6F94, 0x6F96, 0x6F98, 0x6F9A, 0x6F9C, 0x6F9E, 0x6FA0, 0x6FA2,
  146.     0x6FA4, 0x6FA6, 0x6FA8, 0x6FAA, 0x6FAC, 0x6FAE, 0x6FB0, 0x6FB2,
  147.     0x6FB4, 0x6FB6, 0x17B4, 0x37DC, 0x0BDB, 0x1BEF, 0x05EE, 0x0DF8,
  148.     0x02F8, 0x06FD, 0x017D, 0x037F, 0x00BF, 0x0040, 0x00C0, 0x0021,
  149.     0x0061, 0x0011, 0x0031, 0x0009, 0x0019, 0x0006, 0x000E, 0x0004,
  150.     0x0000, 0x0005, 0x000F, 0x0007, 0x001A, 0x000A, 0x0036, 0x0016,
  151.     0x006E, 0x002E, 0x00C1, 0x0041, 0x01BC, 0x00BC, 0x037A, 0x017A,
  152.     0x02F9, 0x0DF9, 0x05EF, 0x05EC, 0x1BD8, 0x37DD, 0x17B5, 0x6FB7,
  153.     0x6FB5, 0x6FB3, 0x6FB1, 0x6FAF, 0x6FAD, 0x6FAB, 0x6FA9, 0x6FA7,
  154.     0x6FA5, 0x6FA3, 0x6FA1, 0x6F9F, 0x6F9D, 0x6F9B, 0x6F99, 0x6F97,
  155.     0x6F95, 0x6F93, 0x6F91, 0x6F8F, 0x6F8D, 0x6F8B, 0x6F89, 0x6F87,
  156.     0x6F85, 0x6F83, 0x6F81, 0x6F7F, 0x6F7D, 0x6F7B, 0x6F79, 0x6F77,
  157.     0x6F75, 0x6F73, 0x6F71, 0x6F6F, 0x6F6D, 0x6F6B, 0x6F69, 0x6F67,
  158.     0x6F65,
  159.   },
  160.   {
  161.     0xDF54, 0xDF56, 0xDFC8, 0xDFCA, 0xDFCC, 0xDFCE, 0xDFD0, 0xDFD2,
  162.     0xDFD4, 0xDFD6, 0xDFD8, 0xDFDA, 0xDFDC, 0xDFDE, 0xDFE0, 0xDFE2,
  163.     0x0FE8, 0x2FEA, 0x6FA8, 0x6FF6, 0x07F5, 0x07F7, 0x37D2, 0x37F9,
  164.     0x03F8, 0x0BF8, 0x0BFB, 0x1BEB, 0x01FA, 0x05FA, 0x09FA, 0x0DFA,
  165.     0x0DFF, 0x00FF, 0x02FF, 0x06FB, 0x007C, 0x017C, 0x027C, 0x027F,
  166.     0x003C, 0x00BC, 0x013C, 0x01BC, 0x001C, 0x005C, 0x009C, 0x00DC,
  167.     0x000C, 0x002C, 0x004C, 0x006C, 0x0004, 0x0014, 0x0024, 0x0034,
  168.     0x0000, 0x0008, 0x0010, 0x0018, 0x001E, 0x0002, 0x0006, 0x000A,
  169.     0x000E, 0x000B, 0x0007, 0x0003, 0x001F, 0x0019, 0x0011, 0x0009,
  170.     0x0001, 0x0035, 0x0025, 0x0015, 0x0005, 0x006D, 0x004D, 0x002D,
  171.     0x000D, 0x00DD, 0x009D, 0x005D, 0x001D, 0x01BD, 0x013D, 0x00BD,
  172.     0x003D, 0x037C, 0x027D, 0x017D, 0x007D, 0x06FC, 0x04FC, 0x02FC,
  173.     0x00FC, 0x0DFB, 0x09FB, 0x05FB, 0x01FB, 0x1BF8, 0x1BE8, 0x0BF9,
  174.     0x03F9, 0x37FA, 0x37D3, 0x17F4, 0x07F6, 0x6FF7, 0x6FA9, 0x2FEB,
  175.     0x0FE9, 0xDFE3, 0xDFE1, 0xDFDF, 0xDFDD, 0xDFDB, 0xDFD9, 0xDFD7,
  176.     0xDFD5, 0xDFD3, 0xDFD1, 0xDFCF, 0xDFCD, 0xDFCB, 0xDFC9, 0xDF57,
  177.     0xDF55,
  178.   }
  179. };
  180.  
  181. static const uint8_t scales_bits[SCALES_COUNT][129] = {
  182.   {
  183.     14, 14, 14, 14, 14, 14, 14, 14,
  184.     14, 14, 14, 14, 14, 14, 14, 14,
  185.     14, 14, 14, 14, 14, 14, 14, 14,
  186.     14, 14, 14, 14, 14, 14, 14, 14,
  187.     14, 14, 14, 14, 14, 14, 14, 14,
  188.     13, 13, 13, 13, 13, 13, 13, 13,
  189.     13, 13, 12, 11, 11, 10,  9,  8,
  190.      8,  7,  6,  6,  5,  4,  4,  3,
  191.      2,  3,  3,  4,  5,  5,  6,  7,
  192.      8,  8,  9, 10, 11, 11, 12, 13,
  193.     13, 13, 13, 13, 13, 13, 13, 13,
  194.     13, 14, 14, 14, 14, 14, 14, 14,
  195.     14, 14, 14, 14, 14, 14, 14, 14,
  196.     14, 14, 14, 14, 14, 14, 14, 14,
  197.     14, 14, 14, 14, 14, 14, 14, 14,
  198.     14, 14, 14, 14, 14, 14, 14, 14,
  199.     14,
  200.   },
  201.   {
  202.     15, 15, 15, 15, 15, 15, 15, 15,
  203.     15, 15, 15, 15, 15, 15, 15, 15,
  204.     15, 15, 15, 15, 15, 15, 15, 15,
  205.     15, 15, 15, 15, 15, 15, 15, 15,
  206.     15, 15, 15, 15, 15, 15, 15, 15,
  207.     15, 15, 15, 15, 15, 15, 15, 15,
  208.     14, 14, 13, 12, 11, 10,  8,  7,
  209.      6,  6,  5,  5,  4,  4,  4,  3,
  210.      3,  3,  4,  4,  4,  4,  5,  6,
  211.      6,  7,  8,  9, 11, 12, 13, 14,
  212.     14, 15, 15, 15, 15, 15, 15, 15,
  213.     15, 15, 15, 15, 15, 15, 15, 15,
  214.     15, 15, 15, 15, 15, 15, 15, 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,
  219.   },
  220.   {
  221.     15, 15, 15, 15, 15, 15, 15, 15,
  222.     15, 15, 15, 15, 15, 15, 15, 15,
  223.     15, 15, 15, 15, 15, 15, 15, 15,
  224.     15, 15, 15, 15, 15, 15, 15, 15,
  225.     15, 14, 14, 14, 13, 13, 12, 12,
  226.     12, 11, 11, 11, 10, 10,  9,  9,
  227.      9,  8,  8,  8,  7,  7,  7,  6,
  228.      6,  6,  5,  5,  5,  4,  4,  3,
  229.      3,  3,  4,  4,  5,  5,  5,  6,
  230.      6,  6,  7,  7,  7,  8,  8,  8,
  231.      9,  9,  9, 10, 10, 10, 11, 11,
  232.     12, 12, 12, 13, 13, 13, 14, 14,
  233.     15, 15, 15, 15, 15, 15, 15, 15,
  234.     15, 15, 15, 15, 15, 15, 15, 15,
  235.     15, 15, 15, 15, 15, 15, 15, 15,
  236.     15, 15, 15, 15, 15, 15, 15, 15,
  237.     15,
  238.   },
  239.   {
  240.     15, 15, 15, 15, 15, 15, 15, 15,
  241.     15, 15, 15, 15, 15, 15, 15, 15,
  242.     15, 15, 15, 15, 15, 15, 15, 15,
  243.     15, 15, 15, 15, 15, 15, 15, 15,
  244.     15, 15, 15, 15, 15, 15, 15, 15,
  245.     15, 15, 14, 14, 13, 13, 12, 12,
  246.     11, 11, 10, 10,  9,  8,  8,  7,
  247.      7,  6,  6,  5,  5,  4,  4,  3,
  248.      2,  3,  4,  4,  5,  5,  6,  6,
  249.      7,  7,  8,  8,  9,  9, 10, 10,
  250.     11, 12, 12, 12, 13, 14, 14, 15,
  251.     15, 15, 15, 15, 15, 15, 15, 15,
  252.     15, 15, 15, 15, 15, 15, 15, 15,
  253.     15, 15, 15, 15, 15, 15, 15, 15,
  254.     15, 15, 15, 15, 15, 15, 15, 15,
  255.     15, 15, 15, 15, 15, 15, 15, 15,
  256.     15,
  257.   },
  258.   {
  259.     16, 16, 16, 16, 16, 16, 16, 16,
  260.     16, 16, 16, 16, 16, 16, 16, 16,
  261.     15, 15, 15, 15, 14, 14, 14, 14,
  262.     13, 13, 13, 13, 12, 12, 12, 12,
  263.     12, 11, 11, 11, 10, 10, 10, 10,
  264.      9,  9,  9,  9,  8,  8,  8,  8,
  265.      7,  7,  7,  7,  6,  6,  6,  6,
  266.      5,  5,  5,  5,  5,  4,  4,  4,
  267.      4,  4,  4,  4,  5,  5,  5,  5,
  268.      5,  6,  6,  6,  6,  7,  7,  7,
  269.      7,  8,  8,  8,  8,  9,  9,  9,
  270.      9, 10, 10, 10, 10, 11, 11, 11,
  271.     11, 12, 12, 12, 12, 13, 13, 13,
  272.     13, 14, 14, 14, 14, 15, 15, 15,
  273.     15, 16, 16, 16, 16, 16, 16, 16,
  274.     16, 16, 16, 16, 16, 16, 16, 16,
  275.     16,
  276.   }
  277. };
  278.  
  279. static const uint16_t bitalloc_3_codes[3] =
  280. {
  281.     0x0003, 0x0000, 0x0002,
  282. };
  283. static const uint8_t bitalloc_3_bits[3] =
  284. {
  285.      2,  1,  2,
  286. };
  287.  
  288. static const uint16_t bitalloc_5_codes_a[5] =
  289. {
  290.     0x000F, 0x0006, 0x0000, 0x0002, 0x000E,
  291. };
  292. static const uint16_t bitalloc_5_codes_b[5] =
  293. {
  294.     0x0007, 0x0001, 0x0002, 0x0000, 0x0006,
  295. };
  296. static const uint16_t bitalloc_5_codes_c[5] =
  297. {
  298.     0x0007, 0x0005, 0x0000, 0x0004, 0x0006,
  299. };
  300. static const uint8_t bitalloc_5_bits_a[5] =
  301. {
  302.      4,  3,  1,  2,  4,
  303. };
  304. static const uint8_t bitalloc_5_bits_b[5] =
  305. {
  306.      3,  2,  2,  2,  3,
  307. };
  308. static const uint8_t bitalloc_5_bits_c[5] =
  309. {
  310.      3,  3,  1,  3,  3,
  311. };
  312.  
  313. static const uint16_t bitalloc_7_codes_a[7] =
  314. {
  315.     0x001E, 0x000E, 0x0005, 0x0000, 0x0006, 0x0004, 0x001F,
  316. };
  317. static const uint16_t bitalloc_7_codes_b[7] =
  318. {
  319.     0x0014, 0x000B, 0x0000, 0x0003, 0x0001, 0x0004, 0x0015,
  320. };
  321. static const uint16_t bitalloc_7_codes_c[7] =
  322. {
  323.     0x0000, 0x0002, 0x0001, 0x0003, 0x0002, 0x0003, 0x0001,
  324. };
  325. static const uint8_t bitalloc_7_bits_a[7] =
  326. {
  327.      5,  4,  3,  1,  3,  3,  5,
  328. };
  329. static const uint8_t bitalloc_7_bits_b[7] =
  330. {
  331.      5,  4,  2,  2,  2,  3,  5,
  332. };
  333. static const uint8_t bitalloc_7_bits_c[7] =
  334. {
  335.      4,  4,  2,  2,  2,  4,  4,
  336. };
  337.  
  338. static const uint16_t bitalloc_9_codes_a[9] =
  339. {
  340.     0x0030, 0x0019, 0x0009, 0x0005, 0x0000, 0x0007, 0x000D, 0x0008,
  341.     0x0031,
  342. };
  343. static const uint16_t bitalloc_9_codes_b[9] =
  344. {
  345.     0x0018, 0x001A, 0x0002, 0x0007, 0x0002, 0x0000, 0x0003, 0x001B,
  346.     0x0019,
  347. };
  348. static const uint16_t bitalloc_9_codes_c[9] =
  349. {
  350.     0x001C, 0x000F, 0x0002, 0x0007, 0x0002, 0x0000, 0x0006, 0x0006,
  351.     0x001D,
  352. };
  353. static const uint8_t bitalloc_9_bits_a[9] =
  354. {
  355.      6,  5,  4,  3,  1,  3,  4,  4,  6,
  356. };
  357. static const uint8_t bitalloc_9_bits_b[9] =
  358. {
  359.      5,  5,  3,  3,  2,  2,  3,  5,  5,
  360. };
  361. static const uint8_t bitalloc_9_bits_c[9] =
  362. {
  363.      6,  5,  3,  3,  2,  2,  3,  4,  6,
  364. };
  365.  
  366. static const uint16_t bitalloc_13_codes_a[13] =
  367. {
  368.     0x0070, 0x002E, 0x0039, 0x001D, 0x000C, 0x000F, 0x0000, 0x0004,
  369.     0x000D, 0x000A, 0x0016, 0x002F, 0x0071,
  370. };
  371. static const uint16_t bitalloc_13_codes_b[13] =
  372. {
  373.     0x0038, 0x0010, 0x001D, 0x0007, 0x000F, 0x0005, 0x0000, 0x0006,
  374.     0x0002, 0x0009, 0x0006, 0x0011, 0x0039,
  375. };
  376. static const uint16_t bitalloc_13_codes_c[13] =
  377. {
  378.     0x0004, 0x001A, 0x0003, 0x000E, 0x0000, 0x0003, 0x0005, 0x0004,
  379.     0x0002, 0x000F, 0x000C, 0x001B, 0x0005,
  380. };
  381. static const uint8_t bitalloc_13_bits_a[13] =
  382. {
  383.      7,  6,  6,  5,  4,  4,  1,  3,  4,  4,  5,  6,  7,
  384. };
  385. static const uint8_t bitalloc_13_bits_b[13] =
  386. {
  387.      6,  5,  5,  4,  4,  3,  2,  3,  3,  4,  4,  5,  6,
  388. };
  389. static const uint8_t bitalloc_13_bits_c[13] =
  390. {
  391.      5,  5,  4,  4,  3,  3,  3,  3,  3,  4,  4,  5,  5,
  392. };
  393.  
  394. static const uint16_t bitalloc_17_codes_a[17] =
  395. {
  396.     0x0154, 0x00AB, 0x002B, 0x000B, 0x0003, 0x000A, 0x0001, 0x0006,
  397.     0x0001, 0x0007, 0x0004, 0x000B, 0x0000, 0x0004, 0x0014, 0x0054,
  398.     0x0155,
  399. };
  400. static const uint16_t bitalloc_17_codes_b[17] =
  401. {
  402.     0x007C, 0x003F, 0x0019, 0x000D, 0x001C, 0x0008, 0x000F, 0x0005,
  403.     0x0000, 0x0006, 0x0002, 0x0009, 0x001D, 0x000E, 0x001E, 0x0018,
  404.     0x007D,
  405. };
  406. static const uint16_t bitalloc_17_codes_c[17] =
  407. {
  408.     0x002C, 0x0017, 0x0005, 0x001C, 0x0003, 0x000A, 0x000F, 0x0003,
  409.     0x0006, 0x0004, 0x0000, 0x000B, 0x0004, 0x001D, 0x000A, 0x0004,
  410.     0x002D,
  411. };
  412. static const uint16_t bitalloc_17_codes_d[17] =
  413. {
  414.     0x0100, 0x0102, 0x0082, 0x0042, 0x0022, 0x0012, 0x000A, 0x0006,
  415.     0x0000, 0x0007, 0x000B, 0x0013, 0x0023, 0x0043, 0x0083, 0x0103,
  416.     0x0101,
  417. };
  418. static const uint16_t bitalloc_17_codes_e[17] =
  419. {
  420.     0x00E8, 0x00F6, 0x0075, 0x0034, 0x003B, 0x001B, 0x001F, 0x0004,
  421.     0x0000, 0x0005, 0x000C, 0x001C, 0x003C, 0x0035, 0x007A, 0x00F7,
  422.     0x00E9,
  423. };
  424. static const uint16_t bitalloc_17_codes_f[17] =
  425. {
  426.     0x0004, 0x0003, 0x001E, 0x0001, 0x0001, 0x000E, 0x0001, 0x0004,
  427.     0x0006, 0x0005, 0x0002, 0x000F, 0x0006, 0x000E, 0x001F, 0x0000,
  428.     0x0005,
  429. };
  430. static const uint16_t bitalloc_17_codes_g[17] =
  431. {
  432.     0x0060, 0x007E, 0x0031, 0x0019, 0x000D, 0x0004, 0x0000, 0x0006,
  433.     0x0002, 0x0007, 0x0001, 0x0005, 0x000E, 0x001E, 0x003E, 0x007F,
  434.     0x0061,
  435. };
  436. static const uint8_t bitalloc_17_bits_a[17] =
  437. {
  438.     12, 11,  9,  7,  5,  4,  3,  3,  2,  3,  3,  4,  4,  6,  8, 10,
  439.     12,
  440. };
  441. static const uint8_t bitalloc_17_bits_b[17] =
  442. {
  443.      8,  7,  6,  5,  5,  4,  4,  3,  2,  3,  3,  4,  5,  5,  6,  6,
  444.      8,
  445. };
  446. static const uint8_t bitalloc_17_bits_c[17] =
  447. {
  448.      7,  6,  5,  5,  4,  4,  4,  3,  3,  3,  3,  4,  4,  5,  5,  5,
  449.      7,
  450. };
  451. static const uint8_t bitalloc_17_bits_d[17] =
  452. {
  453.      9,  9,  8,  7,  6,  5,  4,  3,  1,  3,  4,  5,  6,  7,  8,  9,
  454.      9,
  455. };
  456. static const uint8_t bitalloc_17_bits_e[17] =
  457. {
  458.      8,  8,  7,  6,  6,  5,  5,  3,  1,  3,  4,  5,  6,  6,  7,  8,
  459.      8,
  460. };
  461. static const uint8_t bitalloc_17_bits_f[17] =
  462. {
  463.      8,  7,  6,  5,  4,  4,  3,  3,  3,  3,  3,  4,  4,  5,  6,  6,
  464.      8,
  465. };
  466. static const uint8_t bitalloc_17_bits_g[17] =
  467. {
  468.      8,  8,  7,  6,  5,  4,  3,  3,  2,  3,  3,  4,  5,  6,  7,  8,
  469.      8,
  470. };
  471.  
  472. static const uint16_t bitalloc_25_codes_a[25] =
  473. {
  474.     0x2854, 0x142B, 0x050B, 0x0143, 0x00A2, 0x0052, 0x002E, 0x0015,
  475.     0x0004, 0x000E, 0x0000, 0x0003, 0x0006, 0x0004, 0x0001, 0x000F,
  476.     0x0005, 0x0016, 0x002F, 0x0053, 0x00A3, 0x00A0, 0x0284, 0x0A14,
  477.     0x2855,
  478. };
  479. static const uint16_t bitalloc_25_codes_b[25] =
  480. {
  481.     0x001C, 0x000F, 0x0005, 0x0000, 0x0030, 0x0036, 0x000E, 0x0019,
  482.     0x0001, 0x0008, 0x000E, 0x0001, 0x0005, 0x0002, 0x000F, 0x0009,
  483.     0x0006, 0x001A, 0x000F, 0x0037, 0x0031, 0x0001, 0x0006, 0x0004,
  484.     0x001D,
  485. };
  486. static const uint16_t bitalloc_25_codes_c[25] =
  487. {
  488.     0x004C, 0x0027, 0x006D, 0x0028, 0x0037, 0x000E, 0x0015, 0x0000,
  489.     0x0005, 0x0008, 0x000B, 0x000E, 0x0001, 0x000F, 0x000C, 0x0009,
  490.     0x0006, 0x0001, 0x001A, 0x000F, 0x0008, 0x0029, 0x0012, 0x006C,
  491.     0x004D,
  492. };
  493. static const uint16_t bitalloc_25_codes_d[25] =
  494. {
  495.     0x0780, 0x0782, 0x03C2, 0x01E2, 0x00FE, 0x0079, 0x003D, 0x001C,
  496.     0x000C, 0x0004, 0x0000, 0x0006, 0x0002, 0x0007, 0x0001, 0x0005,
  497.     0x000D, 0x001D, 0x003E, 0x007E, 0x00FF, 0x01E3, 0x03C3, 0x0783,
  498.     0x0781,
  499. };
  500. static const uint16_t bitalloc_25_codes_e[25] =
  501. {
  502.     0x003C, 0x0092, 0x0018, 0x001F, 0x004E, 0x000D, 0x0025, 0x0004,
  503.     0x0010, 0x0000, 0x000A, 0x0002, 0x0003, 0x0003, 0x000B, 0x0001,
  504.     0x0011, 0x0005, 0x0026, 0x000E, 0x004F, 0x0048, 0x0019, 0x0093,
  505.     0x003D,
  506. };
  507. static const uint16_t bitalloc_25_codes_f[25] =
  508. {
  509.     0x0324, 0x0193, 0x00CE, 0x0065, 0x0024, 0x000C, 0x0013, 0x0004,
  510.     0x0007, 0x000A, 0x000D, 0x000F, 0x0001, 0x0000, 0x000E, 0x000B,
  511.     0x0008, 0x0005, 0x0018, 0x000D, 0x0025, 0x0066, 0x00CF, 0x00C8,
  512.     0x0325,
  513. };
  514. static const uint16_t bitalloc_25_codes_g[25] =
  515. {
  516.     0x03A8, 0x03AE, 0x01D5, 0x0094, 0x0014, 0x004B, 0x000B, 0x003B,
  517.     0x0013, 0x0003, 0x000F, 0x0005, 0x0001, 0x0006, 0x0000, 0x0008,
  518.     0x001C, 0x0004, 0x0024, 0x0074, 0x0015, 0x0095, 0x01D6, 0x03AF,
  519.     0x03A9,
  520. };
  521. static const uint8_t bitalloc_25_bits_a[25] =
  522. {
  523.     14, 13, 11,  9,  8,  7,  6,  5,  4,  4,  3,  3,  3,  3,  3,  4,
  524.      4,  5,  6,  7,  8,  8, 10, 12, 14,
  525. };
  526. static const uint8_t bitalloc_25_bits_b[25] =
  527. {
  528.      9,  8,  7,  6,  6,  6,  5,  5,  4,  4,  4,  3,  3,  3,  4,  4,
  529.      4,  5,  5,  6,  6,  6,  7,  7,  9,
  530. };
  531. static const uint8_t bitalloc_25_bits_c[25] =
  532. {
  533.      8,  7,  7,  6,  6,  5,  5,  4,  4,  4,  4,  4,  3,  4,  4,  4,
  534.      4,  4,  5,  5,  5,  6,  6,  7,  8,
  535. };
  536. static const uint8_t bitalloc_25_bits_d[25] =
  537. {
  538.     12, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  3,  2,  3,  3,  4,
  539.      5,  6,  7,  8,  9, 10, 11, 12, 12,
  540. };
  541. static const uint8_t bitalloc_25_bits_e[25] =
  542. {
  543.      8,  8,  7,  7,  7,  6,  6,  5,  5,  4,  4,  3,  2,  3,  4,  4,
  544.      5,  5,  6,  6,  7,  7,  7,  8,  8,
  545. };
  546. static const uint8_t bitalloc_25_bits_f[25] =
  547. {
  548.     10,  9,  8,  7,  6,  5,  5,  4,  4,  4,  4,  4,  3,  3,  4,  4,
  549.      4,  4,  5,  5,  6,  7,  8,  8, 10,
  550. };
  551. static const uint8_t bitalloc_25_bits_g[25] =
  552. {
  553.     10, 10,  9,  8,  7,  7,  6,  6,  5,  4,  4,  3,  2,  3,  3,  4,
  554.      5,  5,  6,  7,  7,  8,  9, 10, 10,
  555. };
  556.  
  557. static const uint16_t bitalloc_33_codes_a[33] =
  558. {
  559.     0x1580, 0x1582, 0x0AC2, 0x0562, 0x02B2, 0x015E, 0x00AD, 0x0054,
  560.     0x001C, 0x003C, 0x000F, 0x001F, 0x0008, 0x000B, 0x000D, 0x0000,
  561.     0x0002, 0x0001, 0x000E, 0x000C, 0x0009, 0x0006, 0x0014, 0x003D,
  562.     0x001D, 0x0055, 0x00AE, 0x015F, 0x02B3, 0x0563, 0x0AC3, 0x1583,
  563.     0x1581,
  564. };
  565. static const uint16_t bitalloc_33_codes_b[33] =
  566. {
  567.     0x030C, 0x0187, 0x006D, 0x0028, 0x0037, 0x0066, 0x0015, 0x0031,
  568.     0x0000, 0x000B, 0x0012, 0x001A, 0x0001, 0x0007, 0x000A, 0x000E,
  569.     0x0001, 0x000F, 0x000B, 0x0008, 0x0004, 0x001B, 0x0013, 0x000C,
  570.     0x0001, 0x0032, 0x001A, 0x0067, 0x0060, 0x0029, 0x00C2, 0x006C,
  571.     0x030D,
  572. };
  573. static const uint16_t bitalloc_33_codes_c[33] =
  574. {
  575.     0x00CC, 0x0067, 0x0005, 0x0070, 0x0003, 0x001A, 0x0039, 0x003F,
  576.     0x000A, 0x0012, 0x0018, 0x001D, 0x0001, 0x0003, 0x0007, 0x000A,
  577.     0x000D, 0x000B, 0x0008, 0x0004, 0x0002, 0x001E, 0x0019, 0x0013,
  578.     0x000B, 0x0000, 0x003E, 0x001B, 0x0018, 0x0071, 0x0032, 0x0004,
  579.     0x00CD,
  580. };
  581. static const uint16_t bitalloc_33_codes_d[33] =
  582. {
  583.     0x3AF8, 0x3AFA, 0x1D7E, 0x0EBC, 0x075C, 0x03AC, 0x01D4, 0x0094,
  584.     0x0014, 0x004B, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005,
  585.     0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x0074,
  586.     0x0015, 0x0095, 0x01D5, 0x03AD, 0x075D, 0x0EBD, 0x1D7F, 0x3AFB,
  587.     0x3AF9,
  588. };
  589. static const uint16_t bitalloc_33_codes_e[33] =
  590. {
  591.     0x01C8, 0x01E6, 0x0064, 0x00E2, 0x00E5, 0x0030, 0x0033, 0x0073,
  592.     0x007A, 0x001A, 0x003A, 0x0002, 0x001A, 0x001F, 0x0007, 0x0001,
  593.     0x0002, 0x0002, 0x000C, 0x0000, 0x001B, 0x0003, 0x003B, 0x001B,
  594.     0x007B, 0x0078, 0x0070, 0x0031, 0x00F2, 0x00E3, 0x0065, 0x01E7,
  595.     0x01C9,
  596. };
  597. static const uint16_t bitalloc_33_codes_f[33] =
  598. {
  599.     0x0724, 0x0393, 0x01CE, 0x00E5, 0x002C, 0x0008, 0x0017, 0x003E,
  600.     0x0005, 0x0014, 0x001D, 0x0000, 0x0003, 0x0006, 0x0008, 0x000B,
  601.     0x000D, 0x000C, 0x0009, 0x0007, 0x0004, 0x0001, 0x001E, 0x0015,
  602.     0x000A, 0x003F, 0x0038, 0x0009, 0x002D, 0x00E6, 0x01CF, 0x01C8,
  603.     0x0725,
  604. };
  605. static const uint16_t bitalloc_33_codes_g[33] =
  606. {
  607.     0x0284, 0x0042, 0x0140, 0x0143, 0x003E, 0x00BE, 0x0011, 0x0051,
  608.     0x0009, 0x0029, 0x0005, 0x0015, 0x0000, 0x0008, 0x000E, 0x0002,
  609.     0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0016, 0x0006, 0x002E,
  610.     0x000E, 0x005E, 0x001E, 0x00BF, 0x003F, 0x0020, 0x0141, 0x0043,
  611.     0x0285,
  612. };
  613. static const uint8_t bitalloc_33_bits_a[33] =
  614. {
  615.     13, 13, 12, 11, 10,  9,  8,  7,  6,  6,  5,  5,  4,  4,  4,  3,
  616.      3,  3,  4,  4,  4,  4,  5,  6,  6,  7,  8,  9, 10, 11, 12, 13,
  617.     13,
  618. };
  619. static const uint8_t bitalloc_33_bits_b[33] =
  620. {
  621.     10,  9,  8,  7,  7,  7,  6,  6,  5,  5,  5,  5,  4,  4,  4,  4,
  622.      3,  4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  7,  7,  7,  8,  8,
  623.     10,
  624. };
  625. static const uint8_t bitalloc_33_bits_c[33] =
  626. {
  627.      9,  8,  7,  7,  6,  6,  6,  6,  5,  5,  5,  5,  4,  4,  4,  4,
  628.      4,  4,  4,  4,  4,  5,  5,  5,  5,  5,  6,  6,  6,  7,  7,  7,
  629.      9,
  630. };
  631. static const uint8_t bitalloc_33_bits_d[33] =
  632. {
  633.     14, 14, 13, 12, 11, 10,  9,  8,  7,  7,  6,  6,  5,  4,  4,  3,
  634.      2,  3,  3,  4,  5,  5,  6,  7,  7,  8,  9, 10, 11, 12, 13, 14,
  635.     14,
  636. };
  637. static const uint8_t bitalloc_33_bits_e[33] =
  638. {
  639.      9,  9,  8,  8,  8,  7,  7,  7,  7,  6,  6,  5,  5,  5,  4,  3,
  640.      2,  3,  4,  4,  5,  5,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,
  641.      9,
  642. };
  643. static const uint8_t bitalloc_33_bits_f[33] =
  644. {
  645.     11, 10,  9,  8,  7,  6,  6,  6,  5,  5,  5,  4,  4,  4,  4,  4,
  646.      4,  4,  4,  4,  4,  4,  5,  5,  5,  6,  6,  6,  7,  8,  9,  9,
  647.     11,
  648. };
  649. static const uint8_t bitalloc_33_bits_g[33] =
  650. {
  651.     10,  9,  9,  9,  8,  8,  7,  7,  6,  6,  5,  5,  4,  4,  4,  3,
  652.      3,  3,  4,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8,  8,  9,  9,
  653.     10,
  654. };
  655.  
  656. static const uint16_t bitalloc_65_codes_a[65] =
  657. {
  658.     0x9E5C, 0x9E5E, 0x4F2C, 0x2794, 0x13C4, 0x1E44, 0x09E3, 0x0F23,
  659.     0x04F3, 0x0792, 0x027E, 0x03CE, 0x013D, 0x01E5, 0x009C, 0x00CC,
  660.     0x0040, 0x0058, 0x0067, 0x001E, 0x0021, 0x002D, 0x003D, 0x0007,
  661.     0x0011, 0x0014, 0x0017, 0x001A, 0x001C, 0x001F, 0x0001, 0x0004,
  662.     0x0006, 0x0005, 0x0002, 0x0000, 0x001D, 0x001B, 0x0018, 0x0015,
  663.     0x0012, 0x000E, 0x0006, 0x0032, 0x0026, 0x001F, 0x0078, 0x0059,
  664.     0x0041, 0x00CD, 0x009D, 0x01E6, 0x013E, 0x03CF, 0x027F, 0x0793,
  665.     0x0790, 0x04F0, 0x09E4, 0x1E45, 0x13C5, 0x2795, 0x4F2D, 0x9E5F,
  666.     0x9E5D,
  667. };
  668. static const uint16_t bitalloc_65_codes_b[65] =
  669. {
  670.     0x0A8C, 0x0547, 0x01B5, 0x0008, 0x00DB, 0x0152, 0x0005, 0x000B,
  671.     0x008E, 0x00AE, 0x00E4, 0x0003, 0x0037, 0x0039, 0x0055, 0x006C,
  672.     0x0073, 0x0003, 0x0015, 0x001D, 0x0028, 0x0030, 0x0037, 0x003E,
  673.     0x0006, 0x000B, 0x000F, 0x0012, 0x0016, 0x0019, 0x001D, 0x0001,
  674.     0x0004, 0x0002, 0x001E, 0x001A, 0x0017, 0x0013, 0x0010, 0x000C,
  675.     0x0007, 0x003F, 0x0038, 0x0031, 0x0029, 0x0022, 0x001A, 0x0014,
  676.     0x0000, 0x006D, 0x0056, 0x0046, 0x0038, 0x0004, 0x00E5, 0x00AF,
  677.     0x008F, 0x006C, 0x000A, 0x0153, 0x0150, 0x0009, 0x02A2, 0x01B4,
  678.     0x0A8D,
  679. };
  680. static const uint16_t bitalloc_65_codes_c[65] =
  681. {
  682.     0x045C, 0x022F, 0x03F5, 0x01BC, 0x01FB, 0x0059, 0x00D0, 0x00DF,
  683.     0x000A, 0x002D, 0x002F, 0x0052, 0x0069, 0x0078, 0x007F, 0x000A,
  684.     0x0010, 0x001C, 0x0023, 0x002A, 0x0035, 0x003A, 0x003D, 0x0000,
  685.     0x0003, 0x0006, 0x0009, 0x000C, 0x000F, 0x0012, 0x0016, 0x0018,
  686.     0x001C, 0x0019, 0x0017, 0x0013, 0x0010, 0x000D, 0x000A, 0x0007,
  687.     0x0004, 0x0001, 0x003E, 0x003B, 0x0036, 0x002B, 0x0028, 0x001D,
  688.     0x0011, 0x000B, 0x0004, 0x0079, 0x006E, 0x0053, 0x0044, 0x002E,
  689.     0x000B, 0x00FC, 0x00D1, 0x008A, 0x0058, 0x01BD, 0x0116, 0x03F4,
  690.     0x045D,
  691. };
  692. static const uint16_t bitalloc_65_codes_d[65] =
  693. {
  694.     0x70B0, 0x70B2, 0x70B4, 0x2852, 0x385B, 0x142E, 0x1C2E, 0x0A15,
  695.     0x0E14, 0x0214, 0x0704, 0x0104, 0x010B, 0x0383, 0x0083, 0x0143,
  696.     0x01C3, 0x0043, 0x00A2, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012,
  697.     0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000,
  698.     0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B,
  699.     0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A3, 0x00A0,
  700.     0x0040, 0x01C0, 0x0084, 0x0384, 0x0284, 0x0105, 0x0705, 0x0215,
  701.     0x0E15, 0x0A16, 0x1C2F, 0x142F, 0x1428, 0x2853, 0x70B5, 0x70B3,
  702.     0x70B1,
  703. };
  704. static const uint16_t bitalloc_65_codes_e[65] =
  705. {
  706.     0x032C, 0x0332, 0x0378, 0x037E, 0x008C, 0x014A, 0x0188, 0x0197,
  707.     0x019E, 0x01BD, 0x0044, 0x0047, 0x00AA, 0x00C5, 0x00CD, 0x00DC,
  708.     0x001C, 0x002C, 0x0053, 0x0063, 0x0068, 0x0008, 0x000F, 0x0017,
  709.     0x002B, 0x0035, 0x0005, 0x0009, 0x0016, 0x001C, 0x0006, 0x000F,
  710.     0x0004, 0x0000, 0x0007, 0x001D, 0x0017, 0x000A, 0x0006, 0x0036,
  711.     0x0030, 0x0028, 0x0010, 0x0009, 0x0069, 0x0064, 0x0054, 0x002D,
  712.     0x001D, 0x00DD, 0x00CE, 0x00CA, 0x00AB, 0x00A4, 0x0045, 0x01BE,
  713.     0x019F, 0x0198, 0x0189, 0x014B, 0x008D, 0x037F, 0x0379, 0x0333,
  714.     0x032D,
  715. };
  716. static const uint16_t bitalloc_65_codes_f[65] =
  717. {
  718.     0x0FE0, 0x0FE2, 0x0FE8, 0x0FEA, 0x0FEC, 0x0FEE, 0x0FF0, 0x0FF2,
  719.     0x0FF4, 0x2FF2, 0x07F2, 0x07FB, 0x03F6, 0x0BFA, 0x0BFD, 0x01FF,
  720.     0x05FF, 0x02FC, 0x007C, 0x017C, 0x003C, 0x00BC, 0x001C, 0x005C,
  721.     0x000C, 0x002C, 0x0004, 0x0014, 0x0000, 0x0008, 0x000E, 0x0002,
  722.     0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0015, 0x0005, 0x002D,
  723.     0x000D, 0x005D, 0x001D, 0x00BD, 0x003D, 0x017D, 0x007D, 0x02FD,
  724.     0x00FC, 0x05FC, 0x01FA, 0x0BFB, 0x03F7, 0x17F8, 0x07F3, 0x2FF3,
  725.     0x0FF5, 0x0FF3, 0x0FF1, 0x0FEF, 0x0FED, 0x0FEB, 0x0FE9, 0x0FE3,
  726.     0x0FE1,
  727. };
  728. static const uint16_t bitalloc_65_codes_g[65] =
  729. {
  730.     0x010C, 0x038A, 0x0608, 0x0786, 0x0084, 0x0087, 0x0302, 0x0305,
  731.     0x0040, 0x00E0, 0x00E3, 0x0183, 0x001E, 0x005E, 0x009E, 0x00DE,
  732.     0x00F1, 0x0011, 0x0039, 0x0061, 0x0079, 0x0009, 0x001D, 0x0031,
  733.     0x003D, 0x0005, 0x000F, 0x0019, 0x001F, 0x0003, 0x0006, 0x000A,
  734.     0x000E, 0x000B, 0x0008, 0x0004, 0x0000, 0x001A, 0x0012, 0x000A,
  735.     0x0002, 0x0036, 0x0026, 0x0016, 0x0006, 0x006E, 0x004E, 0x002E,
  736.     0x000E, 0x00DF, 0x009F, 0x005F, 0x001F, 0x01E0, 0x0180, 0x00E1,
  737.     0x0041, 0x03C2, 0x0303, 0x01C4, 0x0085, 0x0787, 0x0609, 0x038B,
  738.     0x010D,
  739. };
  740. static const uint8_t bitalloc_65_bits_a[65] =
  741. {
  742.     16, 16, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10,  9,  9,  8,  8,
  743.      7,  7,  7,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,  4,
  744.      4,  4,  4,  4,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  7,  7,
  745.      7,  8,  8,  9,  9, 10, 10, 11, 11, 11, 12, 13, 13, 14, 15, 16,
  746.     16,
  747. };
  748. static const uint8_t bitalloc_65_bits_b[65] =
  749. {
  750.     12, 11, 10,  9,  9,  9,  8,  8,  8,  8,  8,  7,  7,  7,  7,  7,
  751.      7,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,
  752.      4,  4,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,
  753.      6,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  9,  9,  9, 10, 10,
  754.     12,
  755. };
  756. static const uint8_t bitalloc_65_bits_c[65] =
  757. {
  758.     11, 10, 10,  9,  9,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  6,
  759.      6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  5,  5,
  760.      5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  6,
  761.      6,  6,  6,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9, 10,
  762.     11,
  763. };
  764. static const uint8_t bitalloc_65_bits_d[65] =
  765. {
  766.     15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10,  9,  9,
  767.      9,  8,  8,  8,  7,  7,  7,  6,  6,  6,  5,  5,  5,  4,  4,  3,
  768.      3,  3,  4,  4,  5,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,  8,
  769.      8,  9,  9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 15, 15,
  770.     15,
  771. };
  772. static const uint8_t bitalloc_65_bits_e[65] =
  773. {
  774.     10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  8,
  775.      7,  7,  7,  7,  7,  6,  6,  6,  6,  6,  5,  5,  5,  5,  4,  4,
  776.      3,  3,  4,  5,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  7,  7,
  777.      7,  8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10,
  778.     10,
  779. };
  780. static const uint8_t bitalloc_65_bits_f[65] =
  781. {
  782.     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11,
  783.     11, 10,  9,  9,  8,  8,  7,  7,  6,  6,  5,  5,  4,  4,  4,  3,
  784.      3,  3,  4,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8,  9,  9, 10,
  785.     10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
  786.     14,
  787. };
  788. static const uint8_t bitalloc_65_bits_g[65] =
  789. {
  790.     11, 11, 11, 11, 10, 10, 10, 10,  9,  9,  9,  9,  8,  8,  8,  8,
  791.      8,  7,  7,  7,  7,  6,  6,  6,  6,  5,  5,  5,  5,  4,  4,  4,
  792.      4,  4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,
  793.      7,  8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11,
  794.     11,
  795. };
  796.  
  797. static const uint16_t bitalloc_129_codes_a[129] =
  798. {
  799.     0x0660, 0x0666, 0x06EC, 0x0722, 0x0760, 0x076E, 0x004C, 0x004E,
  800.     0x00F4, 0x010A, 0x0148, 0x0156, 0x01D4, 0x01F2, 0x0331, 0x0370,
  801.     0x0377, 0x0396, 0x03B1, 0x0024, 0x0064, 0x007B, 0x008A, 0x00A5,
  802.     0x00D4, 0x00EB, 0x00FA, 0x019A, 0x01B9, 0x01C9, 0x01D9, 0x0010,
  803.     0x0030, 0x0033, 0x0043, 0x0053, 0x006B, 0x007A, 0x00CA, 0x00D2,
  804.     0x00DE, 0x00E6, 0x00F6, 0x000E, 0x001F, 0x0023, 0x002B, 0x003B,
  805.     0x003F, 0x0067, 0x0070, 0x0077, 0x0005, 0x000D, 0x0012, 0x001B,
  806.     0x002C, 0x0035, 0x003A, 0x0004, 0x000B, 0x0017, 0x001F, 0x0009,
  807.     0x0008, 0x000A, 0x0000, 0x0018, 0x000C, 0x0005, 0x003C, 0x0036,
  808.     0x002D, 0x001C, 0x0013, 0x000E, 0x0006, 0x007A, 0x0071, 0x0068,
  809.     0x0064, 0x003C, 0x0034, 0x0028, 0x0020, 0x000F, 0x00F7, 0x00E7,
  810.     0x00DF, 0x00D3, 0x00CB, 0x007B, 0x0074, 0x0054, 0x0044, 0x003C,
  811.     0x0031, 0x0011, 0x01DA, 0x01CA, 0x01BA, 0x019B, 0x00FB, 0x00F8,
  812.     0x00D5, 0x00AA, 0x008B, 0x0084, 0x0065, 0x0025, 0x03B6, 0x0397,
  813.     0x0390, 0x0371, 0x0332, 0x01F3, 0x01D5, 0x0157, 0x0149, 0x010B,
  814.     0x00F5, 0x004F, 0x004D, 0x076F, 0x0761, 0x0723, 0x06ED, 0x0667,
  815.     0x0661,
  816. };
  817. static const uint16_t bitalloc_129_codes_b[129] =
  818. {
  819.     0x29DC, 0x14EF, 0x0455, 0x0E9C, 0x022B, 0x0489, 0x0740, 0x074F,
  820.     0x0172, 0x0245, 0x0247, 0x030A, 0x03A1, 0x001C, 0x008B, 0x00D6,
  821.     0x010C, 0x0148, 0x014F, 0x0186, 0x01D1, 0x0008, 0x000F, 0x0046,
  822.     0x005D, 0x0078, 0x0087, 0x0096, 0x00A5, 0x00BC, 0x00D8, 0x00DE,
  823.     0x00F6, 0x0005, 0x0014, 0x0024, 0x002F, 0x003A, 0x003D, 0x0049,
  824.     0x0050, 0x0058, 0x005F, 0x0066, 0x006D, 0x0075, 0x007C, 0x0004,
  825.     0x000B, 0x0013, 0x0018, 0x001B, 0x001F, 0x0022, 0x0026, 0x002A,
  826.     0x002D, 0x0031, 0x0034, 0x0038, 0x003B, 0x003F, 0x0003, 0x0006,
  827.     0x000A, 0x0007, 0x0004, 0x0000, 0x003C, 0x0039, 0x0035, 0x0032,
  828.     0x002E, 0x002B, 0x0027, 0x0023, 0x0020, 0x001C, 0x0019, 0x0016,
  829.     0x0010, 0x0005, 0x007D, 0x007A, 0x006E, 0x0067, 0x0060, 0x0059,
  830.     0x0051, 0x004A, 0x0042, 0x003B, 0x0034, 0x0025, 0x0015, 0x0006,
  831.     0x00F7, 0x00DF, 0x00D9, 0x00BD, 0x00A6, 0x0097, 0x0090, 0x0079,
  832.     0x006A, 0x0047, 0x0044, 0x0009, 0x01D2, 0x0187, 0x0184, 0x0149,
  833.     0x010D, 0x00D7, 0x00B8, 0x001D, 0x03A6, 0x030B, 0x029C, 0x0246,
  834.     0x0173, 0x0114, 0x0741, 0x053A, 0x0488, 0x0E9D, 0x0A76, 0x0454,
  835.     0x29DD,
  836. };
  837. static const uint16_t bitalloc_129_codes_c[129] =
  838. {
  839.     0x0E5C, 0x072F, 0x001D, 0x0724, 0x000F, 0x010D, 0x0324, 0x0393,
  840.     0x03E9, 0x0080, 0x0087, 0x00FA, 0x0164, 0x0193, 0x01DE, 0x01F5,
  841.     0x0010, 0x002A, 0x0041, 0x0064, 0x0073, 0x008E, 0x00A4, 0x00B3,
  842.     0x00D6, 0x00E5, 0x00F4, 0x00FB, 0x0002, 0x0009, 0x0013, 0x001E,
  843.     0x0026, 0x002C, 0x0033, 0x003F, 0x0041, 0x004C, 0x0053, 0x005E,
  844.     0x0065, 0x0070, 0x0073, 0x0078, 0x007B, 0x007E, 0x0002, 0x0005,
  845.     0x0007, 0x000B, 0x000D, 0x0011, 0x0014, 0x0017, 0x001A, 0x001D,
  846.     0x0021, 0x0024, 0x0027, 0x002A, 0x002D, 0x0030, 0x0033, 0x0036,
  847.     0x003A, 0x0037, 0x0034, 0x0031, 0x002E, 0x002B, 0x0028, 0x0025,
  848.     0x0022, 0x001E, 0x001B, 0x0018, 0x0015, 0x0012, 0x000E, 0x000C,
  849.     0x0008, 0x0006, 0x0003, 0x007F, 0x007C, 0x0079, 0x0076, 0x0071,
  850.     0x006A, 0x005F, 0x0058, 0x004D, 0x0046, 0x0040, 0x0038, 0x002D,
  851.     0x0027, 0x001F, 0x0014, 0x0012, 0x0003, 0x0000, 0x00F5, 0x00EE,
  852.     0x00D7, 0x00C8, 0x00A5, 0x008F, 0x007C, 0x0065, 0x0042, 0x002B,
  853.     0x0011, 0x0002, 0x01DF, 0x01C8, 0x0165, 0x00FB, 0x00E4, 0x0081,
  854.     0x0006, 0x03E8, 0x0325, 0x01CA, 0x010C, 0x0725, 0x0396, 0x001C,
  855.     0x0E5D,
  856. };
  857. static const uint16_t bitalloc_129_codes_d[129] =
  858. {
  859.     0xA598, 0xA59A, 0xA59C, 0xA59E, 0xC598, 0xE586, 0x3ACC, 0x52CA,
  860.     0x62CD, 0x0D48, 0x1D67, 0x2978, 0x3167, 0x3966, 0x06A5, 0x0EBC,
  861.     0x14BD, 0x1CB1, 0x0350, 0x0353, 0x075F, 0x0A5F, 0x0C5E, 0x0E5E,
  862.     0x01AE, 0x03AD, 0x052D, 0x062D, 0x072D, 0x00D5, 0x01D4, 0x0294,
  863.     0x0314, 0x0394, 0x0014, 0x0094, 0x0114, 0x0174, 0x01B4, 0x01F4,
  864.     0x000B, 0x004B, 0x008B, 0x00BB, 0x00DB, 0x00FB, 0x001B, 0x003B,
  865.     0x0053, 0x0063, 0x0073, 0x0003, 0x0013, 0x0023, 0x002F, 0x0037,
  866.     0x003F, 0x0007, 0x000F, 0x0015, 0x0019, 0x001D, 0x0001, 0x0005,
  867.     0x0009, 0x0006, 0x0002, 0x001E, 0x001A, 0x0016, 0x0010, 0x0008,
  868.     0x0000, 0x0038, 0x0030, 0x0028, 0x001C, 0x000C, 0x007C, 0x006C,
  869.     0x005C, 0x0044, 0x0024, 0x0004, 0x00E4, 0x00C4, 0x00A4, 0x0074,
  870.     0x0034, 0x01F5, 0x01B5, 0x0175, 0x0115, 0x0095, 0x0015, 0x0395,
  871.     0x0315, 0x0295, 0x01D5, 0x00D6, 0x072E, 0x062E, 0x052E, 0x03AE,
  872.     0x01AF, 0x0E5F, 0x0C5F, 0x0C58, 0x0A58, 0x0758, 0x0351, 0x1CB2,
  873.     0x18B2, 0x0EBD, 0x0EB2, 0x3967, 0x3960, 0x2979, 0x2964, 0x0D49,
  874.     0x72C2, 0x52CB, 0x3ACD, 0xE587, 0xC599, 0xA59F, 0xA59D, 0xA59B,
  875.     0xA599,
  876. };
  877. static const uint16_t bitalloc_129_codes_e[129] =
  878. {
  879.     0xA13C, 0xC720, 0xA13F, 0xA13E, 0xA13D, 0xE722, 0x5090, 0x6393,
  880.     0x7392, 0x2849, 0x31CE, 0x39CE, 0x1425, 0x18E5, 0x1CE5, 0x0844,
  881.     0x0A1C, 0x0C7C, 0x036C, 0x0423, 0x050F, 0x063F, 0x01B7, 0x0216,
  882.     0x0285, 0x031D, 0x039D, 0x0109, 0x0140, 0x0180, 0x01C8, 0x01CF,
  883.     0x007A, 0x008A, 0x00A2, 0x00C1, 0x00E5, 0x0014, 0x0037, 0x0043,
  884.     0x004E, 0x0056, 0x0061, 0x006C, 0x007C, 0x000B, 0x001C, 0x001F,
  885.     0x0023, 0x0025, 0x0029, 0x002C, 0x002E, 0x0032, 0x0034, 0x0037,
  886.     0x003A, 0x003C, 0x003F, 0x0001, 0x0003, 0x0006, 0x0008, 0x000A,
  887.     0x000C, 0x000B, 0x0009, 0x0007, 0x0004, 0x0002, 0x0000, 0x003D,
  888.     0x003B, 0x0038, 0x0035, 0x0033, 0x002F, 0x002D, 0x002A, 0x0026,
  889.     0x0024, 0x0020, 0x001D, 0x001A, 0x007D, 0x006D, 0x0062, 0x0057,
  890.     0x004F, 0x0044, 0x003C, 0x0015, 0x00E6, 0x00C6, 0x00A3, 0x008B,
  891.     0x007B, 0x006C, 0x01C9, 0x0181, 0x0141, 0x010A, 0x00DA, 0x031E,
  892.     0x0286, 0x0217, 0x0210, 0x0738, 0x0638, 0x0508, 0x036D, 0x0C7D,
  893.     0x0A1D, 0x0845, 0x1CE6, 0x18E6, 0x1426, 0x39CF, 0x31CF, 0x284E,
  894.     0x7393, 0x7390, 0x5091, 0xE723, 0xC724, 0xC725, 0xC722, 0xC723,
  895.     0xC721,
  896. };
  897. static const uint16_t bitalloc_129_codes_f[129] =
  898. {
  899.     0x762C, 0x3B17, 0x1555, 0x0608, 0x0AAB, 0x0FF2, 0x0305, 0x0307,
  900.     0x0763, 0x0046, 0x010C, 0x01BC, 0x02AB, 0x03B6, 0x03FD, 0x0080,
  901.     0x0087, 0x00DF, 0x0156, 0x01D9, 0x01F8, 0x01FF, 0x002A, 0x0041,
  902.     0x0061, 0x0094, 0x00D4, 0x00EA, 0x00F2, 0x00FD, 0x0009, 0x000B,
  903.     0x001A, 0x0026, 0x0031, 0x0040, 0x004B, 0x006B, 0x0073, 0x0077,
  904.     0x007A, 0x007C, 0x0000, 0x0002, 0x0006, 0x0008, 0x000B, 0x000E,
  905.     0x0011, 0x0014, 0x0016, 0x0019, 0x001C, 0x001E, 0x0021, 0x0023,
  906.     0x0026, 0x0028, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0036,
  907.     0x0038, 0x0037, 0x0034, 0x0032, 0x0030, 0x002E, 0x002C, 0x0029,
  908.     0x0027, 0x0024, 0x0022, 0x001F, 0x001D, 0x001A, 0x0017, 0x0015,
  909.     0x0012, 0x000F, 0x000C, 0x0009, 0x0007, 0x0003, 0x0001, 0x007D,
  910.     0x007B, 0x0078, 0x0074, 0x0072, 0x0054, 0x0041, 0x0036, 0x0027,
  911.     0x001B, 0x0014, 0x000A, 0x00FE, 0x00F3, 0x00EB, 0x00D5, 0x0095,
  912.     0x006E, 0x0042, 0x002B, 0x0010, 0x01F9, 0x01DA, 0x0157, 0x0154,
  913.     0x00C0, 0x0081, 0x0022, 0x03B7, 0x03B0, 0x01BD, 0x010D, 0x0047,
  914.     0x07F8, 0x0554, 0x0306, 0x0FF3, 0x0EC4, 0x0609, 0x1D8A, 0x1554,
  915.     0x762D,
  916. };
  917. static const uint16_t bitalloc_129_codes_g[129] =
  918. {
  919.     0x1E20, 0x1E5E, 0x031C, 0x051A, 0x0718, 0x0916, 0x0B14, 0x0D12,
  920.     0x0F11, 0x0090, 0x018F, 0x028E, 0x038D, 0x048C, 0x058B, 0x068A,
  921.     0x0789, 0x0049, 0x00C8, 0x0148, 0x01C7, 0x0247, 0x02C6, 0x0346,
  922.     0x03C5, 0x0025, 0x0065, 0x00A5, 0x00E4, 0x0124, 0x0164, 0x01A4,
  923.     0x01E3, 0x0013, 0x0033, 0x0053, 0x0073, 0x0093, 0x00B3, 0x00D3,
  924.     0x00F3, 0x000A, 0x001A, 0x002A, 0x003A, 0x004A, 0x005A, 0x006A,
  925.     0x007A, 0x0006, 0x000E, 0x0016, 0x001E, 0x0026, 0x002E, 0x0036,
  926.     0x003E, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
  927.     0x0000, 0x001D, 0x0019, 0x0015, 0x0011, 0x000D, 0x0009, 0x0005,
  928.     0x003F, 0x0037, 0x002F, 0x0027, 0x001F, 0x0017, 0x000F, 0x0007,
  929.     0x007B, 0x006B, 0x005B, 0x004B, 0x003B, 0x002B, 0x001B, 0x000B,
  930.     0x0008, 0x00F0, 0x00D0, 0x00B0, 0x0090, 0x0070, 0x0050, 0x0030,
  931.     0x01E4, 0x01A5, 0x0165, 0x0125, 0x00E5, 0x00E2, 0x00A2, 0x0062,
  932.     0x03CA, 0x0347, 0x02C7, 0x02C4, 0x0244, 0x0149, 0x00C9, 0x00C6,
  933.     0x0796, 0x068B, 0x0688, 0x048D, 0x048A, 0x028F, 0x028C, 0x0091,
  934.     0x0F2E, 0x0D13, 0x0B15, 0x0917, 0x0719, 0x051B, 0x031D, 0x1E5F,
  935.     0x1E21,
  936. };
  937. static const uint8_t bitalloc_129_bits_a[129] =
  938. {
  939.     11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
  940.     10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  8,
  941.      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  7,  7,  7,  7,  7,
  942.      7,  7,  7,  7,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  4,
  943.      4,  4,  4,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,
  944.      7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
  945.      8,  8,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,
  946.     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,
  947.     11,
  948. };
  949. static const uint8_t bitalloc_129_bits_b[129] =
  950. {
  951.     14, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10,  9,  9,  9,
  952.      9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
  953.      8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  6,
  954.      6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,
  955.      5,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
  956.      6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
  957.      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,  9,  9,  9,
  958.      9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12,
  959.     14,
  960. };
  961. static const uint8_t bitalloc_129_bits_c[129] =
  962. {
  963.     13, 12, 11, 11, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,
  964.      8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  7,  7,  7,  7,
  965.      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  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,  6,  6,  6,  6,  6,  6,  6,  6,  6,
  968.      6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
  969.      7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
  970.      8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11,
  971.     13,
  972. };
  973. static const uint8_t bitalloc_129_bits_d[129] =
  974. {
  975.     16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 13, 13,
  976.     13, 13, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 10, 10, 10,
  977.     10, 10,  9,  9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  8,  7,  7,
  978.      7,  7,  7,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  4,  4,
  979.      4,  4,  4,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,
  980.      7,  7,  7,  7,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10,
  981.     10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13,
  982.     13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16,
  983.     16,
  984. };
  985. static const uint8_t bitalloc_129_bits_e[129] =
  986. {
  987.     16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12,
  988.     12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,
  989.      8,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  7,  6,  6,  6,
  990.      6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,
  991.      5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,
  992.      6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,
  993.      8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11, 12,
  994.     12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16,
  995.     16,
  996. };
  997. static const uint8_t bitalloc_129_bits_f[129] =
  998. {
  999.     15, 14, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 10, 10,  9,
  1000.      9,  9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  8,  8,  8,  7,  7,
  1001.      7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  6,  6,  6,  6,  6,  6,
  1002.      6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
  1003.      6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
  1004.      6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  7,
  1005.      7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,  9,  9,  9,
  1006.      9,  9,  9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13,
  1007.     15,
  1008. };
  1009. static const uint8_t bitalloc_129_bits_g[129] =
  1010. {
  1011.     13, 13, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11,
  1012.     11, 10, 10, 10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,
  1013.      9,  8,  8,  8,  8,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,
  1014.      7,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,
  1015.      4,  5,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  6,  6,  6,
  1016.      7,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  8,
  1017.      9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10,
  1018.     11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 13,
  1019.     13,
  1020. };
  1021.  
  1022. static const uint8_t bitalloc_sizes[10] = { 3, 5, 7, 9, 13, 17, 25, 33, 65, 129 };
  1023.  
  1024. static const int8_t bitalloc_offsets[10] =
  1025.     { -1, -2, -3, -4, -6, -8, -12, -16, -32, -64 };
  1026.  
  1027. static const uint8_t bitalloc_maxbits[10][7] = {
  1028.     { 2 },
  1029.     { 4, 3, 3 },
  1030.     { 5, 5, 4 },
  1031.     { 6, 5, 6 },
  1032.     { 7, 6, 5 },
  1033.     { 9, 8, 7, 9, 8, 8, 8 },
  1034.     { 9, 9, 8, 9, 8, 9, 9 },
  1035.     { 9, 9, 9, 9, 9, 9, 9 },
  1036.     { 9, 9, 9, 9, 9, 9, 9 },
  1037.     { 9, 9, 9, 9, 9, 9, 9 }
  1038. };
  1039.  
  1040. static const uint16_t* const bitalloc_codes[10][8] = {
  1041.   { bitalloc_3_codes, NULL },
  1042.   { bitalloc_5_codes_a,  bitalloc_5_codes_b,  bitalloc_5_codes_c,  NULL },
  1043.   { bitalloc_7_codes_a,  bitalloc_7_codes_b,  bitalloc_7_codes_c,  NULL },
  1044.   { bitalloc_9_codes_a,  bitalloc_9_codes_b,  bitalloc_9_codes_c,  NULL },
  1045.   { bitalloc_13_codes_a, bitalloc_13_codes_b, bitalloc_13_codes_c, NULL },
  1046.   { bitalloc_17_codes_a, bitalloc_17_codes_b, bitalloc_17_codes_c, bitalloc_17_codes_d,
  1047.     bitalloc_17_codes_e, bitalloc_17_codes_f, bitalloc_17_codes_g, NULL },
  1048.   { bitalloc_25_codes_a, bitalloc_25_codes_b, bitalloc_25_codes_c, bitalloc_25_codes_d,
  1049.     bitalloc_25_codes_e, bitalloc_25_codes_f, bitalloc_25_codes_g, NULL },
  1050.   { bitalloc_33_codes_a, bitalloc_33_codes_b, bitalloc_33_codes_c, bitalloc_33_codes_d,
  1051.     bitalloc_33_codes_e, bitalloc_33_codes_f, bitalloc_33_codes_g, NULL },
  1052.   { bitalloc_65_codes_a, bitalloc_65_codes_b, bitalloc_65_codes_c, bitalloc_65_codes_d,
  1053.     bitalloc_65_codes_e, bitalloc_65_codes_f, bitalloc_65_codes_g, NULL },
  1054.   { bitalloc_129_codes_a, bitalloc_129_codes_b, bitalloc_129_codes_c, bitalloc_129_codes_d,
  1055.     bitalloc_129_codes_e, bitalloc_129_codes_f, bitalloc_129_codes_g, NULL }
  1056. };
  1057.  
  1058. static const uint8_t* const bitalloc_bits[10][8] = {
  1059.   { bitalloc_3_bits, NULL },
  1060.   { bitalloc_5_bits_a,  bitalloc_5_bits_b,  bitalloc_5_bits_c,  NULL },
  1061.   { bitalloc_7_bits_a,  bitalloc_7_bits_b,  bitalloc_7_bits_c,  NULL },
  1062.   { bitalloc_9_bits_a,  bitalloc_9_bits_b,  bitalloc_9_bits_c,  NULL },
  1063.   { bitalloc_13_bits_a, bitalloc_13_bits_b, bitalloc_13_bits_c, NULL },
  1064.   { bitalloc_17_bits_a, bitalloc_17_bits_b, bitalloc_17_bits_c, bitalloc_17_bits_d,
  1065.     bitalloc_17_bits_e, bitalloc_17_bits_f, bitalloc_17_bits_g, NULL },
  1066.   { bitalloc_25_bits_a, bitalloc_25_bits_b, bitalloc_25_bits_c, bitalloc_25_bits_d,
  1067.     bitalloc_25_bits_e, bitalloc_25_bits_f, bitalloc_25_bits_g, NULL },
  1068.   { bitalloc_33_bits_a, bitalloc_33_bits_b, bitalloc_33_bits_c, bitalloc_33_bits_d,
  1069.     bitalloc_33_bits_e, bitalloc_33_bits_f, bitalloc_33_bits_g, NULL },
  1070.   { bitalloc_65_bits_a, bitalloc_65_bits_b, bitalloc_65_bits_c, bitalloc_65_bits_d,
  1071.     bitalloc_65_bits_e, bitalloc_65_bits_f, bitalloc_65_bits_g, NULL },
  1072.   { bitalloc_129_bits_a, bitalloc_129_bits_b, bitalloc_129_bits_c, bitalloc_129_bits_d,
  1073.     bitalloc_129_bits_e, bitalloc_129_bits_f, bitalloc_129_bits_g, NULL }
  1074. };
  1075.  
  1076. #endif /* AVCODEC_DCAHUFF_H */
  1077.