shithub: aacdec

ref: d6839757dffdf592ae300726a64e0f3199a9cd56
dir: /libfaad/sbr_huff.c/

View raw version
/*
** FAAD - Freeware Advanced Audio Decoder
** Copyright (C) 2002 M. Bakker
**  
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
** 
** This program 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 General Public License for more details.
** 
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software 
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
** $Id: sbr_huff.c,v 1.3 2002/04/23 21:08:26 menno Exp $
**/

#include "common.h"

#ifdef SBR

#include "bits.h"
#include "sbr_huff.h"


/* huffman tables all have some offset LAV */
uint16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab *t_huff)
{
}


sbr_huff_tab t_huffman_env_1_5dB[] = {
{ /*   */ 0, 60},
{ /*   */ 1, 59},
{ /*   */ 4, 61},
{ /*   */ 5, 58},
{ /*   */ 12, 62},
{ /*   */ 13, 57},
{ /*   */ 28, 63},
{ /*   */ 29, 56},
{ /*   */ 60, 64},
{ /*   */ 61, 55},
{ /*   */ 124, 65},
{ /*   */ 125, 54},
{ /*   */ 252, 66},
{ /*   */ 253, 53},
{ /*   */ 508, 67},
{ /*   */ 509, 52},
{ /*   */ 1020, 51},
{ /*   */ 1021, 68},
{ /*   */ 2044, 50},
{ /*   */ 4090, 69},
{ /*   */ 4091, 49},
{ /*   */ 8184, 70},
{ /*   */ 8185, 48},
{ /*   */ 8186, 47},
{ /*   */ 16374, 71},
{ /*   */ 16375, 46},
{ /*   */ 16376, 72},
{ /*   */ 16377, 45},
{ /*   */ 32756, 44},
{ /*   */ 32757, 73},
{ /*   */ 65516, 41},
{ /*   */ 65517, 42},
{ /*   */ 65518, 43},
{ /*   */ 65519, 74},
{ /*   */ 65520, 36},
{ /*   */ 65521, 40},
{ /*   */ 65522, 76},
{ /*   */ 131046, 34},
{ /*   */ 131047, 39},
{ /*   */ 131048, 75},
{ /*   */ 131049, 37},
{ /*   */ 262100, 35},
{ /*   */ 262101, 38},
{ /*   */ 262102, 0},
{ /*   */ 262103, 1},
{ /*   */ 262104, 2},
{ /*   */ 262105, 3},
{ /*   */ 262106, 4},
{ /*   */ 262107, 5},
{ /*   */ 524216, 6},
{ /*   */ 524217, 7},
{ /*   */ 524218, 8},
{ /*   */ 524219, 9},
{ /*   */ 524220, 10},
{ /*   */ 524221, 11},
{ /*   */ 524222, 12},
{ /*   */ 524223, 13},
{ /*   */ 524224, 14},
{ /*   */ 524225, 15},
{ /*   */ 524226, 16},
{ /*   */ 524227, 17},
{ /*   */ 524228, 18},
{ /*   */ 524229, 19},
{ /*   */ 524230, 20},
{ /*   */ 524231, 21},
{ /*   */ 524232, 22},
{ /*   */ 524233, 23},
{ /*   */ 524234, 24},
{ /*   */ 524235, 25},
{ /*   */ 524236, 26},
{ /*   */ 524237, 27},
{ /*   */ 524238, 28},
{ /*   */ 524239, 29},
{ /*   */ 524240, 30},
{ /*   */ 524241, 31},
{ /*   */ 524242, 32},
{ /*   */ 524243, 33},
{ /*   */ 524244, 77},
{ /*   */ 524245, 78},
{ /*   */ 524246, 79},
{ /*   */ 524247, 80},
{ /*   */ 524248, 81},
{ /*   */ 524249, 82},
{ /*   */ 524250, 83},
{ /*   */ 524251, 84},
{ /*   */ 524252, 85},
{ /*   */ 524253, 86},
{ /*   */ 524254, 87},
{ /*   */ 524255, 88},
{ /*   */ 524256, 89},
{ /*   */ 524257, 90},
{ /*   */ 524258, 91},
{ /*   */ 524259, 92},
{ /*   */ 524260, 93},
{ /*   */ 524261, 94},
{ /*   */ 524262, 95},
{ /*   */ 524263, 96},
{ /*   */ 524264, 97},
{ /*   */ 524265, 98},
{ /*   */ 524266, 99},
{ /*   */ 524267, 100},
{ /*   */ 524268, 101},
{ /*   */ 524269, 102},
{ /*   */ 524270, 103},
{ /*   */ 524271, 104},
{ /*   */ 524272, 105},
{ /*   */ 524273, 106},
{ /*   */ 524274, 107},
{ /*   */ 524275, 108},
{ /*   */ 524276, 109},
{ /*   */ 524277, 110},
{ /*   */ 524278, 111},
{ /*   */ 524279, 112},
{ /*   */ 524280, 113},
{ /*   */ 524281, 114},
{ /*   */ 524282, 115},
{ /*   */ 524283, 116},
{ /*   */ 524284, 117},
{ /*   */ 524285, 118},
{ /*   */ 524286, 119},
{ /*   */ 524287, 120}
};

