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_WMAPRODATA_H
00029 #define AVCODEC_WMAPRODATA_H
00030
00031 #include <stddef.h>
00032 #include <stdint.h>
00033
00037 static const uint16_t critical_freq[] = {
00038 100, 200, 300, 400, 510, 630, 770,
00039 920, 1080, 1270, 1480, 1720, 2000, 2320,
00040 2700, 3150, 3700, 4400, 5300, 6400, 7700,
00041 9500, 12000, 15500, 20675, 28575, 41375, 63875,
00042 };
00043
00044
00049 #define HUFF_SCALE_SIZE 121
00050 #define HUFF_SCALE_MAXBITS 19
00051 static const uint16_t scale_huffcodes[HUFF_SCALE_SIZE] = {
00052 0xE639, 0xE6C2, 0xE6C1, 0xE6C0, 0xE63F, 0xE63E, 0xE63D, 0xE63C,
00053 0xE63B, 0xE63A, 0xE638, 0xE637, 0xE636, 0xE635, 0xE634, 0xE632,
00054 0xE633, 0xE620, 0x737B, 0xE610, 0xE611, 0xE612, 0xE613, 0xE614,
00055 0xE615, 0xE616, 0xE617, 0xE618, 0xE619, 0xE61A, 0xE61B, 0xE61C,
00056 0xE61D, 0xE61E, 0xE61F, 0xE6C3, 0xE621, 0xE622, 0xE623, 0xE624,
00057 0xE625, 0xE626, 0xE627, 0xE628, 0xE629, 0xE62A, 0xE62B, 0xE62C,
00058 0xE62D, 0xE62E, 0xE62F, 0xE630, 0xE631, 0x1CDF, 0x0E60, 0x0399,
00059 0x00E7, 0x001D, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0006,
00060 0x0002, 0x0007, 0x0006, 0x000F, 0x0038, 0x0072, 0x039A, 0xE6C4,
00061 0xE6C5, 0xE6C6, 0xE6C7, 0xE6C8, 0xE6C9, 0xE6CA, 0xE6CB, 0xE6CC,
00062 0xE6CD, 0xE6CE, 0xE6CF, 0xE6D0, 0xE6D1, 0xE6D2, 0xE6D3, 0xE6D4,
00063 0xE6D5, 0xE6D6, 0xE6D7, 0xE6D8, 0xE6D9, 0xE6DA, 0xE6DB, 0xE6DC,
00064 0xE6DD, 0xE6DE, 0xE6DF, 0xE6E0, 0xE6E1, 0xE6E2, 0xE6E3, 0xE6E4,
00065 0xE6E5, 0xE6E6, 0xE6E7, 0xE6E8, 0xE6E9, 0xE6EA, 0xE6EB, 0xE6EC,
00066 0xE6ED, 0xE6EE, 0xE6EF, 0xE6F0, 0xE6F1, 0xE6F2, 0xE6F3, 0xE6F4,
00067 0xE6F5,
00068 };
00069
00070 static const uint8_t scale_huffbits[HUFF_SCALE_SIZE] = {
00071 19, 19, 19, 19, 19, 19, 19, 19,
00072 19, 19, 19, 19, 19, 19, 19, 19,
00073 19, 19, 18, 19, 19, 19, 19, 19,
00074 19, 19, 19, 19, 19, 19, 19, 19,
00075 19, 19, 19, 19, 19, 19, 19, 19,
00076 19, 19, 19, 19, 19, 19, 19, 19,
00077 19, 19, 19, 19, 19, 16, 15, 13,
00078 11, 8, 5, 2, 1, 3, 5, 6,
00079 6, 7, 7, 7, 9, 10, 13, 19,
00080 19, 19, 19, 19, 19, 19, 19, 19,
00081 19, 19, 19, 19, 19, 19, 19, 19,
00082 19, 19, 19, 19, 19, 19, 19, 19,
00083 19, 19, 19, 19, 19, 19, 19, 19,
00084 19, 19, 19, 19, 19, 19, 19, 19,
00085 19, 19, 19, 19, 19, 19, 19, 19,
00086 19,
00087 };
00095 #define HUFF_SCALE_RL_SIZE 120
00096 #define HUFF_SCALE_RL_MAXBITS 21
00097 static const uint32_t scale_rl_huffcodes[HUFF_SCALE_RL_SIZE] = {
00098 0x00010C, 0x000001, 0x10FE2A, 0x000003, 0x000003, 0x000001, 0x000013,
00099 0x000020, 0x000029, 0x000014, 0x000016, 0x000045, 0x000049, 0x00002F,
00100 0x000042, 0x00008E, 0x00008F, 0x000129, 0x000009, 0x00000D, 0x0004AC,
00101 0x00002C, 0x000561, 0x0002E6, 0x00087C, 0x0002E2, 0x00095C, 0x000018,
00102 0x000001, 0x000016, 0x000044, 0x00002A, 0x000007, 0x000159, 0x000143,
00103 0x000128, 0x00015A, 0x00012D, 0x00002B, 0x0000A0, 0x000142, 0x00012A,
00104 0x0002EF, 0x0004AF, 0x00087D, 0x004AE9, 0x0043F9, 0x000067, 0x000199,
00105 0x002B05, 0x001583, 0x0021FE, 0x10FE2C, 0x000004, 0x00002E, 0x00010D,
00106 0x00000A, 0x000244, 0x000017, 0x000245, 0x000011, 0x00010E, 0x00012C,
00107 0x00002A, 0x00002F, 0x000121, 0x000046, 0x00087E, 0x0000BA, 0x000032,
00108 0x0087F0, 0x0056DC, 0x0002EC, 0x0043FA, 0x002B6F, 0x004AE8, 0x0002B7,
00109 0x10FE2B, 0x000001, 0x000051, 0x000010, 0x0002EE, 0x000B9C, 0x002576,
00110 0x000198, 0x0056DD, 0x0000CD, 0x000AC0, 0x000170, 0x004AEF, 0x00002D,
00111 0x0004AD, 0x0021FF, 0x0005CF, 0x002B04, 0x10FE29, 0x10FE28, 0x0002ED,
00112 0x002E74, 0x021FC4, 0x004AEE, 0x010FE3, 0x087F17, 0x000000, 0x000097,
00113 0x0002E3, 0x000ADA, 0x002575, 0x00173B, 0x0043FB, 0x002E75, 0x10FE2D,
00114 0x0015B6, 0x00056C, 0x000057, 0x000123, 0x000120, 0x00021E, 0x000172,
00115 0x0002B1,
00116 };
00117
00118 static const uint8_t scale_rl_huffbits[HUFF_SCALE_RL_SIZE] = {
00119 9, 2, 21, 2, 4, 5, 5,
00120 6, 6, 7, 7, 7, 7, 6,
00121 7, 8, 8, 9, 10, 10, 11,
00122 12, 11, 12, 12, 12, 12, 11,
00123 4, 5, 7, 8, 9, 9, 9,
00124 9, 9, 9, 8, 8, 9, 9,
00125 12, 11, 12, 15, 15, 13, 15,
00126 14, 13, 14, 21, 5, 6, 9,
00127 10, 10, 11, 10, 11, 9, 9,
00128 6, 8, 9, 7, 12, 10, 12,
00129 16, 15, 12, 15, 14, 15, 10,
00130 21, 6, 7, 11, 12, 14, 14,
00131 15, 15, 14, 12, 11, 15, 12,
00132 11, 14, 13, 14, 21, 21, 12,
00133 16, 18, 15, 17, 20, 7, 8,
00134 12, 12, 14, 15, 15, 16, 21,
00135 13, 11, 7, 9, 9, 10, 11,
00136 10,
00137 };
00138
00139
00140 static const uint8_t scale_rl_run[HUFF_SCALE_RL_SIZE] = {
00141 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00142 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
00143 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3,
00144 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
00145 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00146 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
00147 0, 1, 0, 1, 0, 1,
00148 };
00149
00150 static const uint8_t scale_rl_level[HUFF_SCALE_RL_SIZE] = {
00151 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00152 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
00153 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
00154 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
00155 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
00156 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
00157 7, 7, 8, 8, 9, 9,
00158 };
00166 #define HUFF_COEF0_SIZE 272
00167 #define HUFF_COEF0_MAXBITS 21
00168 static const uint32_t coef0_huffcodes[HUFF_COEF0_SIZE] = {
00169 0x00004A, 0x00002B, 0x000000, 0x000003, 0x000006, 0x000009, 0x00000F,
00170 0x000010, 0x000016, 0x000011, 0x000016, 0x000028, 0x00002F, 0x000026,
00171 0x000029, 0x000045, 0x000055, 0x00005D, 0x000042, 0x00004E, 0x000051,
00172 0x00005E, 0x00008D, 0x0000A8, 0x0000AD, 0x000080, 0x000096, 0x00009F,
00173 0x0000AA, 0x0000BE, 0x00011C, 0x000153, 0x000158, 0x000170, 0x000104,
00174 0x00010D, 0x000105, 0x000103, 0x00012F, 0x000177, 0x000175, 0x000157,
00175 0x000174, 0x000225, 0x00023B, 0x00020D, 0x00021F, 0x000281, 0x00027B,
00176 0x000282, 0x0002AC, 0x0002FD, 0x00044F, 0x000478, 0x00044D, 0x0002EC,
00177 0x00044E, 0x000564, 0x000409, 0x00040B, 0x000501, 0x000545, 0x0004F3,
00178 0x000541, 0x00043B, 0x0004F1, 0x0004F4, 0x0008FD, 0x000A94, 0x000811,
00179 0x000B88, 0x000B91, 0x000B93, 0x0008EA, 0x000899, 0x000B8A, 0x000972,
00180 0x0009E5, 0x000A8F, 0x000A84, 0x000A8E, 0x000A00, 0x000830, 0x0008E8,
00181 0x000B95, 0x000871, 0x00083A, 0x000814, 0x000873, 0x000BFE, 0x001728,
00182 0x001595, 0x001712, 0x00102A, 0x001021, 0x001729, 0x00152E, 0x0013C3,
00183 0x001721, 0x001597, 0x00151B, 0x0010F2, 0x001403, 0x001703, 0x001503,
00184 0x001708, 0x0013C1, 0x00170E, 0x00170C, 0x0010E1, 0x0011EA, 0x001020,
00185 0x001500, 0x0017FA, 0x001704, 0x001705, 0x0017F0, 0x0017FB, 0x0021E6,
00186 0x002B2D, 0x0020C6, 0x002B29, 0x002E4A, 0x0023AC, 0x001519, 0x0023F3,
00187 0x002B2C, 0x0021C0, 0x0017FE, 0x0023D7, 0x0017F9, 0x0012E7, 0x0013C0,
00188 0x002261, 0x0023D3, 0x002057, 0x002056, 0x0021D2, 0x0020C7, 0x0023D2,
00189 0x0020EC, 0x0044C0, 0x002FE2, 0x00475B, 0x002A03, 0x002FE3, 0x0021E2,
00190 0x0021D0, 0x002A31, 0x002E13, 0x002E05, 0x0047E5, 0x00000E, 0x000024,
00191 0x000088, 0x0000B9, 0x00010C, 0x000224, 0x0002B3, 0x000283, 0x0002ED,
00192 0x00047B, 0x00041E, 0x00043D, 0x0004F5, 0x0005FD, 0x000A92, 0x000B96,
00193 0x000838, 0x000971, 0x000B83, 0x000B80, 0x000BF9, 0x0011D3, 0x0011E8,
00194 0x0011D7, 0x001527, 0x0011F8, 0x001073, 0x0010F0, 0x0010E4, 0x0017F8,
00195 0x001062, 0x001402, 0x0017E3, 0x00151A, 0x001077, 0x00152B, 0x00170D,
00196 0x0021D3, 0x002E41, 0x0013C2, 0x000029, 0x0000A9, 0x00025D, 0x000419,
00197 0x000544, 0x000B8B, 0x0009E4, 0x0011D2, 0x001526, 0x001724, 0x0012E6,
00198 0x00150B, 0x0017FF, 0x002E26, 0x002E4B, 0x002B28, 0x0021E3, 0x002A14,
00199 0x00475A, 0x002E12, 0x000057, 0x00023E, 0x000A90, 0x000BF0, 0x001072,
00200 0x001502, 0x0023D6, 0x0020ED, 0x002A30, 0x0044C7, 0x00008C, 0x00047F,
00201 0x00152A, 0x002262, 0x002E04, 0x0000A1, 0x0005F9, 0x000173, 0x000875,
00202 0x000171, 0x00152D, 0x0002E3, 0x0017E2, 0x0002AD, 0x0021C1, 0x000479,
00203 0x0021E7, 0x00041F, 0x005C4E, 0x000543, 0x005C4F, 0x000A91, 0x00898D,
00204 0x000B97, 0x008746, 0x000970, 0x008745, 0x000B85, 0x00A856, 0x00152F,
00205 0x010E8E, 0x0010E5, 0x00A857, 0x00170F, 0x021D11, 0x002A58, 0x010E8F,
00206 0x002E40, 0x021D13, 0x002A59, 0x043A25, 0x002A02, 0x043A21, 0x0044C1,
00207 0x087448, 0x0047E4, 0x043A20, 0x00542A, 0x087449, 0x00898C,
00208 };
00209
00210 static const uint8_t coef0_huffbits[HUFF_COEF0_SIZE] = {
00211 8, 7, 2, 3, 3, 4, 4,
00212 5, 5, 6, 6, 6, 6, 7,
00213 7, 7, 7, 7, 8, 8, 8,
00214 8, 8, 8, 8, 9, 9, 9,
00215 9, 9, 9, 9, 9, 9, 10,
00216 10, 10, 10, 10, 10, 10, 10,
00217 10, 10, 10, 11, 11, 11, 11,
00218 11, 11, 11, 11, 11, 11, 11,
00219 11, 11, 12, 12, 12, 12, 12,
00220 12, 12, 12, 12, 12, 12, 13,
00221 12, 12, 12, 12, 12, 12, 13,
00222 13, 13, 13, 13, 13, 13, 12,
00223 12, 13, 13, 13, 13, 13, 13,
00224 13, 13, 14, 14, 13, 13, 14,
00225 13, 13, 14, 14, 14, 14, 14,
00226 14, 14, 14, 14, 14, 13, 14,
00227 14, 14, 14, 14, 14, 14, 15,
00228 14, 15, 14, 14, 14, 14, 14,
00229 14, 15, 14, 14, 14, 14, 14,
00230 14, 14, 15, 15, 15, 15, 14,
00231 15, 15, 15, 15, 15, 15, 15,
00232 15, 15, 15, 15, 15, 4, 7,
00233 8, 9, 10, 10, 10, 11, 11,
00234 11, 12, 12, 12, 12, 12, 12,
00235 13, 13, 13, 13, 13, 13, 13,
00236 13, 13, 13, 14, 14, 14, 14,
00237 14, 14, 14, 14, 14, 13, 14,
00238 15, 14, 14, 6, 9, 11, 12,
00239 12, 12, 13, 13, 13, 13, 14,
00240 14, 14, 14, 14, 14, 15, 15,
00241 15, 15, 7, 10, 12, 13, 14,
00242 14, 14, 15, 15, 15, 8, 11,
00243 13, 14, 15, 9, 12, 9, 13,
00244 10, 13, 10, 14, 11, 15, 11,
00245 15, 12, 15, 12, 15, 12, 16,
00246 12, 17, 13, 17, 13, 17, 13,
00247 18, 14, 17, 14, 19, 14, 18,
00248 14, 19, 14, 20, 15, 20, 15,
00249 21, 15, 20, 16, 21, 16,
00250 };
00251
00252
00253 #define HUFF_COEF1_SIZE 244
00254 #define HUFF_COEF1_MAXBITS 22
00255 static const uint32_t coef1_huffcodes[HUFF_COEF1_SIZE] = {
00256 0x0001E2, 0x00007F, 0x000000, 0x000002, 0x000008, 0x00000E, 0x000019,
00257 0x00002F, 0x000037, 0x000060, 0x00006C, 0x000095, 0x0000C6, 0x0000F0,
00258 0x00012E, 0x000189, 0x0001A5, 0x0001F8, 0x000253, 0x00030A, 0x000344,
00259 0x00034D, 0x0003F2, 0x0004BD, 0x0005D7, 0x00062A, 0x00068B, 0x000693,
00260 0x000797, 0x00097D, 0x000BAB, 0x000C52, 0x000C5E, 0x000D21, 0x000D20,
00261 0x000F1A, 0x000FCE, 0x000FD1, 0x0012F1, 0x001759, 0x0018AC, 0x0018A7,
00262 0x0018BF, 0x001A2B, 0x001E52, 0x001E50, 0x001E31, 0x001FB8, 0x0025E6,
00263 0x0025E7, 0x002EB4, 0x002EB7, 0x003169, 0x00315B, 0x00317C, 0x00316C,
00264 0x0034CA, 0x00348D, 0x003F40, 0x003CA2, 0x003F76, 0x004BC3, 0x004BE5,
00265 0x003F73, 0x004BF8, 0x004BF9, 0x006131, 0x00628B, 0x006289, 0x0062DA,
00266 0x00628A, 0x0062D4, 0x006997, 0x0062B4, 0x006918, 0x00794D, 0x007E7B,
00267 0x007E87, 0x007EEA, 0x00794E, 0x00699D, 0x007967, 0x00699F, 0x0062DB,
00268 0x007E7A, 0x007EEB, 0x00BAC0, 0x0097C9, 0x00C537, 0x00C5AB, 0x00D233,
00269 0x00D338, 0x00BAC1, 0x00D23D, 0x012F91, 0x00D339, 0x00FDC8, 0x00D23C,
00270 0x00FDDC, 0x00FDC9, 0x00FDDD, 0x00D33C, 0x000003, 0x000016, 0x00003E,
00271 0x0000C3, 0x0001A1, 0x000347, 0x00062E, 0x000BAA, 0x000F2D, 0x001A2A,
00272 0x001E58, 0x00309B, 0x003CA3, 0x005D6A, 0x00629A, 0x006996, 0x00794F,
00273 0x007EE5, 0x00BAD7, 0x00C5AA, 0x00C5F4, 0x00FDDF, 0x00FDDE, 0x018A20,
00274 0x018A6D, 0x01A67B, 0x01A464, 0x025F21, 0x01F9E2, 0x01F9E3, 0x00000A,
00275 0x00003D, 0x000128, 0x0003C7, 0x000C24, 0x0018A3, 0x002EB1, 0x003CB2,
00276 0x00691F, 0x007E79, 0x000013, 0x0000BB, 0x00034E, 0x000D14, 0x0025FD,
00277 0x004BE7, 0x000024, 0x000188, 0x0007EF, 0x000035, 0x000308, 0x0012F2,
00278 0x00005C, 0x0003F6, 0x0025E0, 0x00006D, 0x000698, 0x000096, 0x000C25,
00279 0x0000C7, 0x000F1B, 0x0000F3, 0x0012FF, 0x000174, 0x001A66, 0x0001A0,
00280 0x003099, 0x0001E4, 0x00316B, 0x000252, 0x003F31, 0x00030B, 0x004BE6,
00281 0x000346, 0x0062FB, 0x00034F, 0x007966, 0x0003F5, 0x007E86, 0x0005D4,
00282 0x00C511, 0x00062C, 0x00C5F5, 0x000692, 0x00F299, 0x000795, 0x00F298,
00283 0x0007E9, 0x018A21, 0x00097E, 0x0175AD, 0x000C27, 0x01A67A, 0x000C57,
00284 0x02EB59, 0x000D22, 0x0314D9, 0x000F19, 0x03F3C2, 0x000FCD, 0x0348CB,
00285 0x0012F8, 0x04BE41, 0x0018A0, 0x03F3C1, 0x0018A1, 0x04BE40, 0x0018B7,
00286 0x0629B0, 0x001A64, 0x0D2329, 0x001E30, 0x03F3C3, 0x001F9F, 0x0BAD62,
00287 0x001F99, 0x0FCF00, 0x00309A, 0x0629B1, 0x002EB6, 0x175AC3, 0x00314C,
00288 0x069195, 0x003168, 0x0BAD63, 0x00348E, 0x175AC1, 0x003F30, 0x07E781,
00289 0x003F41, 0x0D2328, 0x003F42, 0x1F9E03, 0x004BC2, 0x175AC2, 0x003F74,
00290 0x175AC0, 0x005D61, 0x3F3C05, 0x006130, 0x3F3C04, 0x0062B5,
00291 };
00292
00293 static const uint8_t coef1_huffbits[HUFF_COEF1_SIZE] = {
00294 9, 7, 2, 3, 4, 4, 5,
00295 6, 6, 7, 7, 8, 8, 8,
00296 9, 9, 9, 9, 10, 10, 10,
00297 10, 10, 11, 11, 11, 11, 11,
00298 11, 12, 12, 12, 12, 12, 12,
00299 12, 12, 12, 13, 13, 13, 13,
00300 13, 13, 13, 13, 13, 13, 14,
00301 14, 14, 14, 14, 14, 14, 14,
00302 14, 14, 14, 14, 14, 15, 15,
00303 14, 15, 15, 15, 15, 15, 15,
00304 15, 15, 15, 15, 15, 15, 15,
00305 15, 15, 15, 15, 15, 15, 15,
00306 15, 15, 16, 16, 16, 16, 16,
00307 16, 16, 16, 17, 16, 16, 16,
00308 16, 16, 16, 16, 3, 5, 6,
00309 8, 9, 10, 11, 12, 12, 13,
00310 13, 14, 14, 15, 15, 15, 15,
00311 15, 16, 16, 16, 16, 16, 17,
00312 17, 17, 17, 18, 17, 17, 4,
00313 6, 9, 10, 12, 13, 14, 14,
00314 15, 15, 5, 8, 10, 12, 14,
00315 15, 6, 9, 11, 6, 10, 13,
00316 7, 10, 14, 7, 11, 8, 12,
00317 8, 12, 8, 13, 9, 13, 9,
00318 14, 9, 14, 10, 14, 10, 15,
00319 10, 15, 10, 15, 10, 15, 11,
00320 16, 11, 16, 11, 16, 11, 16,
00321 11, 17, 12, 17, 12, 17, 12,
00322 18, 12, 18, 12, 18, 12, 18,
00323 13, 19, 13, 18, 13, 19, 13,
00324 19, 13, 20, 13, 18, 13, 20,
00325 13, 20, 14, 19, 14, 21, 14,
00326 19, 14, 20, 14, 21, 14, 19,
00327 14, 20, 14, 21, 15, 21, 14,
00328 21, 15, 22, 15, 22, 15,
00329 };
00330
00331
00332 static const uint16_t coef0_run[HUFF_COEF0_SIZE] = {
00333 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
00334 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
00335 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00336 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
00337 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
00338 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
00339 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
00340 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
00341 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
00342 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
00343 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 0, 1,
00344 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00345 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
00346 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3,
00347 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
00348 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1,
00349 2, 3, 4, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00350 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00351 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00352 1, 0, 1, 0, 1, 0,
00353 };
00354
00355 static const float coef0_level[HUFF_COEF0_SIZE] = {
00356 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00357 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00358 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00359 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00360 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00361 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00362 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00363 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00364 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00365 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00366 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
00367 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00368 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00369 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
00370 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
00371 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5,
00372 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
00373 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18,
00374 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25,
00375 25, 26, 26, 27, 27, 28,
00376 };
00377
00378
00379 static const uint16_t coef1_run[HUFF_COEF1_SIZE] = {
00380 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00381 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
00382 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
00383 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
00384 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
00385 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, 1, 2, 3, 4, 5,
00386 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
00387 24, 25, 26, 27, 28, 29, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1,
00388 2, 3, 4, 5, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 0, 1, 0,
00389 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00390 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00391 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00392 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
00393 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
00394 };
00395
00396 static const float coef1_level[HUFF_COEF1_SIZE] = {
00397 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00398 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00399 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00400 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00401 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00402 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
00403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00404 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
00405 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10,
00406 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19,
00407 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28,
00408 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37,
00409 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46,
00410 46, 47, 47, 48, 48, 49, 49, 50, 51, 52,
00411 };
00419 #define HUFF_VEC4_SIZE 127
00420 #define HUFF_VEC4_MAXBITS 14
00421 static const uint16_t vec4_huffcodes[HUFF_VEC4_SIZE] = {
00422 0x0019, 0x0027, 0x00F2, 0x03BA, 0x0930, 0x1267, 0x0031, 0x0030,
00423 0x0097, 0x0221, 0x058B, 0x0124, 0x00EB, 0x01D4, 0x03D8, 0x0584,
00424 0x0364, 0x045F, 0x0F66, 0x0931, 0x24CD, 0x002F, 0x0039, 0x00E8,
00425 0x02C3, 0x078A, 0x0037, 0x0029, 0x0084, 0x01B1, 0x00ED, 0x0086,
00426 0x00F9, 0x03AB, 0x01EB, 0x08BC, 0x011E, 0x00F3, 0x0220, 0x058A,
00427 0x00EC, 0x008E, 0x012B, 0x01EA, 0x0119, 0x04B0, 0x04B1, 0x03B8,
00428 0x0691, 0x0365, 0x01ED, 0x049A, 0x0EA9, 0x0EA8, 0x08BD, 0x24CC,
00429 0x0026, 0x0035, 0x00DB, 0x02C4, 0x07B2, 0x0038, 0x002B, 0x007F,
00430 0x01B3, 0x00F4, 0x0091, 0x0116, 0x03BB, 0x0215, 0x0932, 0x002D,
00431 0x002A, 0x008A, 0x01DE, 0x0028, 0x0020, 0x005C, 0x0090, 0x0068,
00432 0x01EE, 0x00E9, 0x008D, 0x012A, 0x0087, 0x005D, 0x0118, 0x0349,
00433 0x01EF, 0x01E3, 0x08B9, 0x00F0, 0x00D3, 0x0214, 0x049B, 0x00DA,
00434 0x0089, 0x0125, 0x0217, 0x012D, 0x0690, 0x0094, 0x007D, 0x011F,
00435 0x007E, 0x0059, 0x0127, 0x01A5, 0x0111, 0x00F8, 0x045D, 0x03B9,
00436 0x0259, 0x0580, 0x02C1, 0x01DF, 0x0585, 0x0216, 0x0163, 0x01B0,
00437 0x03C4, 0x08B8, 0x078B, 0x0755, 0x0581, 0x0F67, 0x0000,
00438 };
00439
00440 static const uint8_t vec4_huffbits[HUFF_VEC4_SIZE] = {
00441 5, 6, 8, 10, 12, 13, 6, 6,
00442 8, 10, 11, 9, 8, 9, 10, 11,
00443 10, 11, 12, 12, 14, 6, 6, 8,
00444 10, 11, 6, 6, 8, 9, 8, 8,
00445 8, 10, 9, 12, 9, 8, 10, 11,
00446 8, 8, 9, 9, 9, 11, 11, 10,
00447 11, 10, 9, 11, 12, 12, 12, 14,
00448 6, 6, 8, 10, 11, 6, 6, 7,
00449 9, 8, 8, 9, 10, 10, 12, 6,
00450 6, 8, 9, 6, 6, 7, 8, 7,
00451 9, 8, 8, 9, 8, 7, 9, 10,
00452 9, 9, 12, 8, 8, 10, 11, 8,
00453 8, 9, 10, 9, 11, 8, 7, 9,
00454 7, 7, 9, 9, 9, 8, 11, 10,
00455 10, 11, 10, 9, 11, 10, 9, 9,
00456 10, 12, 11, 11, 11, 12, 1,
00457 };
00458
00459
00460 #define HUFF_VEC2_SIZE 137
00461 #define HUFF_VEC2_MAXBITS 12
00462 static const uint16_t vec2_huffcodes[HUFF_VEC2_SIZE] = {
00463 0x055, 0x01C, 0x01A, 0x02B, 0x028, 0x067, 0x08B, 0x039,
00464 0x170, 0x10D, 0x2A5, 0x047, 0x464, 0x697, 0x523, 0x8CB,
00465 0x01B, 0x00E, 0x000, 0x010, 0x012, 0x036, 0x048, 0x04C,
00466 0x0C2, 0x09B, 0x171, 0x03B, 0x224, 0x34A, 0x2D6, 0x019,
00467 0x00F, 0x002, 0x014, 0x017, 0x006, 0x05D, 0x054, 0x0C7,
00468 0x0B4, 0x192, 0x10E, 0x233, 0x043, 0x02C, 0x00F, 0x013,
00469 0x006, 0x02F, 0x02C, 0x068, 0x077, 0x0DF, 0x111, 0x1A4,
00470 0x16A, 0x2A4, 0x027, 0x011, 0x018, 0x02D, 0x00F, 0x04A,
00471 0x040, 0x097, 0x01F, 0x11B, 0x022, 0x16D, 0x066, 0x035,
00472 0x005, 0x02B, 0x049, 0x009, 0x075, 0x0CB, 0x0AA, 0x187,
00473 0x106, 0x08A, 0x047, 0x060, 0x06E, 0x01D, 0x074, 0x0C4,
00474 0x01E, 0x118, 0x1A7, 0x038, 0x042, 0x053, 0x076, 0x0A8,
00475 0x0CA, 0x082, 0x110, 0x18D, 0x12D, 0x0B9, 0x0C8, 0x0DE,
00476 0x01C, 0x0AB, 0x113, 0x18C, 0x10F, 0x09A, 0x0A5, 0x0B7,
00477 0x11A, 0x186, 0x1A6, 0x259, 0x153, 0x18A, 0x193, 0x020,
00478 0x10C, 0x046, 0x03A, 0x107, 0x149, 0x16C, 0x2D7, 0x225,
00479 0x258, 0x316, 0x696, 0x317, 0x042, 0x522, 0x290, 0x8CA,
00480 0x001,
00481 };
00482
00483 static const uint8_t vec2_huffbits[HUFF_VEC2_SIZE] = {
00484 7, 6, 6, 6, 7, 7, 8, 9,
00485 9, 10, 10, 11, 11, 11, 12, 12,
00486 6, 4, 5, 5, 6, 6, 7, 8,
00487 8, 9, 9, 10, 10, 10, 11, 6,
00488 4, 5, 5, 6, 7, 7, 8, 8,
00489 9, 9, 10, 10, 11, 6, 5, 5,
00490 6, 6, 7, 7, 8, 8, 9, 9,
00491 10, 10, 7, 6, 6, 6, 7, 7,
00492 8, 8, 9, 9, 10, 10, 7, 6,
00493 7, 7, 7, 8, 8, 8, 9, 9,
00494 10, 8, 7, 7, 7, 8, 8, 8,
00495 9, 9, 9, 9, 8, 8, 8, 8,
00496 8, 9, 9, 9, 9, 8, 8, 8,
00497 9, 9, 9, 9, 10, 9, 9, 9,
00498 9, 9, 9, 10, 9, 9, 9, 10,
00499 10, 11, 10, 10, 10, 10, 11, 10,
00500 10, 10, 11, 10, 11, 12, 11, 12,
00501 3,
00502 };
00503
00504
00505 #define HUFF_VEC1_SIZE 101
00506 #define HUFF_VEC1_MAXBITS 11
00507 static const uint16_t vec1_huffcodes[HUFF_VEC1_SIZE] = {
00508 0x01A, 0x003, 0x017, 0x010, 0x00C, 0x009, 0x005, 0x000,
00509 0x00D, 0x00A, 0x009, 0x00C, 0x00F, 0x002, 0x004, 0x007,
00510 0x00B, 0x00F, 0x01C, 0x006, 0x010, 0x015, 0x01C, 0x022,
00511 0x03B, 0x00E, 0x019, 0x023, 0x034, 0x036, 0x03A, 0x047,
00512 0x008, 0x00A, 0x01E, 0x031, 0x037, 0x050, 0x053, 0x06B,
00513 0x06F, 0x08C, 0x0E8, 0x0EA, 0x0EB, 0x016, 0x03E, 0x03F,
00514 0x06C, 0x089, 0x08A, 0x0A3, 0x0A4, 0x0D4, 0x0DD, 0x0EC,
00515 0x0EE, 0x11A, 0x1D2, 0x024, 0x025, 0x02E, 0x027, 0x0C2,
00516 0x0C0, 0x0DA, 0x0DB, 0x111, 0x144, 0x116, 0x14A, 0x145,
00517 0x1B8, 0x1AB, 0x1DA, 0x1DE, 0x1DB, 0x1DF, 0x236, 0x237,
00518 0x3A6, 0x3A7, 0x04D, 0x04C, 0x05E, 0x05F, 0x183, 0x182,
00519 0x186, 0x221, 0x187, 0x220, 0x22E, 0x22F, 0x296, 0x354,
00520 0x297, 0x355, 0x372, 0x373, 0x016,
00521 };
00522
00523 static const uint8_t vec1_huffbits[HUFF_VEC1_SIZE] = {
00524 7, 6, 5, 5, 5, 5, 5, 5,
00525 4, 4, 4, 4, 4, 5, 5, 5,
00526 5, 5, 5, 6, 6, 6, 6, 6,
00527 6, 7, 7, 7, 7, 7, 7, 7,
00528 8, 8, 8, 8, 8, 8, 8, 8,
00529 8, 8, 8, 8, 8, 9, 9, 9,
00530 9, 9, 9, 9, 9, 9, 9, 9,
00531 9, 9, 9, 10, 10, 10, 10, 10,
00532 10, 10, 10, 10, 10, 10, 10, 10,
00533 10, 10, 10, 10, 10, 10, 10, 10,
00534 10, 10, 11, 11, 11, 11, 11, 11,
00535 11, 11, 11, 11, 11, 11, 11, 11,
00536 11, 11, 11, 11, 5,
00537 };
00538
00539
00540 static const uint16_t symbol_to_vec4[HUFF_VEC4_SIZE] = {
00541 0, 1, 2, 3, 4, 5, 16, 17, 18, 19,
00542 20, 32, 33, 34, 35, 48, 49, 50, 64, 65,
00543 80, 256, 257, 258, 259, 260, 272, 273, 274, 275,
00544 288, 289, 290, 304, 305, 320, 512, 513, 514, 515,
00545 528, 529, 530, 544, 545, 560, 768, 769, 770, 784,
00546 785, 800, 1024, 1025, 1040, 1280, 4096, 4097, 4098, 4099,
00547 4100, 4112, 4113, 4114, 4115, 4128, 4129, 4130, 4144, 4145,
00548 4160, 4352, 4353, 4354, 4355, 4368, 4369, 4370, 4384, 4385,
00549 4400, 4608, 4609, 4610, 4624, 4625, 4640, 4864, 4865, 4880,
00550 5120, 8192, 8193, 8194, 8195, 8208, 8209, 8210, 8224, 8225,
00551 8240, 8448, 8449, 8450, 8464, 8465, 8480, 8704, 8705, 8720,
00552 8960, 12288, 12289, 12290, 12304, 12305, 12320, 12544, 12545, 12560,
00553 12800, 16384, 16385, 16400, 16640, 20480, 0,
00554 };
00555
00556
00557 static const uint8_t symbol_to_vec2[HUFF_VEC2_SIZE] = {
00558 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00559 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
00560 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
00561 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 64, 65,
00562 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84,
00563 85, 86, 87, 88, 89, 90, 96, 97, 98, 99, 100, 101, 102, 103, 104,
00564 105, 112, 113, 114, 115, 116, 117, 118, 119, 120, 128, 129, 130, 131, 132,
00565 133, 134, 135, 144, 145, 146, 147, 148, 149, 150, 160, 161, 162, 163, 164,
00566 165, 176, 177, 178, 179, 180, 192, 193, 194, 195, 208, 209, 210, 224, 225,
00567 240, 0,
00568 };
00575 static const float default_decorrelation_matrices[] = {
00576 1.000000, 0.707031, -0.707031, 0.707031, 0.707031, 0.578125, 0.707031,
00577 0.410156, 0.578125, -0.707031, 0.410156, 0.578125, 0.000000, -0.816406,
00578 0.500000, 0.652344, 0.500000, 0.269531, 0.500000, 0.269531, -0.500000,
00579 -0.652344, 0.500000, -0.269531, -0.500000, 0.652344, 0.500000, -0.652344,
00580 0.500000, -0.269531, 0.445312, 0.601562, 0.511719, 0.371094, 0.195312,
00581 0.445312, 0.371094, -0.195312, -0.601562, -0.511719, 0.445312, 0.000000,
00582 -0.632812, 0.000000, 0.632812, 0.445312, -0.371094, -0.195312, 0.601562,
00583 -0.511719, 0.445312, -0.601562, 0.511719, -0.371094, 0.195312, 0.410156,
00584 0.558594, 0.500000, 0.410156, 0.289062, 0.148438, 0.410156, 0.410156,
00585 0.000000, -0.410156, -0.578125, -0.410156, 0.410156, 0.148438, -0.500000,
00586 -0.410156, 0.289062, 0.558594, 0.410156, -0.148438, -0.500000, 0.410156,
00587 0.289062, -0.558594, 0.410156, -0.410156, 0.000000, 0.410156, -0.578125,
00588 0.410156, 0.410156, -0.558594, 0.500000, -0.410156, 0.289062, -0.148438,
00589 };
00590
00594 static const float * const default_decorrelation[] = {
00595 NULL,
00596 &default_decorrelation_matrices[0],
00597 &default_decorrelation_matrices[1],
00598 &default_decorrelation_matrices[5],
00599 &default_decorrelation_matrices[14],
00600 &default_decorrelation_matrices[30],
00601 &default_decorrelation_matrices[55]
00602 };
00603
00604 #endif