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