sbr_huff_tab f_huffman_env_1_5dB[] = {
{ /*   */ 0, 60},
{ /*   */ 1, 59},
{ /*   */ 4, 61},
{ /*   */ 5, 58},
{ /*   */ 12, 57},
{ /*   */ 13, 62},
{ /*   */ 28, 56},
{ /*   */ 29, 63},
{ /*   */ 60, 55},
{ /*   */ 61, 64},
{ /*   */ 124, 54},
{ /*   */ 250, 65},
{ /*   */ 251, 53},
{ /*   */ 252, 66},
{ /*   */ 506, 52},
{ /*   */ 507, 67},
{ /*   */ 508, 51},
{ /*   */ 1018, 68},
{ /*   */ 1019, 50},
{ /*   */ 2040, 69},
{ /*   */ 2041, 49},
{ /*   */ 2042, 70},
{ /*   */ 2043, 71},
{ /*   */ 4088, 48},
{ /*   */ 4089, 72},
{ /*   */ 4090, 47},
{ /*   */ 4091, 73},
{ /*   */ 8184, 74},
{ /*   */ 8185, 46},
{ /*   */ 8186, 45},
{ /*   */ 8187, 75},
{ /*   */ 16376, 76},
{ /*   */ 16377, 77},
{ /*   */ 16378, 44},
{ /*   */ 32758, 43},
{ /*   */ 32759, 42},
{ /*   */ 65520, 41},
{ /*   */ 65521, 78},
{ /*   */ 65522, 79},
{ /*   */ 65523, 40},
{ /*   */ 65524, 39},
{ /*   */ 131050, 80},
{ /*   */ 131051, 81},
{ /*   */ 131052, 36},
{ /*   */ 131053, 37},
{ /*   */ 131054, 38},
{ /*   */ 131055, 34},
{ /*   */ 262112, 32},
{ /*   */ 262113, 82},
{ /*   */ 262114, 83},
{ /*   */ 262115, 85},
{ /*   */ 262116, 19},
{ /*   */ 262117, 35},
{ /*   */ 262118, 86},
{ /*   */ 262119, 87},
{ /*   */ 262120, 30},
{ /*   */ 262121, 33},
{ /*   */ 262122, 84},
{ /*   */ 262123, 88},
{ /*   */ 262124, 104},
{ /*   */ 524250, 9},
{ /*   */ 524251, 14},
{ /*   */ 524252, 16},
{ /*   */ 524253, 17},
{ /*   */ 524254, 23},
{ /*   */ 524255, 27},
{ /*   */ 524256, 29},
{ /*   */ 524257, 31},
{ /*   */ 524258, 90},
{ /*   */ 524259, 97},
{ /*   */ 524260, 102},
{ /*   */ 524261, 107},
{ /*   */ 524262, 108},
{ /*   */ 524263, 0},
{ /*   */ 524264, 1},
{ /*   */ 1048530, 2},
{ /*   */ 1048531, 3},
{ /*   */ 1048532, 4},
{ /*   */ 1048533, 5},
{ /*   */ 1048534, 6},
{ /*   */ 1048535, 7},
{ /*   */ 1048536, 8},
{ /*   */ 1048537, 10},
{ /*   */ 1048538, 11},
{ /*   */ 1048539, 12},
{ /*   */ 1048540, 13},
{ /*   */ 1048541, 15},
{ /*   */ 1048542, 18},
{ /*   */ 1048543, 20},
{ /*   */ 1048544, 21},
{ /*   */ 1048545, 22},
{ /*   */ 1048546, 24},
{ /*   */ 1048547, 25},
{ /*   */ 1048548, 26},
{ /*   */ 1048549, 28},
{ /*   */ 1048550, 89},
{ /*   */ 1048551, 91},
{ /*   */ 1048552, 92},
{ /*   */ 1048553, 93},
{ /*   */ 1048554, 94},
{ /*   */ 1048555, 95},
{ /*   */ 1048556, 96},
{ /*   */ 1048557, 98},
{ /*   */ 1048558, 99},
{ /*   */ 1048559, 100},
{ /*   */ 1048560, 101},
{ /*   */ 1048561, 103},
{ /*   */ 1048562, 105},
{ /*   */ 1048563, 106},
{ /*   */ 1048564, 109},
{ /*   */ 1048565, 110},
{ /*   */ 1048566, 111},
{ /*   */ 1048567, 112},
{ /*   */ 1048568, 113},
{ /*   */ 1048569, 114},
{ /*   */ 1048570, 115},
{ /*   */ 1048571, 116},
{ /*   */ 1048572, 117},
{ /*   */ 1048573, 118},
{ /*   */ 1048574, 119},
{ /*   */ 1048575, 120}
};

