00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00027 #ifndef AVCODEC_MPEGAUDIODECTAB_H
00028 #define AVCODEC_MPEGAUDIODECTAB_H
00029
00030 #include <stddef.h>
00031 #include <stdint.h>
00032
00033 #include "mpegaudio.h"
00034
00035
00036
00037
00038
00039 typedef struct HuffTable {
00040 int xsize;
00041 const uint8_t *bits;
00042 const uint16_t *codes;
00043 } HuffTable;
00044
00045
00046 static const uint8_t slen_table[2][16] = {
00047 { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
00048 { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 },
00049 };
00050
00051
00052 static const uint8_t lsf_nsf_table[6][3][4] = {
00053 { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } },
00054 { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } },
00055 { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } },
00056 { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } },
00057 { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } },
00058 { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } },
00059 };
00060
00061
00062
00063 static const uint16_t mpa_huffcodes_1[4] = {
00064 0x0001, 0x0001, 0x0001, 0x0000,
00065 };
00066
00067 static const uint8_t mpa_huffbits_1[4] = {
00068 1, 3, 2, 3,
00069 };
00070
00071 static const uint16_t mpa_huffcodes_2[9] = {
00072 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0001, 0x0003, 0x0002,
00073 0x0000,
00074 };
00075
00076 static const uint8_t mpa_huffbits_2[9] = {
00077 1, 3, 6, 3, 3, 5, 5, 5,
00078 6,
00079 };
00080
00081 static const uint16_t mpa_huffcodes_3[9] = {
00082 0x0003, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0003, 0x0002,
00083 0x0000,
00084 };
00085
00086 static const uint8_t mpa_huffbits_3[9] = {
00087 2, 2, 6, 3, 2, 5, 5, 5,
00088 6,
00089 };
00090
00091 static const uint16_t mpa_huffcodes_5[16] = {
00092 0x0001, 0x0002, 0x0006, 0x0005, 0x0003, 0x0001, 0x0004, 0x0004,
00093 0x0007, 0x0005, 0x0007, 0x0001, 0x0006, 0x0001, 0x0001, 0x0000,
00094 };
00095
00096 static const uint8_t mpa_huffbits_5[16] = {
00097 1, 3, 6, 7, 3, 3, 6, 7,
00098 6, 6, 7, 8, 7, 6, 7, 8,
00099 };
00100
00101 static const uint16_t mpa_huffcodes_6[16] = {
00102 0x0007, 0x0003, 0x0005, 0x0001, 0x0006, 0x0002, 0x0003, 0x0002,
00103 0x0005, 0x0004, 0x0004, 0x0001, 0x0003, 0x0003, 0x0002, 0x0000,
00104 };
00105
00106 static const uint8_t mpa_huffbits_6[16] = {
00107 3, 3, 5, 7, 3, 2, 4, 5,
00108 4, 4, 5, 6, 6, 5, 6, 7,
00109 };
00110
00111 static const uint16_t mpa_huffcodes_7[36] = {
00112 0x0001, 0x0002, 0x000a, 0x0013, 0x0010, 0x000a, 0x0003, 0x0003,
00113 0x0007, 0x000a, 0x0005, 0x0003, 0x000b, 0x0004, 0x000d, 0x0011,
00114 0x0008, 0x0004, 0x000c, 0x000b, 0x0012, 0x000f, 0x000b, 0x0002,
00115 0x0007, 0x0006, 0x0009, 0x000e, 0x0003, 0x0001, 0x0006, 0x0004,
00116 0x0005, 0x0003, 0x0002, 0x0000,
00117 };
00118
00119 static const uint8_t mpa_huffbits_7[36] = {
00120 1, 3, 6, 8, 8, 9, 3, 4,
00121 6, 7, 7, 8, 6, 5, 7, 8,
00122 8, 9, 7, 7, 8, 9, 9, 9,
00123 7, 7, 8, 9, 9, 10, 8, 8,
00124 9, 10, 10, 10,
00125 };
00126
00127 static const uint16_t mpa_huffcodes_8[36] = {
00128 0x0003, 0x0004, 0x0006, 0x0012, 0x000c, 0x0005, 0x0005, 0x0001,
00129 0x0002, 0x0010, 0x0009, 0x0003, 0x0007, 0x0003, 0x0005, 0x000e,
00130 0x0007, 0x0003, 0x0013, 0x0011, 0x000f, 0x000d, 0x000a, 0x0004,
00131 0x000d, 0x0005, 0x0008, 0x000b, 0x0005, 0x0001, 0x000c, 0x0004,
00132 0x0004, 0x0001, 0x0001, 0x0000,
00133 };
00134
00135 static const uint8_t mpa_huffbits_8[36] = {
00136 2, 3, 6, 8, 8, 9, 3, 2,
00137 4, 8, 8, 8, 6, 4, 6, 8,
00138 8, 9, 8, 8, 8, 9, 9, 10,
00139 8, 7, 8, 9, 10, 10, 9, 8,
00140 9, 9, 11, 11,
00141 };
00142
00143 static const uint16_t mpa_huffcodes_9[36] = {
00144 0x0007, 0x0005, 0x0009, 0x000e, 0x000f, 0x0007, 0x0006, 0x0004,
00145 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0006, 0x0008, 0x0008,
00146 0x0008, 0x0005, 0x000f, 0x0006, 0x0009, 0x000a, 0x0005, 0x0001,
00147 0x000b, 0x0007, 0x0009, 0x0006, 0x0004, 0x0001, 0x000e, 0x0004,
00148 0x0006, 0x0002, 0x0006, 0x0000,
00149 };
00150
00151 static const uint8_t mpa_huffbits_9[36] = {
00152 3, 3, 5, 6, 8, 9, 3, 3,
00153 4, 5, 6, 8, 4, 4, 5, 6,
00154 7, 8, 6, 5, 6, 7, 7, 8,
00155 7, 6, 7, 7, 8, 9, 8, 7,
00156 8, 8, 9, 9,
00157 };
00158
00159 static const uint16_t mpa_huffcodes_10[64] = {
00160 0x0001, 0x0002, 0x000a, 0x0017, 0x0023, 0x001e, 0x000c, 0x0011,
00161 0x0003, 0x0003, 0x0008, 0x000c, 0x0012, 0x0015, 0x000c, 0x0007,
00162 0x000b, 0x0009, 0x000f, 0x0015, 0x0020, 0x0028, 0x0013, 0x0006,
00163 0x000e, 0x000d, 0x0016, 0x0022, 0x002e, 0x0017, 0x0012, 0x0007,
00164 0x0014, 0x0013, 0x0021, 0x002f, 0x001b, 0x0016, 0x0009, 0x0003,
00165 0x001f, 0x0016, 0x0029, 0x001a, 0x0015, 0x0014, 0x0005, 0x0003,
00166 0x000e, 0x000d, 0x000a, 0x000b, 0x0010, 0x0006, 0x0005, 0x0001,
00167 0x0009, 0x0008, 0x0007, 0x0008, 0x0004, 0x0004, 0x0002, 0x0000,
00168 };
00169
00170 static const uint8_t mpa_huffbits_10[64] = {
00171 1, 3, 6, 8, 9, 9, 9, 10,
00172 3, 4, 6, 7, 8, 9, 8, 8,
00173 6, 6, 7, 8, 9, 10, 9, 9,
00174 7, 7, 8, 9, 10, 10, 9, 10,
00175 8, 8, 9, 10, 10, 10, 10, 10,
00176 9, 9, 10, 10, 11, 11, 10, 11,
00177 8, 8, 9, 10, 10, 10, 11, 11,
00178 9, 8, 9, 10, 10, 11, 11, 11,
00179 };
00180
00181 static const uint16_t mpa_huffcodes_11[64] = {
00182 0x0003, 0x0004, 0x000a, 0x0018, 0x0022, 0x0021, 0x0015, 0x000f,
00183 0x0005, 0x0003, 0x0004, 0x000a, 0x0020, 0x0011, 0x000b, 0x000a,
00184 0x000b, 0x0007, 0x000d, 0x0012, 0x001e, 0x001f, 0x0014, 0x0005,
00185 0x0019, 0x000b, 0x0013, 0x003b, 0x001b, 0x0012, 0x000c, 0x0005,
00186 0x0023, 0x0021, 0x001f, 0x003a, 0x001e, 0x0010, 0x0007, 0x0005,
00187 0x001c, 0x001a, 0x0020, 0x0013, 0x0011, 0x000f, 0x0008, 0x000e,
00188 0x000e, 0x000c, 0x0009, 0x000d, 0x000e, 0x0009, 0x0004, 0x0001,
00189 0x000b, 0x0004, 0x0006, 0x0006, 0x0006, 0x0003, 0x0002, 0x0000,
00190 };
00191
00192 static const uint8_t mpa_huffbits_11[64] = {
00193 2, 3, 5, 7, 8, 9, 8, 9,
00194 3, 3, 4, 6, 8, 8, 7, 8,
00195 5, 5, 6, 7, 8, 9, 8, 8,
00196 7, 6, 7, 9, 8, 10, 8, 9,
00197 8, 8, 8, 9, 9, 10, 9, 10,
00198 8, 8, 9, 10, 10, 11, 10, 11,
00199 8, 7, 7, 8, 9, 10, 10, 10,
00200 8, 7, 8, 9, 10, 10, 10, 10,
00201 };
00202
00203 static const uint16_t mpa_huffcodes_12[64] = {
00204 0x0009, 0x0006, 0x0010, 0x0021, 0x0029, 0x0027, 0x0026, 0x001a,
00205 0x0007, 0x0005, 0x0006, 0x0009, 0x0017, 0x0010, 0x001a, 0x000b,
00206 0x0011, 0x0007, 0x000b, 0x000e, 0x0015, 0x001e, 0x000a, 0x0007,
00207 0x0011, 0x000a, 0x000f, 0x000c, 0x0012, 0x001c, 0x000e, 0x0005,
00208 0x0020, 0x000d, 0x0016, 0x0013, 0x0012, 0x0010, 0x0009, 0x0005,
00209 0x0028, 0x0011, 0x001f, 0x001d, 0x0011, 0x000d, 0x0004, 0x0002,
00210 0x001b, 0x000c, 0x000b, 0x000f, 0x000a, 0x0007, 0x0004, 0x0001,
00211 0x001b, 0x000c, 0x0008, 0x000c, 0x0006, 0x0003, 0x0001, 0x0000,
00212 };
00213
00214 static const uint8_t mpa_huffbits_12[64] = {
00215 4, 3, 5, 7, 8, 9, 9, 9,
00216 3, 3, 4, 5, 7, 7, 8, 8,
00217 5, 4, 5, 6, 7, 8, 7, 8,
00218 6, 5, 6, 6, 7, 8, 8, 8,
00219 7, 6, 7, 7, 8, 8, 8, 9,
00220 8, 7, 8, 8, 8, 9, 8, 9,
00221 8, 7, 7, 8, 8, 9, 9, 10,
00222 9, 8, 8, 9, 9, 9, 9, 10,
00223 };
00224
00225 static const uint16_t mpa_huffcodes_13[256] = {
00226 0x0001, 0x0005, 0x000e, 0x0015, 0x0022, 0x0033, 0x002e, 0x0047,
00227 0x002a, 0x0034, 0x0044, 0x0034, 0x0043, 0x002c, 0x002b, 0x0013,
00228 0x0003, 0x0004, 0x000c, 0x0013, 0x001f, 0x001a, 0x002c, 0x0021,
00229 0x001f, 0x0018, 0x0020, 0x0018, 0x001f, 0x0023, 0x0016, 0x000e,
00230 0x000f, 0x000d, 0x0017, 0x0024, 0x003b, 0x0031, 0x004d, 0x0041,
00231 0x001d, 0x0028, 0x001e, 0x0028, 0x001b, 0x0021, 0x002a, 0x0010,
00232 0x0016, 0x0014, 0x0025, 0x003d, 0x0038, 0x004f, 0x0049, 0x0040,
00233 0x002b, 0x004c, 0x0038, 0x0025, 0x001a, 0x001f, 0x0019, 0x000e,
00234 0x0023, 0x0010, 0x003c, 0x0039, 0x0061, 0x004b, 0x0072, 0x005b,
00235 0x0036, 0x0049, 0x0037, 0x0029, 0x0030, 0x0035, 0x0017, 0x0018,
00236 0x003a, 0x001b, 0x0032, 0x0060, 0x004c, 0x0046, 0x005d, 0x0054,
00237 0x004d, 0x003a, 0x004f, 0x001d, 0x004a, 0x0031, 0x0029, 0x0011,
00238 0x002f, 0x002d, 0x004e, 0x004a, 0x0073, 0x005e, 0x005a, 0x004f,
00239 0x0045, 0x0053, 0x0047, 0x0032, 0x003b, 0x0026, 0x0024, 0x000f,
00240 0x0048, 0x0022, 0x0038, 0x005f, 0x005c, 0x0055, 0x005b, 0x005a,
00241 0x0056, 0x0049, 0x004d, 0x0041, 0x0033, 0x002c, 0x002b, 0x002a,
00242 0x002b, 0x0014, 0x001e, 0x002c, 0x0037, 0x004e, 0x0048, 0x0057,
00243 0x004e, 0x003d, 0x002e, 0x0036, 0x0025, 0x001e, 0x0014, 0x0010,
00244 0x0035, 0x0019, 0x0029, 0x0025, 0x002c, 0x003b, 0x0036, 0x0051,
00245 0x0042, 0x004c, 0x0039, 0x0036, 0x0025, 0x0012, 0x0027, 0x000b,
00246 0x0023, 0x0021, 0x001f, 0x0039, 0x002a, 0x0052, 0x0048, 0x0050,
00247 0x002f, 0x003a, 0x0037, 0x0015, 0x0016, 0x001a, 0x0026, 0x0016,
00248 0x0035, 0x0019, 0x0017, 0x0026, 0x0046, 0x003c, 0x0033, 0x0024,
00249 0x0037, 0x001a, 0x0022, 0x0017, 0x001b, 0x000e, 0x0009, 0x0007,
00250 0x0022, 0x0020, 0x001c, 0x0027, 0x0031, 0x004b, 0x001e, 0x0034,
00251 0x0030, 0x0028, 0x0034, 0x001c, 0x0012, 0x0011, 0x0009, 0x0005,
00252 0x002d, 0x0015, 0x0022, 0x0040, 0x0038, 0x0032, 0x0031, 0x002d,
00253 0x001f, 0x0013, 0x000c, 0x000f, 0x000a, 0x0007, 0x0006, 0x0003,
00254 0x0030, 0x0017, 0x0014, 0x0027, 0x0024, 0x0023, 0x0035, 0x0015,
00255 0x0010, 0x0017, 0x000d, 0x000a, 0x0006, 0x0001, 0x0004, 0x0002,
00256 0x0010, 0x000f, 0x0011, 0x001b, 0x0019, 0x0014, 0x001d, 0x000b,
00257 0x0011, 0x000c, 0x0010, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001,
00258 };
00259
00260 static const uint8_t mpa_huffbits_13[256] = {
00261 1, 4, 6, 7, 8, 9, 9, 10,
00262 9, 10, 11, 11, 12, 12, 13, 13,
00263 3, 4, 6, 7, 8, 8, 9, 9,
00264 9, 9, 10, 10, 11, 12, 12, 12,
00265 6, 6, 7, 8, 9, 9, 10, 10,
00266 9, 10, 10, 11, 11, 12, 13, 13,
00267 7, 7, 8, 9, 9, 10, 10, 10,
00268 10, 11, 11, 11, 11, 12, 13, 13,
00269 8, 7, 9, 9, 10, 10, 11, 11,
00270 10, 11, 11, 12, 12, 13, 13, 14,
00271 9, 8, 9, 10, 10, 10, 11, 11,
00272 11, 11, 12, 11, 13, 13, 14, 14,
00273 9, 9, 10, 10, 11, 11, 11, 11,
00274 11, 12, 12, 12, 13, 13, 14, 14,
00275 10, 9, 10, 11, 11, 11, 12, 12,
00276 12, 12, 13, 13, 13, 14, 16, 16,
00277 9, 8, 9, 10, 10, 11, 11, 12,
00278 12, 12, 12, 13, 13, 14, 15, 15,
00279 10, 9, 10, 10, 11, 11, 11, 13,
00280 12, 13, 13, 14, 14, 14, 16, 15,
00281 10, 10, 10, 11, 11, 12, 12, 13,
00282 12, 13, 14, 13, 14, 15, 16, 17,
00283 11, 10, 10, 11, 12, 12, 12, 12,
00284 13, 13, 13, 14, 15, 15, 15, 16,
00285 11, 11, 11, 12, 12, 13, 12, 13,
00286 14, 14, 15, 15, 15, 16, 16, 16,
00287 12, 11, 12, 13, 13, 13, 14, 14,
00288 14, 14, 14, 15, 16, 15, 16, 16,
00289 13, 12, 12, 13, 13, 13, 15, 14,
00290 14, 17, 15, 15, 15, 17, 16, 16,
00291 12, 12, 13, 14, 14, 14, 15, 14,
00292 15, 15, 16, 16, 19, 18, 19, 16,
00293 };
00294
00295 static const uint16_t mpa_huffcodes_15[256] = {
00296 0x0007, 0x000c, 0x0012, 0x0035, 0x002f, 0x004c, 0x007c, 0x006c,
00297 0x0059, 0x007b, 0x006c, 0x0077, 0x006b, 0x0051, 0x007a, 0x003f,
00298 0x000d, 0x0005, 0x0010, 0x001b, 0x002e, 0x0024, 0x003d, 0x0033,
00299 0x002a, 0x0046, 0x0034, 0x0053, 0x0041, 0x0029, 0x003b, 0x0024,
00300 0x0013, 0x0011, 0x000f, 0x0018, 0x0029, 0x0022, 0x003b, 0x0030,
00301 0x0028, 0x0040, 0x0032, 0x004e, 0x003e, 0x0050, 0x0038, 0x0021,
00302 0x001d, 0x001c, 0x0019, 0x002b, 0x0027, 0x003f, 0x0037, 0x005d,
00303 0x004c, 0x003b, 0x005d, 0x0048, 0x0036, 0x004b, 0x0032, 0x001d,
00304 0x0034, 0x0016, 0x002a, 0x0028, 0x0043, 0x0039, 0x005f, 0x004f,
00305 0x0048, 0x0039, 0x0059, 0x0045, 0x0031, 0x0042, 0x002e, 0x001b,
00306 0x004d, 0x0025, 0x0023, 0x0042, 0x003a, 0x0034, 0x005b, 0x004a,
00307 0x003e, 0x0030, 0x004f, 0x003f, 0x005a, 0x003e, 0x0028, 0x0026,
00308 0x007d, 0x0020, 0x003c, 0x0038, 0x0032, 0x005c, 0x004e, 0x0041,
00309 0x0037, 0x0057, 0x0047, 0x0033, 0x0049, 0x0033, 0x0046, 0x001e,
00310 0x006d, 0x0035, 0x0031, 0x005e, 0x0058, 0x004b, 0x0042, 0x007a,
00311 0x005b, 0x0049, 0x0038, 0x002a, 0x0040, 0x002c, 0x0015, 0x0019,
00312 0x005a, 0x002b, 0x0029, 0x004d, 0x0049, 0x003f, 0x0038, 0x005c,
00313 0x004d, 0x0042, 0x002f, 0x0043, 0x0030, 0x0035, 0x0024, 0x0014,
00314 0x0047, 0x0022, 0x0043, 0x003c, 0x003a, 0x0031, 0x0058, 0x004c,
00315 0x0043, 0x006a, 0x0047, 0x0036, 0x0026, 0x0027, 0x0017, 0x000f,
00316 0x006d, 0x0035, 0x0033, 0x002f, 0x005a, 0x0052, 0x003a, 0x0039,
00317 0x0030, 0x0048, 0x0039, 0x0029, 0x0017, 0x001b, 0x003e, 0x0009,
00318 0x0056, 0x002a, 0x0028, 0x0025, 0x0046, 0x0040, 0x0034, 0x002b,
00319 0x0046, 0x0037, 0x002a, 0x0019, 0x001d, 0x0012, 0x000b, 0x000b,
00320 0x0076, 0x0044, 0x001e, 0x0037, 0x0032, 0x002e, 0x004a, 0x0041,
00321 0x0031, 0x0027, 0x0018, 0x0010, 0x0016, 0x000d, 0x000e, 0x0007,
00322 0x005b, 0x002c, 0x0027, 0x0026, 0x0022, 0x003f, 0x0034, 0x002d,
00323 0x001f, 0x0034, 0x001c, 0x0013, 0x000e, 0x0008, 0x0009, 0x0003,
00324 0x007b, 0x003c, 0x003a, 0x0035, 0x002f, 0x002b, 0x0020, 0x0016,
00325 0x0025, 0x0018, 0x0011, 0x000c, 0x000f, 0x000a, 0x0002, 0x0001,
00326 0x0047, 0x0025, 0x0022, 0x001e, 0x001c, 0x0014, 0x0011, 0x001a,
00327 0x0015, 0x0010, 0x000a, 0x0006, 0x0008, 0x0006, 0x0002, 0x0000,
00328 };
00329
00330 static const uint8_t mpa_huffbits_15[256] = {
00331 3, 4, 5, 7, 7, 8, 9, 9,
00332 9, 10, 10, 11, 11, 11, 12, 13,
00333 4, 3, 5, 6, 7, 7, 8, 8,
00334 8, 9, 9, 10, 10, 10, 11, 11,
00335 5, 5, 5, 6, 7, 7, 8, 8,
00336 8, 9, 9, 10, 10, 11, 11, 11,
00337 6, 6, 6, 7, 7, 8, 8, 9,
00338 9, 9, 10, 10, 10, 11, 11, 11,
00339 7, 6, 7, 7, 8, 8, 9, 9,
00340 9, 9, 10, 10, 10, 11, 11, 11,
00341 8, 7, 7, 8, 8, 8, 9, 9,
00342 9, 9, 10, 10, 11, 11, 11, 12,
00343 9, 7, 8, 8, 8, 9, 9, 9,
00344 9, 10, 10, 10, 11, 11, 12, 12,
00345 9, 8, 8, 9, 9, 9, 9, 10,
00346 10, 10, 10, 10, 11, 11, 11, 12,
00347 9, 8, 8, 9, 9, 9, 9, 10,
00348 10, 10, 10, 11, 11, 12, 12, 12,
00349 9, 8, 9, 9, 9, 9, 10, 10,
00350 10, 11, 11, 11, 11, 12, 12, 12,
00351 10, 9, 9, 9, 10, 10, 10, 10,
00352 10, 11, 11, 11, 11, 12, 13, 12,
00353 10, 9, 9, 9, 10, 10, 10, 10,
00354 11, 11, 11, 11, 12, 12, 12, 13,
00355 11, 10, 9, 10, 10, 10, 11, 11,
00356 11, 11, 11, 11, 12, 12, 13, 13,
00357 11, 10, 10, 10, 10, 11, 11, 11,
00358 11, 12, 12, 12, 12, 12, 13, 13,
00359 12, 11, 11, 11, 11, 11, 11, 11,
00360 12, 12, 12, 12, 13, 13, 12, 13,
00361 12, 11, 11, 11, 11, 11, 11, 12,
00362 12, 12, 12, 12, 13, 13, 13, 13,
00363 };
00364
00365 static const uint16_t mpa_huffcodes_16[256] = {
00366 0x0001, 0x0005, 0x000e, 0x002c, 0x004a, 0x003f, 0x006e, 0x005d,
00367 0x00ac, 0x0095, 0x008a, 0x00f2, 0x00e1, 0x00c3, 0x0178, 0x0011,
00368 0x0003, 0x0004, 0x000c, 0x0014, 0x0023, 0x003e, 0x0035, 0x002f,
00369 0x0053, 0x004b, 0x0044, 0x0077, 0x00c9, 0x006b, 0x00cf, 0x0009,
00370 0x000f, 0x000d, 0x0017, 0x0026, 0x0043, 0x003a, 0x0067, 0x005a,
00371 0x00a1, 0x0048, 0x007f, 0x0075, 0x006e, 0x00d1, 0x00ce, 0x0010,
00372 0x002d, 0x0015, 0x0027, 0x0045, 0x0040, 0x0072, 0x0063, 0x0057,
00373 0x009e, 0x008c, 0x00fc, 0x00d4, 0x00c7, 0x0183, 0x016d, 0x001a,
00374 0x004b, 0x0024, 0x0044, 0x0041, 0x0073, 0x0065, 0x00b3, 0x00a4,
00375 0x009b, 0x0108, 0x00f6, 0x00e2, 0x018b, 0x017e, 0x016a, 0x0009,
00376 0x0042, 0x001e, 0x003b, 0x0038, 0x0066, 0x00b9, 0x00ad, 0x0109,
00377 0x008e, 0x00fd, 0x00e8, 0x0190, 0x0184, 0x017a, 0x01bd, 0x0010,
00378 0x006f, 0x0036, 0x0034, 0x0064, 0x00b8, 0x00b2, 0x00a0, 0x0085,
00379 0x0101, 0x00f4, 0x00e4, 0x00d9, 0x0181, 0x016e, 0x02cb, 0x000a,
00380 0x0062, 0x0030, 0x005b, 0x0058, 0x00a5, 0x009d, 0x0094, 0x0105,
00381 0x00f8, 0x0197, 0x018d, 0x0174, 0x017c, 0x0379, 0x0374, 0x0008,
00382 0x0055, 0x0054, 0x0051, 0x009f, 0x009c, 0x008f, 0x0104, 0x00f9,
00383 0x01ab, 0x0191, 0x0188, 0x017f, 0x02d7, 0x02c9, 0x02c4, 0x0007,
00384 0x009a, 0x004c, 0x0049, 0x008d, 0x0083, 0x0100, 0x00f5, 0x01aa,
00385 0x0196, 0x018a, 0x0180, 0x02df, 0x0167, 0x02c6, 0x0160, 0x000b,
00386 0x008b, 0x0081, 0x0043, 0x007d, 0x00f7, 0x00e9, 0x00e5, 0x00db,
00387 0x0189, 0x02e7, 0x02e1, 0x02d0, 0x0375, 0x0372, 0x01b7, 0x0004,
00388 0x00f3, 0x0078, 0x0076, 0x0073, 0x00e3, 0x00df, 0x018c, 0x02ea,
00389 0x02e6, 0x02e0, 0x02d1, 0x02c8, 0x02c2, 0x00df, 0x01b4, 0x0006,
00390 0x00ca, 0x00e0, 0x00de, 0x00da, 0x00d8, 0x0185, 0x0182, 0x017d,
00391 0x016c, 0x0378, 0x01bb, 0x02c3, 0x01b8, 0x01b5, 0x06c0, 0x0004,
00392 0x02eb, 0x00d3, 0x00d2, 0x00d0, 0x0172, 0x017b, 0x02de, 0x02d3,
00393 0x02ca, 0x06c7, 0x0373, 0x036d, 0x036c, 0x0d83, 0x0361, 0x0002,
00394 0x0179, 0x0171, 0x0066, 0x00bb, 0x02d6, 0x02d2, 0x0166, 0x02c7,
00395 0x02c5, 0x0362, 0x06c6, 0x0367, 0x0d82, 0x0366, 0x01b2, 0x0000,
00396 0x000c, 0x000a, 0x0007, 0x000b, 0x000a, 0x0011, 0x000b, 0x0009,
00397 0x000d, 0x000c, 0x000a, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
00398 };
00399
00400 static const uint8_t mpa_huffbits_16[256] = {
00401 1, 4, 6, 8, 9, 9, 10, 10,
00402 11, 11, 11, 12, 12, 12, 13, 9,
00403 3, 4, 6, 7, 8, 9, 9, 9,
00404 10, 10, 10, 11, 12, 11, 12, 8,
00405 6, 6, 7, 8, 9, 9, 10, 10,
00406 11, 10, 11, 11, 11, 12, 12, 9,
00407 8, 7, 8, 9, 9, 10, 10, 10,
00408 11, 11, 12, 12, 12, 13, 13, 10,
00409 9, 8, 9, 9, 10, 10, 11, 11,
00410 11, 12, 12, 12, 13, 13, 13, 9,
00411 9, 8, 9, 9, 10, 11, 11, 12,
00412 11, 12, 12, 13, 13, 13, 14, 10,
00413 10, 9, 9, 10, 11, 11, 11, 11,
00414 12, 12, 12, 12, 13, 13, 14, 10,
00415 10, 9, 10, 10, 11, 11, 11, 12,
00416 12, 13, 13, 13, 13, 15, 15, 10,
00417 10, 10, 10, 11, 11, 11, 12, 12,
00418 13, 13, 13, 13, 14, 14, 14, 10,
00419 11, 10, 10, 11, 11, 12, 12, 13,
00420 13, 13, 13, 14, 13, 14, 13, 11,
00421 11, 11, 10, 11, 12, 12, 12, 12,
00422 13, 14, 14, 14, 15, 15, 14, 10,
00423 12, 11, 11, 11, 12, 12, 13, 14,
00424 14, 14, 14, 14, 14, 13, 14, 11,
00425 12, 12, 12, 12, 12, 13, 13, 13,
00426 13, 15, 14, 14, 14, 14, 16, 11,
00427 14, 12, 12, 12, 13, 13, 14, 14,
00428 14, 16, 15, 15, 15, 17, 15, 11,
00429 13, 13, 11, 12, 14, 14, 13, 14,
00430 14, 15, 16, 15, 17, 15, 14, 11,
00431 9, 8, 8, 9, 9, 10, 10, 10,
00432 11, 11, 11, 11, 11, 11, 11, 8,
00433 };
00434
00435 static const uint16_t mpa_huffcodes_24[256] = {
00436 0x000f, 0x000d, 0x002e, 0x0050, 0x0092, 0x0106, 0x00f8, 0x01b2,
00437 0x01aa, 0x029d, 0x028d, 0x0289, 0x026d, 0x0205, 0x0408, 0x0058,
00438 0x000e, 0x000c, 0x0015, 0x0026, 0x0047, 0x0082, 0x007a, 0x00d8,
00439 0x00d1, 0x00c6, 0x0147, 0x0159, 0x013f, 0x0129, 0x0117, 0x002a,
00440 0x002f, 0x0016, 0x0029, 0x004a, 0x0044, 0x0080, 0x0078, 0x00dd,
00441 0x00cf, 0x00c2, 0x00b6, 0x0154, 0x013b, 0x0127, 0x021d, 0x0012,
00442 0x0051, 0x0027, 0x004b, 0x0046, 0x0086, 0x007d, 0x0074, 0x00dc,
00443 0x00cc, 0x00be, 0x00b2, 0x0145, 0x0137, 0x0125, 0x010f, 0x0010,
00444 0x0093, 0x0048, 0x0045, 0x0087, 0x007f, 0x0076, 0x0070, 0x00d2,
00445 0x00c8, 0x00bc, 0x0160, 0x0143, 0x0132, 0x011d, 0x021c, 0x000e,
00446 0x0107, 0x0042, 0x0081, 0x007e, 0x0077, 0x0072, 0x00d6, 0x00ca,
00447 0x00c0, 0x00b4, 0x0155, 0x013d, 0x012d, 0x0119, 0x0106, 0x000c,
00448 0x00f9, 0x007b, 0x0079, 0x0075, 0x0071, 0x00d7, 0x00ce, 0x00c3,
00449 0x00b9, 0x015b, 0x014a, 0x0134, 0x0123, 0x0110, 0x0208, 0x000a,
00450 0x01b3, 0x0073, 0x006f, 0x006d, 0x00d3, 0x00cb, 0x00c4, 0x00bb,
00451 0x0161, 0x014c, 0x0139, 0x012a, 0x011b, 0x0213, 0x017d, 0x0011,
00452 0x01ab, 0x00d4, 0x00d0, 0x00cd, 0x00c9, 0x00c1, 0x00ba, 0x00b1,
00453 0x00a9, 0x0140, 0x012f, 0x011e, 0x010c, 0x0202, 0x0179, 0x0010,
00454 0x014f, 0x00c7, 0x00c5, 0x00bf, 0x00bd, 0x00b5, 0x00ae, 0x014d,
00455 0x0141, 0x0131, 0x0121, 0x0113, 0x0209, 0x017b, 0x0173, 0x000b,
00456 0x029c, 0x00b8, 0x00b7, 0x00b3, 0x00af, 0x0158, 0x014b, 0x013a,
00457 0x0130, 0x0122, 0x0115, 0x0212, 0x017f, 0x0175, 0x016e, 0x000a,
00458 0x028c, 0x015a, 0x00ab, 0x00a8, 0x00a4, 0x013e, 0x0135, 0x012b,
00459 0x011f, 0x0114, 0x0107, 0x0201, 0x0177, 0x0170, 0x016a, 0x0006,
00460 0x0288, 0x0142, 0x013c, 0x0138, 0x0133, 0x012e, 0x0124, 0x011c,
00461 0x010d, 0x0105, 0x0200, 0x0178, 0x0172, 0x016c, 0x0167, 0x0004,
00462 0x026c, 0x012c, 0x0128, 0x0126, 0x0120, 0x011a, 0x0111, 0x010a,
00463 0x0203, 0x017c, 0x0176, 0x0171, 0x016d, 0x0169, 0x0165, 0x0002,
00464 0x0409, 0x0118, 0x0116, 0x0112, 0x010b, 0x0108, 0x0103, 0x017e,
00465 0x017a, 0x0174, 0x016f, 0x016b, 0x0168, 0x0166, 0x0164, 0x0000,
00466 0x002b, 0x0014, 0x0013, 0x0011, 0x000f, 0x000d, 0x000b, 0x0009,
00467 0x0007, 0x0006, 0x0004, 0x0007, 0x0005, 0x0003, 0x0001, 0x0003,
00468 };
00469
00470 static const uint8_t mpa_huffbits_24[256] = {
00471 4, 4, 6, 7, 8, 9, 9, 10,
00472 10, 11, 11, 11, 11, 11, 12, 9,
00473 4, 4, 5, 6, 7, 8, 8, 9,
00474 9, 9, 10, 10, 10, 10, 10, 8,
00475 6, 5, 6, 7, 7, 8, 8, 9,
00476 9, 9, 9, 10, 10, 10, 11, 7,
00477 7, 6, 7, 7, 8, 8, 8, 9,
00478 9, 9, 9, 10, 10, 10, 10, 7,
00479 8, 7, 7, 8, 8, 8, 8, 9,
00480 9, 9, 10, 10, 10, 10, 11, 7,
00481 9, 7, 8, 8, 8, 8, 9, 9,
00482 9, 9, 10, 10, 10, 10, 10, 7,
00483 9, 8, 8, 8, 8, 9, 9, 9,
00484 9, 10, 10, 10, 10, 10, 11, 7,
00485 10, 8, 8, 8, 9, 9, 9, 9,
00486 10, 10, 10, 10, 10, 11, 11, 8,
00487 10, 9, 9, 9, 9, 9, 9, 9,
00488 9, 10, 10, 10, 10, 11, 11, 8,
00489 10, 9, 9, 9, 9, 9, 9, 10,
00490 10, 10, 10, 10, 11, 11, 11, 8,
00491 11, 9, 9, 9, 9, 10, 10, 10,
00492 10, 10, 10, 11, 11, 11, 11, 8,
00493 11, 10, 9, 9, 9, 10, 10, 10,
00494 10, 10, 10, 11, 11, 11, 11, 8,
00495 11, 10, 10, 10, 10, 10, 10, 10,
00496 10, 10, 11, 11, 11, 11, 11, 8,
00497 11, 10, 10, 10, 10, 10, 10, 10,
00498 11, 11, 11, 11, 11, 11, 11, 8,
00499 12, 10, 10, 10, 10, 10, 10, 11,
00500 11, 11, 11, 11, 11, 11, 11, 8,
00501 8, 7, 7, 7, 7, 7, 7, 7,
00502 7, 7, 7, 8, 8, 8, 8, 4,
00503 };
00504
00505 static const HuffTable mpa_huff_tables[16] = {
00506 { 1, NULL, NULL },
00507 { 2, mpa_huffbits_1, mpa_huffcodes_1 },
00508 { 3, mpa_huffbits_2, mpa_huffcodes_2 },
00509 { 3, mpa_huffbits_3, mpa_huffcodes_3 },
00510 { 4, mpa_huffbits_5, mpa_huffcodes_5 },
00511 { 4, mpa_huffbits_6, mpa_huffcodes_6 },
00512 { 6, mpa_huffbits_7, mpa_huffcodes_7 },
00513 { 6, mpa_huffbits_8, mpa_huffcodes_8 },
00514 { 6, mpa_huffbits_9, mpa_huffcodes_9 },
00515 { 8, mpa_huffbits_10, mpa_huffcodes_10 },
00516 { 8, mpa_huffbits_11, mpa_huffcodes_11 },
00517 { 8, mpa_huffbits_12, mpa_huffcodes_12 },
00518 { 16, mpa_huffbits_13, mpa_huffcodes_13 },
00519 { 16, mpa_huffbits_15, mpa_huffcodes_15 },
00520 { 16, mpa_huffbits_16, mpa_huffcodes_16 },
00521 { 16, mpa_huffbits_24, mpa_huffcodes_24 },
00522 };
00523
00524 static const uint8_t mpa_huff_data[32][2] = {
00525 { 0, 0 },
00526 { 1, 0 },
00527 { 2, 0 },
00528 { 3, 0 },
00529 { 0, 0 },
00530 { 4, 0 },
00531 { 5, 0 },
00532 { 6, 0 },
00533 { 7, 0 },
00534 { 8, 0 },
00535 { 9, 0 },
00536 { 10, 0 },
00537 { 11, 0 },
00538 { 12, 0 },
00539 { 0, 0 },
00540 { 13, 0 },
00541 { 14, 1 },
00542 { 14, 2 },
00543 { 14, 3 },
00544 { 14, 4 },
00545 { 14, 6 },
00546 { 14, 8 },
00547 { 14, 10 },
00548 { 14, 13 },
00549 { 15, 4 },
00550 { 15, 5 },
00551 { 15, 6 },
00552 { 15, 7 },
00553 { 15, 8 },
00554 { 15, 9 },
00555 { 15, 11 },
00556 { 15, 13 },
00557 };
00558
00559
00560
00561 static const uint8_t mpa_quad_codes[2][16] = {
00562 { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1, },
00563 { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, },
00564 };
00565
00566 static const uint8_t mpa_quad_bits[2][16] = {
00567 { 1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6, },
00568 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, },
00569 };
00570
00571
00572 static const uint8_t band_size_long[9][22] = {
00573 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
00574 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158, },
00575 { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
00576 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192, },
00577 { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
00578 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26, },
00579 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00580 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, },
00581 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00582 18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36, },
00583 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00584 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, },
00585 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00586 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, },
00587 { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
00588 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54, },
00589 { 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
00590 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2, },
00591 };
00592
00593 static const uint8_t band_size_short[9][13] = {
00594 { 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56, },
00595 { 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66, },
00596 { 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12, },
00597 { 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18, },
00598 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12, },
00599 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, },
00600 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, },
00601 { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18, },
00602 { 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26, },
00603 };
00604
00605 static const uint8_t mpa_pretab[2][22] = {
00606 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
00607 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 },
00608 };
00609
00610
00611 static const float ci_table[8] = {
00612 -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037,
00613 };
00614
00615 #endif