• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

libavcodec/wmaprodata.h

Go to the documentation of this file.
00001 /*
00002  * WMA 9/3/PRO compatible decoder
00003  * Copyright (c) 2007 Baptiste Coudurier, Benjamin Larsson, Ulion
00004  * Copyright (c) 2008 - 2009 Sascha Sommer
00005  *
00006  * This file is part of FFmpeg.
00007  *
00008  * FFmpeg is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU Lesser General Public
00010  * License as published by the Free Software Foundation; either
00011  * version 2.1 of the License, or (at your option) any later version.
00012  *
00013  * FFmpeg is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016  * Lesser General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU Lesser General Public
00019  * License along with FFmpeg; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
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 /* AVCODEC_WMAPRODATA_H */

Generated on Fri Sep 16 2011 17:17:46 for FFmpeg by  doxygen 1.7.1