sbr_huff_tab t_huffman_env_bal_1_5dB[] = {
{ /*   */ 0, 24},
{ /*   */ 2, 25},
{ /*   */ 6, 23},
{ /*   */ 14, 26},
{ /*   */ 30, 22},
{ /*   */ 62, 27},
{ /*   */ 126, 21},
{ /*   */ 254, 28},
{ /*   */ 510, 20},
{ /*   */ 2044, 19},
{ /*   */ 2045, 29},
{ /*   */ 4092, 18},
{ /*   */ 4093, 30},
{ /*   */ 32752, 31},
{ /*   */ 65506, 17},
{ /*   */ 65507, 32},
{ /*   */ 65508, 0},
{ /*   */ 65509, 1},
{ /*   */ 65510, 2},
{ /*   */ 65511, 3},
{ /*   */ 65512, 4},
{ /*   */ 65513, 5},
{ /*   */ 65514, 6},
{ /*   */ 65515, 7},
{ /*   */ 65516, 8},
{ /*   */ 65517, 9},
{ /*   */ 65518, 10},
{ /*   */ 65519, 11},
{ /*   */ 65520, 12},
{ /*   */ 65521, 13},
{ /*   */ 65522, 14},
{ /*   */ 65523, 15},
{ /*   */ 65524, 16},
{ /*   */ 65525, 33},
{ /*   */ 65526, 34},
{ /*   */ 65527, 35},
{ /*   */ 65528, 36},
{ /*   */ 65529, 37},
{ /*   */ 65530, 38},
{ /*   */ 131062, 39},
{ /*   */ 131063, 40},
{ /*   */ 131064, 41},
{ /*   */ 131065, 42},
{ /*   */ 131066, 43},
{ /*   */ 131067, 44},
{ /*   */ 131068, 45},
{ /*   */ 131069, 46},
{ /*   */ 131070, 47},
{ /*   */ 131071, 48}
};

