/*
* Copyright (C) 2011 in-somnia
*
* This file is part of JAAD.
*
* JAAD is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* JAAD is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* If not, see <http://www.gnu.org/licenses/>.
*/
package net.sourceforge.jaad.aac.sbr2;
//TODO: include LAVs in tables
interface HuffmanTables {
//largest absolute values
int T_HUFFMAN_ENV_1_5_LAV = 60;
int F_HUFFMAN_ENV_1_5_LAV = 60;
int T_HUFFMAN_ENV_BAL_1_5_LAV = 24;
int F_HUFFMAN_ENV_BAL_1_5_LAV = 24;
int T_HUFFMAN_ENV_3_0_LAV = 31;
int F_HUFFMAN_ENV_3_0_LAV = 31;
int T_HUFFMAN_ENV_BAL_3_0_LAV = 12;
int F_HUFFMAN_ENV_BAL_3_0_LAV = 12;
int T_HUFFMAN_NOISE_3_0_LAV = 31;
int F_HUFFMAN_NOISE_3_0_LAV = F_HUFFMAN_ENV_3_0_LAV;
int T_HUFFMAN_NOISE_BAL_3_0_LAV = 12;
int F_HUFFMAN_NOISE_BAL_3_0_LAV = F_HUFFMAN_ENV_BAL_3_0_LAV;
//codebooks: {bit length, codeword, values...}
int[][] T_HUFFMAN_ENV_1_5 = {
{2, 0, 60},
{2, 1, 59},
{3, 4, 61},
{3, 5, 58},
{4, 12, 62},
{4, 13, 57},
{5, 28, 63},
{5, 29, 56},
{6, 60, 64},
{6, 61, 55},
{7, 124, 65},
{7, 125, 54},
{8, 252, 66},
{8, 253, 53},
{9, 508, 67},
{9, 509, 52},
{10, 1020, 51},
{10, 1021, 68},
{11, 2044, 50},
{12, 4090, 69},
{12, 4091, 49},
{13, 8184, 70},
{13, 8185, 48},
{13, 8186, 47},
{14, 16374, 71},
{14, 16375, 46},
{14, 16376, 72},
{14, 16377, 45},
{15, 32756, 44},
{15, 32757, 73},
{16, 65516, 41},
{16, 65517, 42},
{16, 65518, 43},
{16, 65519, 74},
{16, 65520, 36},
{16, 65521, 40},
{16, 65522, 76},
{17, 131046, 34},
{17, 131047, 39},
{17, 131048, 75},
{17, 131049, 37},
{18, 262100, 35},
{18, 262101, 38},
{18, 262102, 0},
{18, 262103, 1},
{18, 262104, 2},
{18, 262105, 3},
{18, 262106, 4},
{18, 262107, 5},
{19, 524216, 6},
{19, 524217, 7},
{19, 524218, 8},
{19, 524219, 9},
{19, 524220, 10},
{19, 524221, 11},
{19, 524222, 12},
{19, 524223, 13},
{19, 524224, 14},
{19, 524225, 15},
{19, 524226, 16},
{19, 524227, 17},
{19, 524228, 18},
{19, 524229, 19},
{19, 524230, 20},
{19, 524231, 21},
{19, 524232, 22},
{19, 524233, 23},
{19, 524234, 24},
{19, 524235, 25},
{19, 524236, 26},
{19, 524237, 27},
{19, 524238, 28},
{19, 524239, 29},
{19, 524240, 30},
{19, 524241, 31},
{19, 524242, 32},
{19, 524243, 33},
{19, 524244, 77},
{19, 524245, 78},
{19, 524246, 79},
{19, 524247, 80},
{19, 524248, 81},
{19, 524249, 82},
{19, 524250, 83},
{19, 524251, 84},
{19, 524252, 85},
{19, 524253, 86},
{19, 524254, 87},
{19, 524255, 88},
{19, 524256, 89},
{19, 524257, 90},
{19, 524258, 91},
{19, 524259, 92},
{19, 524260, 93},
{19, 524261, 94},
{19, 524262, 95},
{19, 524263, 96},
{19, 524264, 97},
{19, 524265, 98},
{19, 524266, 99},
{19, 524267, 100},
{19, 524268, 101},
{19, 524269, 102},
{19, 524270, 103},
{19, 524271, 104},
{19, 524272, 105},
{19, 524273, 106},
{19, 524274, 107},
{19, 524275, 108},
{19, 524276, 109},
{19, 524277, 110},
{19, 524278, 111},
{19, 524279, 112},
{19, 524280, 113},
{19, 524281, 114},
{19, 524282, 115},
{19, 524283, 116},
{19, 524284, 117},
{19, 524285, 118},
{19, 524286, 119},
{19, 524287, 120}
};
int[][] F_HUFFMAN_ENV_1_5 = {
{2, 0, 60},
{2, 1, 59},
{3, 4, 61},
{3, 5, 58},
{4, 12, 57},
{4, 13, 62},
{5, 28, 56},
{5, 29, 63},
{6, 60, 55},
{6, 61, 64},
{7, 124, 54},
{8, 250, 65},
{8, 251, 53},
{8, 252, 66},
{9, 506, 52},
{9, 507, 67},
{9, 508, 51},
{10, 1018, 68},
{10, 1019, 50},
{11, 2040, 69},
{11, 2041, 49},
{11, 2042, 70},
{11, 2043, 71},
{12, 4088, 48},
{12, 4089, 72},
{12, 4090, 47},
{12, 4091, 73},
{13, 8184, 74},
{13, 8185, 46},
{13, 8186, 45},
{13, 8187, 75},
{14, 16376, 76},
{14, 16377, 77},
{14, 16378, 44},
{15, 32758, 43},
{15, 32759, 42},
{16, 65520, 41},
{16, 65521, 78},
{16, 65522, 79},
{16, 65523, 40},
{16, 65524, 39},
{17, 131050, 80},
{17, 131051, 81},
{17, 131052, 36},
{17, 131053, 37},
{17, 131054, 38},
{17, 131055, 34},
{18, 262112, 32},
{18, 262113, 82},
{18, 262114, 83},
{18, 262115, 85},
{18, 262116, 19},
{18, 262117, 35},
{18, 262118, 86},
{18, 262119, 87},
{18, 262120, 30},
{18, 262121, 33},
{18, 262122, 84},
{18, 262123, 88},
{18, 262124, 104},
{19, 524250, 9},
{19, 524251, 14},
{19, 524252, 16},
{19, 524253, 17},
{19, 524254, 23},
{19, 524255, 27},
{19, 524256, 29},
{19, 524257, 31},
{19, 524258, 90},
{19, 524259, 97},
{19, 524260, 102},
{19, 524261, 107},
{19, 524262, 108},
{19, 524263, 0},
{19, 524264, 1},
{20, 1048530, 2},
{20, 1048531, 3},
{20, 1048532, 4},
{20, 1048533, 5},
{20, 1048534, 6},
{20, 1048535, 7},
{20, 1048536, 8},
{20, 1048537, 10},
{20, 1048538, 11},
{20, 1048539, 12},
{20, 1048540, 13},
{20, 1048541, 15},
{20, 1048542, 18},
{20, 1048543, 20},
{20, 1048544, 21},
{20, 1048545, 22},
{20, 1048546, 24},
{20, 1048547, 25},
{20, 1048548, 26},
{20, 1048549, 28},
{20, 1048550, 89},
{20, 1048551, 91},
{20, 1048552, 92},
{20, 1048553, 93},
{20, 1048554, 94},
{20, 1048555, 95},
{20, 1048556, 96},
{20, 1048557, 98},
{20, 1048558, 99},
{20, 1048559, 100},
{20, 1048560, 101},
{20, 1048561, 103},
{20, 1048562, 105},
{20, 1048563, 106},
{20, 1048564, 109},
{20, 1048565, 110},
{20, 1048566, 111},
{20, 1048567, 112},
{20, 1048568, 113},
{20, 1048569, 114},
{20, 1048570, 115},
{20, 1048571, 116},
{20, 1048572, 117},
{20, 1048573, 118},
{20, 1048574, 119},
{20, 1048575, 120}
};
int[][] T_HUFFMAN_ENV_BAL_1_5 = {
{1, 0, 24},
{2, 2, 25},
{3, 6, 23},
{4, 14, 26},
{5, 30, 22},
{6, 62, 27},
{7, 126, 21},
{8, 254, 28},
{9, 510, 20},
{11, 2044, 19},
{11, 2045, 29},
{12, 4092, 18},
{12, 4093, 30},
{15, 32752, 31},
{16, 65506, 17},
{16, 65507, 32},
{16, 65508, 0},
{16, 65509, 1},
{16, 65510, 2},
{16, 65511, 3},
{16, 65512, 4},
{16, 65513, 5},
{16, 65514, 6},
{16, 65515, 7},
{16, 65516, 8},
{16, 65517, 9},
{16, 65518, 10},
{16, 65519, 11},
{16, 65520, 12},
{16, 65521, 13},
{16, 65522, 14},
{16, 65523, 15},
{16, 65524, 16},
{16, 65525, 33},
{16, 65526, 34},
{16, 65527, 35},
{16, 65528, 36},
{16, 65529, 37},
{16, 65530, 38},
{17, 131062, 39},
{17, 131063, 40},
{17, 131064, 41},
{17, 131065, 42},
{17, 131066, 43},
{17, 131067, 44},
{17, 131068, 45},
{17, 131069, 46},
{17, 131070, 47},
{17, 131071, 48}
};
int[][] F_HUFFMAN_ENV_BAL_1_5 = {
{1, 0, 24},
{2, 2, 23},
{3, 6, 25},
{4, 14, 22},
{5, 30, 26},
{6, 62, 27},
{7, 126, 21},
{8, 254, 20},
{9, 510, 28},
{11, 2044, 19},
{11, 2045, 29},
{11, 2046, 18},
{12, 4094, 30},
{14, 16380, 17},
{15, 32762, 31},
{16, 65526, 32},
{16, 65527, 15},
{17, 131056, 16},
{18, 262114, 0},
{18, 262115, 1},
{18, 262116, 2},
{18, 262117, 3},
{18, 262118, 4},
{18, 262119, 5},
{18, 262120, 6},
{18, 262121, 7},
{18, 262122, 8},
{18, 262123, 9},
{18, 262124, 10},
{18, 262125, 11},
{18, 262126, 12},
{18, 262127, 13},
{18, 262128, 14},
{18, 262129, 33},
{18, 262130, 34},
{18, 262131, 35},
{18, 262132, 36},
{18, 262133, 37},
{18, 262134, 38},
{18, 262135, 39},
{18, 262136, 40},
{18, 262137, 41},
{18, 262138, 42},
{18, 262139, 43},
{18, 262140, 44},
{18, 262141, 45},
{18, 262142, 46},
{19, 524286, 47},
{19, 524287, 48}
};
int[][] T_HUFFMAN_ENV_3_0 = {
{1, 0, 31},
{2, 2, 30},
{3, 6, 32},
{4, 14, 29},
{5, 30, 33},
{6, 62, 28},
{7, 126, 34},
{8, 254, 27},
{9, 510, 35},
{11, 2044, 26},
{11, 2045, 36},
{12, 4092, 25},
{13, 8186, 24},
{13, 8187, 37},
{14, 16376, 23},
{14, 16377, 38},
{14, 16378, 22},
{14, 16379, 21},
{14, 16380, 39},
{15, 32762, 40},
{16, 65526, 41},
{16, 65527, 18},
{16, 65528, 20},
{16, 65529, 19},
{17, 131060, 17},
{17, 131061, 42},
{18, 262124, 43},
{18, 262125, 0},
{18, 262126, 1},
{19, 524254, 2},
{19, 524255, 3},
{19, 524256, 4},
{19, 524257, 5},
{19, 524258, 6},
{19, 524259, 7},
{19, 524260, 8},
{19, 524261, 9},
{19, 524262, 10},
{19, 524263, 11},
{19, 524264, 12},
{19, 524265, 13},
{19, 524266, 14},
{19, 524267, 15},
{19, 524268, 16},
{19, 524269, 44},
{19, 524270, 45},
{19, 524271, 46},
{19, 524272, 47},
{19, 524273, 48},
{19, 524274, 49},
{19, 524275, 50},
{19, 524276, 51},
{19, 524277, 52},
{19, 524278, 53},
{19, 524279, 54},
{19, 524280, 55},
{19, 524281, 56},
{19, 524282, 57},
{19, 524283, 58},
{19, 524284, 59},
{19, 524285, 60},
{19, 524286, 61},
{19, 524287, 62}
};
int[][] F_HUFFMAN_ENV_3_0 = {
{1, 0, 31},
{2, 2, 30},
{3, 6, 32},
{4, 14, 29},
{5, 30, 33},
{6, 62, 28},
{8, 252, 34},
{8, 253, 27},
{9, 508, 35},
{9, 509, 26},
{10, 1020, 36},
{10, 1021, 25},
{11, 2044, 37},
{11, 2045, 24},
{12, 4092, 38},
{12, 4093, 23},
{13, 8188, 39},
{14, 16378, 40},
{14, 16379, 22},
{15, 32760, 21},
{15, 32761, 41},
{15, 32762, 42},
{16, 65526, 20},
{16, 65527, 19},
{16, 65528, 43},
{16, 65529, 44},
{17, 131060, 18},
{17, 131061, 16},
{17, 131062, 45},
{17, 131063, 46},
{18, 262128, 17},
{18, 262129, 49},
{18, 262130, 13},
{18, 262131, 7},
{18, 262132, 12},
{18, 262133, 47},
{18, 262134, 48},
{19, 524270, 9},
{19, 524271, 10},
{19, 524272, 15},
{19, 524273, 51},
{19, 524274, 52},
{19, 524275, 53},
{19, 524276, 56},
{19, 524277, 8},
{19, 524278, 11},
{19, 524279, 55},
{20, 1048560, 0},
{20, 1048561, 1},
{20, 1048562, 2},
{20, 1048563, 3},
{20, 1048564, 4},
{20, 1048565, 5},
{20, 1048566, 6},
{20, 1048567, 14},
{20, 1048568, 50},
{20, 1048569, 54},
{20, 1048570, 57},
{20, 1048571, 58},
{20, 1048572, 59},
{20, 1048573, 60},
{20, 1048574, 61},
{20, 1048575, 62}
};
int[][] T_HUFFMAN_ENV_BAL_3_0 = {
{1, 0, 12},
{2, 2, 13},
{3, 6, 11},
{4, 14, 10},
{5, 30, 14},
{6, 62, 15},
{7, 126, 9},
{8, 254, 8},
{9, 510, 16},
{12, 4088, 7},
{13, 8178, 0},
{13, 8179, 1},
{13, 8180, 2},
{13, 8181, 3},
{13, 8182, 4},
{13, 8183, 5},
{13, 8184, 6},
{13, 8185, 17},
{13, 8186, 18},
{13, 8187, 19},
{13, 8188, 20},
{13, 8189, 21},
{13, 8190, 22},
{14, 16382, 23},
{14, 16383, 24}
};
int[][] F_HUFFMAN_ENV_BAL_3_0 = {
{1, 0, 12},
{2, 2, 11},
{3, 6, 13},
{4, 14, 10},
{5, 30, 14},
{6, 62, 15},
{7, 126, 9},
{8, 254, 8},
{9, 510, 16},
{11, 2044, 7},
{12, 4090, 17},
{13, 8182, 18},
{13, 8183, 0},
{13, 8184, 1},
{13, 8185, 2},
{13, 8186, 3},
{13, 8187, 4},
{14, 16376, 5},
{14, 16377, 6},
{14, 16378, 19},
{14, 16379, 20},
{14, 16380, 21},
{14, 16381, 22},
{14, 16382, 23},
{14, 16383, 24}
};
int[][] T_HUFFMAN_NOISE_3_0 = {
{1, 0, 31},
{2, 2, 32},
{3, 6, 30},
{4, 14, 29},
{5, 30, 33},
{6, 62, 28},
{8, 252, 34},
{8, 253, 27},
{10, 1016, 35},
{11, 2034, 26},
{13, 8140, 36},
{13, 8141, 42},
{13, 8142, 0},
{13, 8143, 1},
{13, 8144, 2},
{13, 8145, 3},
{13, 8146, 4},
{13, 8147, 5},
{13, 8148, 6},
{13, 8149, 7},
{13, 8150, 8},
{13, 8151, 9},
{13, 8152, 10},
{13, 8153, 11},
{13, 8154, 12},
{13, 8155, 13},
{13, 8156, 14},
{13, 8157, 15},
{13, 8158, 16},
{13, 8159, 17},
{13, 8160, 18},
{13, 8161, 19},
{13, 8162, 20},
{13, 8163, 21},
{13, 8164, 22},
{13, 8165, 23},
{13, 8166, 24},
{13, 8167, 25},
{13, 8168, 37},
{13, 8169, 38},
{13, 8170, 39},
{13, 8171, 40},
{13, 8172, 41},
{13, 8173, 43},
{13, 8174, 44},
{13, 8175, 45},
{13, 8176, 46},
{13, 8177, 47},
{13, 8178, 48},
{13, 8179, 49},
{13, 8180, 50},
{13, 8181, 51},
{13, 8182, 52},
{13, 8183, 53},
{13, 8184, 54},
{13, 8185, 55},
{13, 8186, 56},
{13, 8187, 57},
{13, 8188, 58},
{13, 8189, 59},
{13, 8190, 60},
{14, 16382, 61},
{14, 16383, 62}
};
int[][] T_HUFFMAN_NOISE_BAL_3_0 = {
{1, 0, 12},
{2, 2, 11},
{3, 6, 13},
{5, 28, 10},
{6, 58, 14},
{8, 236, 0},
{8, 237, 1},
{8, 238, 2},
{8, 239, 3},
{8, 240, 4},
{8, 241, 5},
{8, 242, 6},
{8, 243, 7},
{8, 244, 8},
{8, 245, 9},
{8, 246, 15},
{8, 247, 16},
{8, 248, 17},
{8, 249, 18},
{8, 250, 19},
{8, 251, 20},
{8, 252, 21},
{8, 253, 22},
{8, 254, 23},
{8, 255, 24}
};
int[][] F_HUFFMAN_NOISE_3_0 = F_HUFFMAN_ENV_3_0;
int[][] F_HUFFMAN_NOISE_BAL_3_0 = F_HUFFMAN_ENV_BAL_3_0;
}