00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00028 #ifndef AVCODEC_ATRAC3DATA_H
00029 #define AVCODEC_ATRAC3DATA_H
00030
00031 #include <stdint.h>
00032
00033
00034
00035 static const uint8_t huffcode1[9] = {
00036 0x0, 0x4, 0x5, 0xC, 0xD, 0x1C, 0x1D, 0x1E, 0x1F
00037 };
00038
00039 static const uint8_t huffbits1[9] = { 1, 3, 3, 4, 4, 5, 5, 5, 5 };
00040
00041 static const uint8_t huffcode2[5] = { 0x0, 0x4, 0x5, 0x6, 0x7 };
00042
00043 static const uint8_t huffbits2[5] = { 1, 3, 3, 3, 3 };
00044
00045 static const uint8_t huffcode3[7] = { 0x0, 0x4, 0x5, 0xC, 0xD, 0xE, 0xF };
00046
00047 static const uint8_t huffbits3[7] = { 1, 3, 3, 4, 4, 4, 4 };
00048
00049 static const uint8_t huffcode4[9] = {
00050 0x0, 0x4, 0x5, 0xC, 0xD, 0x1C, 0x1D, 0x1E, 0x1F
00051 };
00052
00053 static const uint8_t huffbits4[9] = { 1, 3, 3, 4, 4, 5, 5, 5, 5 };
00054
00055 static const uint8_t huffcode5[15] = {
00056 0x00, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 0x1C,
00057 0x1D, 0x3C, 0x3D, 0x3E, 0x3F, 0x0C, 0x0D
00058 };
00059
00060 static const uint8_t huffbits5[15] = {
00061 2, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 4, 4
00062 };
00063
00064 static const uint8_t huffcode6[31] = {
00065 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x14,
00066 0x15, 0x16, 0x17, 0x18, 0x19, 0x34, 0x35, 0x36,
00067 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x78, 0x79, 0x7A,
00068 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x08, 0x09
00069 };
00070
00071 static const uint8_t huffbits6[31] = {
00072 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6,
00073 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4
00074 };
00075
00076 static const uint8_t huffcode7[63] = {
00077 0x00, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
00078 0x0F, 0x10, 0x11, 0x24, 0x25, 0x26, 0x27, 0x28,
00079 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
00080 0x31, 0x32, 0x33, 0x68, 0x69, 0x6A, 0x6B, 0x6C,
00081 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74,
00082 0x75, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2,
00083 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA,
00084 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x02, 0x03
00085 };
00086
00087 static const uint8_t huffbits7[63] = {
00088 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,
00089 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
00090 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
00091 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4
00092 };
00093
00094 static const uint8_t huff_tab_sizes[7] = {
00095 9, 5, 7, 9, 15, 31, 63,
00096 };
00097
00098 static const uint8_t* const huff_codes[7] = {
00099 huffcode1, huffcode2, huffcode3, huffcode4, huffcode5, huffcode6, huffcode7
00100 };
00101
00102 static const uint8_t* const huff_bits[7] = {
00103 huffbits1, huffbits2, huffbits3, huffbits4, huffbits5, huffbits6, huffbits7,
00104 };
00105
00106 static const uint16_t atrac3_vlc_offs[9] = {
00107 0, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096
00108 };
00109
00110
00111
00112 static const uint8_t clc_length_tab[8] = { 0, 4, 3, 3, 4, 4, 5, 6 };
00113
00114 static const int8_t mantissa_clc_tab[4] = { 0, 1, -2, -1 };
00115
00116 static const int8_t mantissa_vlc_tab[18] = {
00117 0, 0, 0, 1, 0, -1, 1, 0, -1, 0, 1, 1, 1, -1, -1, 1, -1, -1
00118 };
00119
00120
00121
00122
00123 static const float inv_max_quant[8] = {
00124 0.0, 1.0 / 1.5, 1.0 / 2.5, 1.0 / 3.5,
00125 1.0 / 4.5, 1.0 / 7.5, 1.0 / 15.5, 1.0 / 31.5
00126 };
00127
00128 static const uint16_t subband_tab[33] = {
00129 0, 8, 16, 24, 32, 40, 48, 56,
00130 64, 80, 96, 112, 128, 144, 160, 176,
00131 192, 224, 256, 288, 320, 352, 384, 416,
00132 448, 480, 512, 576, 640, 704, 768, 896,
00133 1024
00134 };
00135
00136
00137 static const float matrix_coeffs[8] = {
00138 0.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0
00139 };
00140
00141 #endif