sbr_huff_tab f_huffman_env_bal_1_5dB[] = {
{ /*   */ 0, 24},
{ /*   */ 2, 23},
{ /*   */ 6, 25},
{ /*   */ 14, 22},
{ /*   */ 30, 26},
{ /*   */ 62, 27},
{ /*   */ 115, 21},
{ /*   */ 243, 20},
{ /*   */ 510, 28},
{ /*   */ 2044, 19},
{ /*   */ 2045, 29},
{ /*   */ 2046, 18},
{ /*   */ 4094, 30},
{ /*   */ 16380, 17},
{ /*   */ 32762, 31},
{ /*   */ 65526, 32},
{ /*   */ 65527, 15},
{ /*   */ 131056, 16},
{ /*   */ 262114, 0},
{ /*   */ 262115, 1},
{ /*   */ 262116, 2},
{ /*   */ 262117, 3},
{ /*   */ 262118, 4},
{ /*   */ 262119, 5},
{ /*   */ 262120, 6},
{ /*   */ 262121, 7},
{ /*   */ 262122, 8},
{ /*   */ 262123, 9},
{ /*   */ 262124, 10},
{ /*   */ 262125, 11},
{ /*   */ 262126, 12},
{ /*   */ 262127, 13},
{ /*   */ 262128, 14},
{ /*   */ 262129, 33},
{ /*   */ 262130, 34},
{ /*   */ 262131, 35},
{ /*   */ 262132, 36},
{ /*   */ 262133, 37},
{ /*   */ 262134, 38},
{ /*   */ 262135, 39},
{ /*   */ 262136, 40},
{ /*   */ 262137, 41},
{ /*   */ 262138, 42},
{ /*   */ 262139, 43},
{ /*   */ 262140, 44},
{ /*   */ 262141, 45},
{ /*   */ 262142, 46},
{ /*   */ 524286, 47},
{ /*   */ 524287, 48}
};

sbr_huff_tab t_huffman_env_3_0dB[] = {
{ /*   */ 0, 31},
{ /*   */ 2, 30},
{ /*   */ 6, 32},
{ /*   */ 14, 29},
{ /*   */ 30, 33},
{ /*   */ 62, 28},
{ /*   */ 126, 34},
{ /*   */ 254, 27},
{ /*   */ 510, 35},
{ /*   */ 2044, 26},
{ /*   */ 2045, 36},
{ /*   */ 4092, 25},
{ /*   */ 8186, 24},
{ /*   */ 8187, 37},
{ /*   */ 16376, 23},
{ /*   */ 16377, 38},
{ /*   */ 16378, 22},
{ /*   */ 16379, 21},
{ /*   */ 16380, 39},
{ /*   */ 32762, 40},
{ /*   */ 65526, 41},
{ /*   */ 65527, 18},
{ /*   */ 65528, 20},
{ /*   */ 65529, 19},
{ /*   */ 131060, 17},
{ /*   */ 131061, 42},
{ /*   */ 262124, 43},
{ /*   */ 262125, 0},
{ /*   */ 262126, 1},
{ /*   */ 524254, 2},
{ /*   */ 524255, 3},
{ /*   */ 524256, 4},
{ /*   */ 524257, 5},
{ /*   */ 524258, 6},
{ /*   */ 524259, 7},
{ /*   */ 524260, 8},
{ /*   */ 524261, 9},
{ /*   */ 524262, 10},
{ /*   */ 524263, 11},
{ /*   */ 524264, 12},
{ /*   */ 524265, 13},
{ /*   */ 524266, 14},
{ /*   */ 524267, 15},
{ /*   */ 524268, 16},
{ /*   */ 524269, 44},
{ /*   */ 524270, 45},
{ /*   */ 524271, 46},
{ /*   */ 524272, 47},
{ /*   */ 524273, 48},
{ /*   */ 524274, 49},
{ /*   */ 524275, 50},
{ /*   */ 524276, 51},
{ /*   */ 524277, 52},
{ /*   */ 524278, 53},
{ /*   */ 524279, 54},
{ /*   */ 524280, 55},
{ /*   */ 524281, 56},
{ /*   */ 524282, 57},
{ /*   */ 524283, 58},
{ /*   */ 524284, 59},
{ /*   */ 524285, 60},
{ /*   */ 524286, 61},
{ /*   */ 524287, 62}
};

sbr_huff_tab f_huffman_env_3_0dB[] = {
{ /*   */ 0, 31},
{ /*   */ 2, 30},
{ /*   */ 6, 32},
{ /*   */ 14, 29},
{ /*   */ 30, 33},
{ /*   */ 62, 28},
{ /*   */ 252, 34},
{ /*   */ 253, 27},
{ /*   */ 508, 35},
{ /*   */ 509, 26},
{ /*   */ 1020, 36},
{ /*   */ 1021, 25},
{ /*   */ 2044, 37},
{ /*   */ 2045, 24},
{ /*   */ 4092, 38},
{ /*   */ 4093, 23},
{ /*   */ 8188, 39},
{ /*   */ 16378, 40},
{ /*   */ 16379, 22},
{ /*   */ 32760, 21},
{ /*   */ 32761, 41},
{ /*   */ 32762, 42},
{ /*   */ 65526, 20},
{ /*   */ 65527, 19},
{ /*   */ 65528, 43},
{ /*   */ 65529, 44},
{ /*   */ 131060, 18},
{ /*   */ 131061, 16},
{ /*   */ 131062, 45},
{ /*   */ 131063, 46},
{ /*   */ 262128, 17},
{ /*   */ 262129, 49},
{ /*   */ 262130, 13},
{ /*   */ 262131, 7},
{ /*   */ 262132, 12},
{ /*   */ 262133, 47},
{ /*   */ 262134, 48},
{ /*   */ 524270, 9},
{ /*   */ 524271, 10},
{ /*   */ 524272, 15},
{ /*   */ 524273, 51},
{ /*   */ 524274, 52},
{ /*   */ 524275, 53},
{ /*   */ 524276, 56},
{ /*   */ 524277, 8},
{ /*   */ 524278, 11},
{ /*   */ 524279, 55},
{ /*   */ 1048560, 0},
{ /*   */ 1048561, 1},
{ /*   */ 1048562, 2},
{ /*   */ 1048563, 3},
{ /*   */ 1048564, 4},
{ /*   */ 1048565, 5},
{ /*   */ 1048566, 6},
{ /*   */ 1048567, 14},
{ /*   */ 1048568, 50},
{ /*   */ 1048569, 54},
{ /*   */ 1048570, 57},
{ /*   */ 1048571, 58},
{ /*   */ 1048572, 59},
{ /*   */ 1048573, 60},
{ /*   */ 1048574, 61},
{ /*   */ 1048575, 62}
};

sbr_huff_tab t_huffman_env_bal_3_0dB[] = {
{ /*   */ 0, 12},
{ /*   */ 2, 13},
{ /*   */ 6, 11},
{ /*   */ 14, 10},
{ /*   */ 30, 14},
{ /*   */ 62, 15},
{ /*   */ 126, 9},
{ /*   */ 254, 8},
{ /*   */ 510, 16},
{ /*   */ 4088, 7},
{ /*   */ 8178, 0},
{ /*   */ 8179, 1},
{ /*   */ 8180, 2},
{ /*   */ 8181, 3},
{ /*   */ 8182, 4},
{ /*   */ 8183, 5},
{ /*   */ 8184, 6},
{ /*   */ 8185, 17},
{ /*   */ 8186, 18},
{ /*   */ 8187, 19},
{ /*   */ 8188, 20},
{ /*   */ 8189, 21},
{ /*   */ 8190, 22},
{ /*   */ 16382, 23},
{ /*   */ 16383, 24}
};

sbr_huff_tab f_huffman_env_bal_3_0dB[] = {
{ /*   */ 0, 12},
{ /*   */ 2, 11},
{ /*   */ 6, 13},
{ /*   */ 14, 10},
{ /*   */ 30, 14},
{ /*   */ 62, 15},
{ /*   */ 126, 9},
{ /*   */ 254, 8},
{ /*   */ 510, 16},
{ /*   */ 2044, 7},
{ /*   */ 4090, 17},
{ /*   */ 8182, 18},
{ /*   */ 8183, 0},
{ /*   */ 8184, 1},
{ /*   */ 8185, 2},
{ /*   */ 8186, 3},
{ /*   */ 8187, 4},
{ /*   */ 16376, 5},
{ /*   */ 16377, 6},
{ /*   */ 16378, 19},
{ /*   */ 16379, 20},
{ /*   */ 16380, 21},
{ /*   */ 16381, 22},
{ /*   */ 16382, 23},
{ /*   */ 16383, 24}
};

sbr_huff_tab t_huffman_noise_3_0dB[] = {
{ /*   */ 0, 31},
{ /*   */ 2, 32},
{ /*   */ 6, 30},
{ /*   */ 14, 29},
{ /*   */ 30, 33},
{ /*   */ 62, 28},
{ /*   */ 252, 34},
{ /*   */ 253, 27},
{ /*   */ 1016, 35},
{ /*   */ 2034, 26},
{ /*   */ 8140, 36},
{ /*   */ 8141, 42},
{ /*   */ 8142, 0},
{ /*   */ 8143, 1},
{ /*   */ 8144, 2},
{ /*   */ 8145, 3},
{ /*   */ 8146, 4},
{ /*   */ 8147, 5},
{ /*   */ 8148, 6},
{ /*   */ 8149, 7},
{ /*   */ 8150, 8},
{ /*   */ 8151, 9},
{ /*   */ 8152, 10},
{ /*   */ 8153, 11},
{ /*   */ 8154, 12},
{ /*   */ 8155, 13},
{ /*   */ 8156, 14},
{ /*   */ 8157, 15},
{ /*   */ 8158, 16},
{ /*   */ 8159, 17},
{ /*   */ 8160, 18},
{ /*   */ 8161, 19},
{ /*   */ 8162, 20},
{ /*   */ 8163, 21},
{ /*   */ 8164, 22},
{ /*   */ 8165, 23},
{ /*   */ 8166, 24},
{ /*   */ 8167, 25},
{ /*   */ 8168, 37},
{ /*   */ 8169, 38},
{ /*   */ 8170, 39},
{ /*   */ 8171, 40},
{ /*   */ 8172, 41},
{ /*   */ 8173, 43},
{ /*   */ 8174, 44},
{ /*   */ 8175, 45},
{ /*   */ 8176, 46},
{ /*   */ 8177, 47},
{ /*   */ 8178, 48},
{ /*   */ 8179, 49},
{ /*   */ 8180, 50},
{ /*   */ 8181, 51},
{ /*   */ 8182, 52},
{ /*   */ 8183, 53},
{ /*   */ 8184, 54},
{ /*   */ 8185, 55},
{ /*   */ 8186, 56},
{ /*   */ 8187, 57},
{ /*   */ 8188, 58},
{ /*   */ 8189, 59},
{ /*   */ 8190, 60},
{ /*   */ 16382, 61},
{ /*   */ 16383, 62}
};

sbr_huff_tab t_huffman_noise_bal_3_0dB[] = {
{ /*   */ 0, 12},
{ /*   */ 2, 11},
{ /*   */ 6, 13},
{ /*   */ 28, 10},
{ /*   */ 58, 14},
{ /*   */ 236, 0},
{ /*   */ 237, 1},
{ /*   */ 238, 2},
{ /*   */ 239, 3},
{ /*   */ 240, 4},
{ /*   */ 241, 5},
{ /*   */ 242, 6},
{ /*   */ 243, 7},
{ /*   */ 244, 8},
{ /*   */ 245, 9},
{ /*   */ 246, 15},
{ /*   */ 247, 16},
{ /*   */ 248, 17},
{ /*   */ 249, 18},
{ /*   */ 250, 19},
{ /*   */ 251, 20},
{ /*   */ 252, 21},
{ /*   */ 253, 22},
{ /*   */ 254, 23},
{ /*   */ 255, 24}
};

sbr_huff_tab *f_huffman_noise_3_0dB = t_huffman_noise_3_0dB;
sbr_huff_tab *f_huffman_noise_bal_3_0dB = t_huffman_noise_bal_3_0dB;

#endif