Convert tables to signed and decimal.
authorVitor Sessak <vitor1001@gmail.com>
Sun, 7 Sep 2008 14:30:54 +0000 (14:30 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Sun, 7 Sep 2008 14:30:54 +0000 (14:30 +0000)
Originally committed as revision 15251 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/mace.c

index eca3b43934f768d1a6e7adc810ac0a23efcaa007..cf79704958507bf6673ffab24fba9a3d9e9b41e9 100644 (file)
@@ -36,202 +36,202 @@ static const uint16_t MACEtab1[] = { 0xfff3, 0x0008, 0x004c, 0x00de, 0x00de, 0x0
 
 static const uint16_t MACEtab3[] = { 0xffee, 0x008c, 0x008c, 0xffee };
 
-static const uint16_t MACEtab2[][8] = {
-    { 0x0025, 0x0074, 0x00CE, 0x014A, 0xFEB5, 0xFF31, 0xFF8B, 0xFFDA },
-    { 0x0027, 0x0079, 0x00D8, 0x015A, 0xFEA5, 0xFF27, 0xFF86, 0xFFD8 },
-    { 0x0029, 0x007F, 0x00E1, 0x0169, 0xFE96, 0xFF1E, 0xFF80, 0xFFD6 },
-    { 0x002A, 0x0084, 0x00EB, 0x0179, 0xFE86, 0xFF14, 0xFF7B, 0xFFD5 },
-    { 0x002C, 0x0089, 0x00F5, 0x0188, 0xFE77, 0xFF0A, 0xFF76, 0xFFD3 },
-    { 0x002E, 0x0090, 0x0100, 0x019A, 0xFE65, 0xFEFF, 0xFF6F, 0xFFD1 },
-    { 0x0030, 0x0096, 0x010B, 0x01AC, 0xFE53, 0xFEF4, 0xFF69, 0xFFCF },
-    { 0x0033, 0x009D, 0x0118, 0x01C1, 0xFE3E, 0xFEE7, 0xFF62, 0xFFCC },
-    { 0x0035, 0x00A5, 0x0125, 0x01D6, 0xFE29, 0xFEDA, 0xFF5A, 0xFFCA },
-    { 0x0037, 0x00AC, 0x0132, 0x01EA, 0xFE15, 0xFECD, 0xFF53, 0xFFC8 },
-    { 0x003A, 0x00B3, 0x013F, 0x01FF, 0xFE00, 0xFEC0, 0xFF4C, 0xFFC5 },
-    { 0x003C, 0x00BB, 0x014D, 0x0216, 0xFDE9, 0xFEB2, 0xFF44, 0xFFC3 },
-    { 0x003F, 0x00C3, 0x015C, 0x022D, 0xFDD2, 0xFEA3, 0xFF3C, 0xFFC0 },
-    { 0x0042, 0x00CD, 0x016C, 0x0247, 0xFDB8, 0xFE93, 0xFF32, 0xFFBD },
-    { 0x0045, 0x00D6, 0x017C, 0x0261, 0xFD9E, 0xFE83, 0xFF29, 0xFFBA },
-    { 0x0048, 0x00DF, 0x018C, 0x027B, 0xFD84, 0xFE73, 0xFF20, 0xFFB7 },
-    { 0x004B, 0x00E9, 0x019E, 0x0297, 0xFD68, 0xFE61, 0xFF16, 0xFFB4 },
-    { 0x004F, 0x00F4, 0x01B1, 0x02B6, 0xFD49, 0xFE4E, 0xFF0B, 0xFFB0 },
-    { 0x0052, 0x00FE, 0x01C5, 0x02D5, 0xFD2A, 0xFE3A, 0xFF01, 0xFFAD },
-    { 0x0056, 0x0109, 0x01D8, 0x02F4, 0xFD0B, 0xFE27, 0xFEF6, 0xFFA9 },
-    { 0x005A, 0x0116, 0x01EF, 0x0318, 0xFCE7, 0xFE10, 0xFEE9, 0xFFA5 },
-    { 0x005E, 0x0122, 0x0204, 0x033A, 0xFCC5, 0xFDFB, 0xFEDD, 0xFFA1 },
-    { 0x0062, 0x012F, 0x021A, 0x035E, 0xFCA1, 0xFDE5, 0xFED0, 0xFF9D },
-    { 0x0066, 0x013C, 0x0232, 0x0385, 0xFC7A, 0xFDCD, 0xFEC3, 0xFF99 },
-    { 0x006B, 0x014B, 0x024C, 0x03AE, 0xFC51, 0xFDB3, 0xFEB4, 0xFF94 },
-    { 0x0070, 0x0159, 0x0266, 0x03D7, 0xFC28, 0xFD99, 0xFEA6, 0xFF8F },
-    { 0x0075, 0x0169, 0x0281, 0x0403, 0xFBFC, 0xFD7E, 0xFE96, 0xFF8A },
-    { 0x007A, 0x0179, 0x029E, 0x0432, 0xFBCD, 0xFD61, 0xFE86, 0xFF85 },
-    { 0x007F, 0x018A, 0x02BD, 0x0463, 0xFB9C, 0xFD42, 0xFE75, 0xFF80 },
-    { 0x0085, 0x019B, 0x02DC, 0x0494, 0xFB6B, 0xFD23, 0xFE64, 0xFF7A },
-    { 0x008B, 0x01AE, 0x02FC, 0x04C8, 0xFB37, 0xFD03, 0xFE51, 0xFF74 },
-    { 0x0091, 0x01C1, 0x031F, 0x0500, 0xFAFF, 0xFCE0, 0xFE3E, 0xFF6E },
-    { 0x0098, 0x01D5, 0x0343, 0x0539, 0xFAC6, 0xFCBC, 0xFE2A, 0xFF67 },
-    { 0x009F, 0x01EA, 0x0368, 0x0575, 0xFA8A, 0xFC97, 0xFE15, 0xFF60 },
-    { 0x00A6, 0x0200, 0x038F, 0x05B3, 0xFA4C, 0xFC70, 0xFDFF, 0xFF59 },
-    { 0x00AD, 0x0217, 0x03B7, 0x05F3, 0xFA0C, 0xFC48, 0xFDE8, 0xFF52 },
-    { 0x00B5, 0x022E, 0x03E1, 0x0636, 0xF9C9, 0xFC1E, 0xFDD1, 0xFF4A },
-    { 0x00BD, 0x0248, 0x040E, 0x067F, 0xF980, 0xFBF1, 0xFDB7, 0xFF42 },
-    { 0x00C5, 0x0262, 0x043D, 0x06CA, 0xF935, 0xFBC2, 0xFD9D, 0xFF3A },
-    { 0x00CE, 0x027D, 0x046D, 0x0717, 0xF8E8, 0xFB92, 0xFD82, 0xFF31 },
-    { 0x00D7, 0x0299, 0x049F, 0x0767, 0xF898, 0xFB60, 0xFD66, 0xFF28 },
-    { 0x00E1, 0x02B7, 0x04D5, 0x07BC, 0xF843, 0xFB2A, 0xFD48, 0xFF1E },
-    { 0x00EB, 0x02D6, 0x050B, 0x0814, 0xF7EB, 0xFAF4, 0xFD29, 0xFF14 },
-    { 0x00F6, 0x02F7, 0x0545, 0x0871, 0xF78E, 0xFABA, 0xFD08, 0xFF09 },
-    { 0x0101, 0x0318, 0x0581, 0x08D1, 0xF72E, 0xFA7E, 0xFCE7, 0xFEFE },
-    { 0x010C, 0x033C, 0x05C0, 0x0935, 0xF6CA, 0xFA3F, 0xFCC3, 0xFEF3 },
-    { 0x0118, 0x0361, 0x0602, 0x099F, 0xF660, 0xF9FD, 0xFC9E, 0xFEE7 },
-    { 0x0125, 0x0387, 0x0646, 0x0A0C, 0xF5F3, 0xF9B9, 0xFC78, 0xFEDA },
-    { 0x0132, 0x03B0, 0x068E, 0x0A80, 0xF57F, 0xF971, 0xFC4F, 0xFECD },
-    { 0x013F, 0x03DA, 0x06D9, 0x0AF7, 0xF508, 0xF926, 0xFC25, 0xFEC0 },
-    { 0x014E, 0x0406, 0x0728, 0x0B75, 0xF48A, 0xF8D7, 0xFBF9, 0xFEB1 },
-    { 0x015D, 0x0434, 0x077A, 0x0BF9, 0xF406, 0xF885, 0xFBCB, 0xFEA2 },
-    { 0x016C, 0x0464, 0x07CF, 0x0C82, 0xF37D, 0xF830, 0xFB9B, 0xFE93 },
-    { 0x017C, 0x0496, 0x0828, 0x0D10, 0xF2EF, 0xF7D7, 0xFB69, 0xFE83 },
-    { 0x018E, 0x04CB, 0x0886, 0x0DA6, 0xF259, 0xF779, 0xFB34, 0xFE71 },
-    { 0x019F, 0x0501, 0x08E6, 0x0E41, 0xF1BE, 0xF719, 0xFAFE, 0xFE60 },
-    { 0x01B2, 0x053B, 0x094C, 0x0EE3, 0xF11C, 0xF6B3, 0xFAC4, 0xFE4D },
-    { 0x01C5, 0x0576, 0x09B6, 0x0F8E, 0xF071, 0xF649, 0xFA89, 0xFE3A },
-    { 0x01D9, 0x05B5, 0x0A26, 0x1040, 0xEFBF, 0xF5D9, 0xFA4A, 0xFE26 },
-    { 0x01EF, 0x05F6, 0x0A9A, 0x10FA, 0xEF05, 0xF565, 0xFA09, 0xFE10 },
-    { 0x0205, 0x063A, 0x0B13, 0x11BC, 0xEE43, 0xF4EC, 0xF9C5, 0xFDFA },
-    { 0x021C, 0x0681, 0x0B91, 0x1285, 0xED7A, 0xF46E, 0xF97E, 0xFDE3 },
-    { 0x0234, 0x06CC, 0x0C15, 0x1359, 0xECA6, 0xF3EA, 0xF933, 0xFDCB },
-    { 0x024D, 0x071A, 0x0CA0, 0x1437, 0xEBC8, 0xF35F, 0xF8E5, 0xFDB2 },
-    { 0x0267, 0x076A, 0x0D2F, 0x151D, 0xEAE2, 0xF2D0, 0xF895, 0xFD98 },
-    { 0x0283, 0x07C0, 0x0DC7, 0x160F, 0xE9F0, 0xF238, 0xF83F, 0xFD7C },
-    { 0x029F, 0x0818, 0x0E63, 0x170A, 0xE8F5, 0xF19C, 0xF7E7, 0xFD60 },
-    { 0x02BD, 0x0874, 0x0F08, 0x1811, 0xE7EE, 0xF0F7, 0xF78B, 0xFD42 },
-    { 0x02DD, 0x08D5, 0x0FB4, 0x1926, 0xE6D9, 0xF04B, 0xF72A, 0xFD22 },
-    { 0x02FE, 0x093A, 0x1067, 0x1A44, 0xE5BB, 0xEF98, 0xF6C5, 0xFD01 },
-    { 0x0320, 0x09A3, 0x1122, 0x1B70, 0xE48F, 0xEEDD, 0xF65C, 0xFCDF },
-    { 0x0344, 0x0A12, 0x11E7, 0x1CAB, 0xE354, 0xEE18, 0xF5ED, 0xFCBB },
-    { 0x0369, 0x0A84, 0x12B2, 0x1DF0, 0xE20F, 0xED4D, 0xF57B, 0xFC96 },
-    { 0x0390, 0x0AFD, 0x1389, 0x1F48, 0xE0B7, 0xEC76, 0xF502, 0xFC6F },
-    { 0x03B8, 0x0B7A, 0x1467, 0x20AC, 0xDF53, 0xEB98, 0xF485, 0xFC47 },
-    { 0x03E3, 0x0BFE, 0x1551, 0x2223, 0xDDDC, 0xEAAE, 0xF401, 0xFC1C },
-    { 0x040F, 0x0C87, 0x1645, 0x23A9, 0xDC56, 0xE9BA, 0xF378, 0xFBF0 },
-    { 0x043E, 0x0D16, 0x1744, 0x2541, 0xDABE, 0xE8BB, 0xF2E9, 0xFBC1 },
-    { 0x046E, 0x0DAB, 0x184C, 0x26E8, 0xD917, 0xE7B3, 0xF254, 0xFB91 },
-    { 0x04A1, 0x0E47, 0x1961, 0x28A4, 0xD75B, 0xE69E, 0xF1B8, 0xFB5E },
-    { 0x04D6, 0x0EEA, 0x1A84, 0x2A75, 0xD58A, 0xE57B, 0xF115, 0xFB29 },
-    { 0x050D, 0x0F95, 0x1BB3, 0x2C5B, 0xD3A4, 0xE44C, 0xF06A, 0xFAF2 },
-    { 0x0547, 0x1046, 0x1CEF, 0x2E55, 0xD1AA, 0xE310, 0xEFB9, 0xFAB8 },
-    { 0x0583, 0x1100, 0x1E3A, 0x3066, 0xCF99, 0xE1C5, 0xEEFF, 0xFA7C },
-    { 0x05C2, 0x11C3, 0x1F94, 0x3292, 0xCD6D, 0xE06B, 0xEE3C, 0xFA3D },
-    { 0x0604, 0x128E, 0x20FC, 0x34D2, 0xCB2D, 0xDF03, 0xED71, 0xF9FB },
-    { 0x0649, 0x1362, 0x2275, 0x372E, 0xC8D1, 0xDD8A, 0xEC9D, 0xF9B6 },
-    { 0x0690, 0x143F, 0x23FF, 0x39A4, 0xC65B, 0xDC00, 0xEBC0, 0xF96F },
-    { 0x06DC, 0x1527, 0x259A, 0x3C37, 0xC3C8, 0xDA65, 0xEAD8, 0xF923 },
-    { 0x072A, 0x1619, 0x2749, 0x3EE8, 0xC117, 0xD8B6, 0xE9E6, 0xF8D5 },
-    { 0x077C, 0x1715, 0x2909, 0x41B6, 0xBE49, 0xD6F6, 0xE8EA, 0xF883 },
-    { 0x07D1, 0x181D, 0x2ADF, 0x44A6, 0xBB59, 0xD520, 0xE7E2, 0xF82E },
-    { 0x082B, 0x1930, 0x2CC7, 0x47B4, 0xB84B, 0xD338, 0xE6CF, 0xF7D4 },
-    { 0x0888, 0x1A50, 0x2EC6, 0x4AE7, 0xB518, 0xD139, 0xE5AF, 0xF777 },
-    { 0x08EA, 0x1B7D, 0x30DE, 0x4E40, 0xB1BF, 0xCF21, 0xE482, 0xF715 },
-    { 0x094F, 0x1CB7, 0x330C, 0x51BE, 0xAE41, 0xCCF3, 0xE348, 0xF6B0 },
-    { 0x09BA, 0x1DFF, 0x3554, 0x5565, 0xAA9A, 0xCAAB, 0xE200, 0xF645 },
-    { 0x0A29, 0x1F55, 0x37B4, 0x5932, 0xA6CD, 0xC84B, 0xE0AA, 0xF5D6 },
-    { 0x0A9D, 0x20BC, 0x3A31, 0x5D2E, 0xA2D1, 0xC5CE, 0xDF43, 0xF562 },
-    { 0x0B16, 0x2231, 0x3CC9, 0x6156, 0x9EA9, 0xC336, 0xDDCE, 0xF4E9 },
-    { 0x0B95, 0x23B8, 0x3F80, 0x65AF, 0x9A50, 0xC07F, 0xDC47, 0xF46A },
-    { 0x0C19, 0x2551, 0x4256, 0x6A39, 0x95C6, 0xBDA9, 0xDAAE, 0xF3E6 },
-    { 0x0CA4, 0x26FB, 0x454C, 0x6EF7, 0x9108, 0xBAB3, 0xD904, 0xF35B },
-    { 0x0D34, 0x28B8, 0x4864, 0x73EB, 0x8C14, 0xB79B, 0xD747, 0xF2CB },
-    { 0x0DCB, 0x2A8A, 0x4B9F, 0x7918, 0x86E7, 0xB460, 0xD575, 0xF234 },
-    { 0x0E68, 0x2C6F, 0x4EFE, 0x7E7E, 0x8181, 0xB101, 0xD390, 0xF197 },
-    { 0x0F0D, 0x2E6B, 0x5285, 0x7FFF, 0x8000, 0xAD7A, 0xD194, 0xF0F2 },
-    { 0x0FB9, 0x307E, 0x5635, 0x7FFF, 0x8000, 0xA9CA, 0xCF81, 0xF046 },
-    { 0x106D, 0x32A7, 0x5A0D, 0x7FFF, 0x8000, 0xA5F2, 0xCD58, 0xEF92 },
-    { 0x1128, 0x34EA, 0x5E12, 0x7FFF, 0x8000, 0xA1ED, 0xCB15, 0xEED7 },
-    { 0x11ED, 0x3747, 0x6245, 0x7FFF, 0x8000, 0x9DBA, 0xC8B8, 0xEE12 },
-    { 0x12B9, 0x39BF, 0x66A8, 0x7FFF, 0x8000, 0x9957, 0xC640, 0xED46 },
-    { 0x138F, 0x3C52, 0x6B3C, 0x7FFF, 0x8000, 0x94C3, 0xC3AD, 0xEC70 },
-    { 0x146F, 0x3F04, 0x7006, 0x7FFF, 0x8000, 0x8FF9, 0xC0FB, 0xEB90 },
-    { 0x1558, 0x41D3, 0x7505, 0x7FFF, 0x8000, 0x8AFA, 0xBE2C, 0xEAA7 },
-    { 0x164C, 0x44C3, 0x7A3E, 0x7FFF, 0x8000, 0x85C1, 0xBB3C, 0xE9B3 },
-    { 0x174B, 0x47D5, 0x7FB3, 0x7FFF, 0x8000, 0x804C, 0xB82A, 0xE8B4 },
-    { 0x1855, 0x4B0A, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xB4F5, 0xE7AA },
-    { 0x196B, 0x4E63, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xB19C, 0xE694 },
-    { 0x1A8D, 0x51E3, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xAE1C, 0xE572 },
-    { 0x1BBD, 0x558B, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xAA74, 0xE442 },
-    { 0x1CFA, 0x595C, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xA6A3, 0xE305 },
-    { 0x1E45, 0x5D59, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0xA2A6, 0xE1BA },
-    { 0x1F9F, 0x6184, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x9E7B, 0xE060 },
-    { 0x2108, 0x65DE, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x9A21, 0xDEF7 },
-    { 0x2281, 0x6A6A, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x9595, 0xDD7E },
-    { 0x240C, 0x6F29, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x90D6, 0xDBF3 },
-    { 0x25A7, 0x741F, 0x7FFF, 0x7FFF, 0x8000, 0x8000, 0x8BE0, 0xDA58 },
+static const int16_t MACEtab2[][8] = {
+    {    37,    116,    206,    330,   -331,   -207,   -117,    -38},
+    {    39,    121,    216,    346,   -347,   -217,   -122,    -40},
+    {    41,    127,    225,    361,   -362,   -226,   -128,    -42},
+    {    42,    132,    235,    377,   -378,   -236,   -133,    -43},
+    {    44,    137,    245,    392,   -393,   -246,   -138,    -45},
+    {    46,    144,    256,    410,   -411,   -257,   -145,    -47},
+    {    48,    150,    267,    428,   -429,   -268,   -151,    -49},
+    {    51,    157,    280,    449,   -450,   -281,   -158,    -52},
+    {    53,    165,    293,    470,   -471,   -294,   -166,    -54},
+    {    55,    172,    306,    490,   -491,   -307,   -173,    -56},
+    {    58,    179,    319,    511,   -512,   -320,   -180,    -59},
+    {    60,    187,    333,    534,   -535,   -334,   -188,    -61},
+    {    63,    195,    348,    557,   -558,   -349,   -196,    -64},
+    {    66,    205,    364,    583,   -584,   -365,   -206,    -67},
+    {    69,    214,    380,    609,   -610,   -381,   -215,    -70},
+    {    72,    223,    396,    635,   -636,   -397,   -224,    -73},
+    {    75,    233,    414,    663,   -664,   -415,   -234,    -76},
+    {    79,    244,    433,    694,   -695,   -434,   -245,    -80},
+    {    82,    254,    453,    725,   -726,   -454,   -255,    -83},
+    {    86,    265,    472,    756,   -757,   -473,   -266,    -87},
+    {    90,    278,    495,    792,   -793,   -496,   -279,    -91},
+    {    94,    290,    516,    826,   -827,   -517,   -291,    -95},
+    {    98,    303,    538,    862,   -863,   -539,   -304,    -99},
+    {   102,    316,    562,    901,   -902,   -563,   -317,   -103},
+    {   107,    331,    588,    942,   -943,   -589,   -332,   -108},
+    {   112,    345,    614,    983,   -984,   -615,   -346,   -113},
+    {   117,    361,    641,   1027,  -1028,   -642,   -362,   -118},
+    {   122,    377,    670,   1074,  -1075,   -671,   -378,   -123},
+    {   127,    394,    701,   1123,  -1124,   -702,   -395,   -128},
+    {   133,    411,    732,   1172,  -1173,   -733,   -412,   -134},
+    {   139,    430,    764,   1224,  -1225,   -765,   -431,   -140},
+    {   145,    449,    799,   1280,  -1281,   -800,   -450,   -146},
+    {   152,    469,    835,   1337,  -1338,   -836,   -470,   -153},
+    {   159,    490,    872,   1397,  -1398,   -873,   -491,   -160},
+    {   166,    512,    911,   1459,  -1460,   -912,   -513,   -167},
+    {   173,    535,    951,   1523,  -1524,   -952,   -536,   -174},
+    {   181,    558,    993,   1590,  -1591,   -994,   -559,   -182},
+    {   189,    584,   1038,   1663,  -1664,  -1039,   -585,   -190},
+    {   197,    610,   1085,   1738,  -1739,  -1086,   -611,   -198},
+    {   206,    637,   1133,   1815,  -1816,  -1134,   -638,   -207},
+    {   215,    665,   1183,   1895,  -1896,  -1184,   -666,   -216},
+    {   225,    695,   1237,   1980,  -1981,  -1238,   -696,   -226},
+    {   235,    726,   1291,   2068,  -2069,  -1292,   -727,   -236},
+    {   246,    759,   1349,   2161,  -2162,  -1350,   -760,   -247},
+    {   257,    792,   1409,   2257,  -2258,  -1410,   -793,   -258},
+    {   268,    828,   1472,   2357,  -2358,  -1473,   -829,   -269},
+    {   280,    865,   1538,   2463,  -2464,  -1539,   -866,   -281},
+    {   293,    903,   1606,   2572,  -2573,  -1607,   -904,   -294},
+    {   306,    944,   1678,   2688,  -2689,  -1679,   -945,   -307},
+    {   319,    986,   1753,   2807,  -2808,  -1754,   -987,   -320},
+    {   334,   1030,   1832,   2933,  -2934,  -1833,  -1031,   -335},
+    {   349,   1076,   1914,   3065,  -3066,  -1915,  -1077,   -350},
+    {   364,   1124,   1999,   3202,  -3203,  -2000,  -1125,   -365},
+    {   380,   1174,   2088,   3344,  -3345,  -2089,  -1175,   -381},
+    {   398,   1227,   2182,   3494,  -3495,  -2183,  -1228,   -399},
+    {   415,   1281,   2278,   3649,  -3650,  -2279,  -1282,   -416},
+    {   434,   1339,   2380,   3811,  -3812,  -2381,  -1340,   -435},
+    {   453,   1398,   2486,   3982,  -3983,  -2487,  -1399,   -454},
+    {   473,   1461,   2598,   4160,  -4161,  -2599,  -1462,   -474},
+    {   495,   1526,   2714,   4346,  -4347,  -2715,  -1527,   -496},
+    {   517,   1594,   2835,   4540,  -4541,  -2836,  -1595,   -518},
+    {   540,   1665,   2961,   4741,  -4742,  -2962,  -1666,   -541},
+    {   564,   1740,   3093,   4953,  -4954,  -3094,  -1741,   -565},
+    {   589,   1818,   3232,   5175,  -5176,  -3233,  -1819,   -590},
+    {   615,   1898,   3375,   5405,  -5406,  -3376,  -1899,   -616},
+    {   643,   1984,   3527,   5647,  -5648,  -3528,  -1985,   -644},
+    {   671,   2072,   3683,   5898,  -5899,  -3684,  -2073,   -672},
+    {   701,   2164,   3848,   6161,  -6162,  -3849,  -2165,   -702},
+    {   733,   2261,   4020,   6438,  -6439,  -4021,  -2262,   -734},
+    {   766,   2362,   4199,   6724,  -6725,  -4200,  -2363,   -767},
+    {   800,   2467,   4386,   7024,  -7025,  -4387,  -2468,   -801},
+    {   836,   2578,   4583,   7339,  -7340,  -4584,  -2579,   -837},
+    {   873,   2692,   4786,   7664,  -7665,  -4787,  -2693,   -874},
+    {   912,   2813,   5001,   8008,  -8009,  -5002,  -2814,   -913},
+    {   952,   2938,   5223,   8364,  -8365,  -5224,  -2939,   -953},
+    {   995,   3070,   5457,   8739,  -8740,  -5458,  -3071,   -996},
+    {  1039,   3207,   5701,   9129,  -9130,  -5702,  -3208,  -1040},
+    {  1086,   3350,   5956,   9537,  -9538,  -5957,  -3351,  -1087},
+    {  1134,   3499,   6220,   9960,  -9961,  -6221,  -3500,  -1135},
+    {  1185,   3655,   6497,  10404, -10405,  -6498,  -3656,  -1186},
+    {  1238,   3818,   6788,  10869, -10870,  -6789,  -3819,  -1239},
+    {  1293,   3989,   7091,  11355, -11356,  -7092,  -3990,  -1294},
+    {  1351,   4166,   7407,  11861, -11862,  -7408,  -4167,  -1352},
+    {  1411,   4352,   7738,  12390, -12391,  -7739,  -4353,  -1412},
+    {  1474,   4547,   8084,  12946, -12947,  -8085,  -4548,  -1475},
+    {  1540,   4750,   8444,  13522, -13523,  -8445,  -4751,  -1541},
+    {  1609,   4962,   8821,  14126, -14127,  -8822,  -4963,  -1610},
+    {  1680,   5183,   9215,  14756, -14757,  -9216,  -5184,  -1681},
+    {  1756,   5415,   9626,  15415, -15416,  -9627,  -5416,  -1757},
+    {  1834,   5657,  10057,  16104, -16105, -10058,  -5658,  -1835},
+    {  1916,   5909,  10505,  16822, -16823, -10506,  -5910,  -1917},
+    {  2001,   6173,  10975,  17574, -17575, -10976,  -6174,  -2002},
+    {  2091,   6448,  11463,  18356, -18357, -11464,  -6449,  -2092},
+    {  2184,   6736,  11974,  19175, -19176, -11975,  -6737,  -2185},
+    {  2282,   7037,  12510,  20032, -20033, -12511,  -7038,  -2283},
+    {  2383,   7351,  13068,  20926, -20927, -13069,  -7352,  -2384},
+    {  2490,   7679,  13652,  21861, -21862, -13653,  -7680,  -2491},
+    {  2601,   8021,  14260,  22834, -22835, -14261,  -8022,  -2602},
+    {  2717,   8380,  14897,  23854, -23855, -14898,  -8381,  -2718},
+    {  2838,   8753,  15561,  24918, -24919, -15562,  -8754,  -2839},
+    {  2965,   9144,  16256,  26031, -26032, -16257,  -9145,  -2966},
+    {  3097,   9553,  16982,  27193, -27194, -16983,  -9554,  -3098},
+    {  3236,   9979,  17740,  28407, -28408, -17741,  -9980,  -3237},
+    {  3380,  10424,  18532,  29675, -29676, -18533, -10425,  -3381},
+    {  3531,  10890,  19359,  31000, -31001, -19360, -10891,  -3532},
+    {  3688,  11375,  20222,  32382, -32383, -20223, -11376,  -3689},
+    {  3853,  11883,  21125,  32767, -32768, -21126, -11884,  -3854},
+    {  4025,  12414,  22069,  32767, -32768, -22070, -12415,  -4026},
+    {  4205,  12967,  23053,  32767, -32768, -23054, -12968,  -4206},
+    {  4392,  13546,  24082,  32767, -32768, -24083, -13547,  -4393},
+    {  4589,  14151,  25157,  32767, -32768, -25158, -14152,  -4590},
+    {  4793,  14783,  26280,  32767, -32768, -26281, -14784,  -4794},
+    {  5007,  15442,  27452,  32767, -32768, -27453, -15443,  -5008},
+    {  5231,  16132,  28678,  32767, -32768, -28679, -16133,  -5232},
+    {  5464,  16851,  29957,  32767, -32768, -29958, -16852,  -5465},
+    {  5708,  17603,  31294,  32767, -32768, -31295, -17604,  -5709},
+    {  5963,  18389,  32691,  32767, -32768, -32692, -18390,  -5964},
+    {  6229,  19210,  32767,  32767, -32768, -32768, -19211,  -6230},
+    {  6507,  20067,  32767,  32767, -32768, -32768, -20068,  -6508},
+    {  6797,  20963,  32767,  32767, -32768, -32768, -20964,  -6798},
+    {  7101,  21899,  32767,  32767, -32768, -32768, -21900,  -7102},
+    {  7418,  22876,  32767,  32767, -32768, -32768, -22877,  -7419},
+    {  7749,  23897,  32767,  32767, -32768, -32768, -23898,  -7750},
+    {  8095,  24964,  32767,  32767, -32768, -32768, -24965,  -8096},
+    {  8456,  26078,  32767,  32767, -32768, -32768, -26079,  -8457},
+    {  8833,  27242,  32767,  32767, -32768, -32768, -27243,  -8834},
+    {  9228,  28457,  32767,  32767, -32768, -32768, -28458,  -9229},
+    {  9639,  29727,  32767,  32767, -32768, -32768, -29728,  -9640}
 };
 
-static const uint16_t MACEtab4[][4] = {
-    { 0x0040, 0x00D8, 0xFF27, 0xFFBF },  { 0x0043, 0x00E2, 0xFF1D, 0xFFBC },
-    { 0x0046, 0x00EC, 0xFF13, 0xFFB9 },  { 0x004A, 0x00F6, 0xFF09, 0xFFB5 },
-    { 0x004D, 0x0101, 0xFEFE, 0xFFB2 },  { 0x0050, 0x010C, 0xFEF3, 0xFFAF },
-    { 0x0054, 0x0118, 0xFEE7, 0xFFAB },  { 0x0058, 0x0126, 0xFED9, 0xFFA7 },
-    { 0x005C, 0x0133, 0xFECC, 0xFFA3 },  { 0x0060, 0x0141, 0xFEBE, 0xFF9F },
-    { 0x0064, 0x014E, 0xFEB1, 0xFF9B },  { 0x0068, 0x015E, 0xFEA1, 0xFF97 },
-    { 0x006D, 0x016D, 0xFE92, 0xFF92 },  { 0x0072, 0x017E, 0xFE81, 0xFF8D },
-    { 0x0077, 0x018F, 0xFE70, 0xFF88 },  { 0x007C, 0x01A0, 0xFE5F, 0xFF83 },
-    { 0x0082, 0x01B2, 0xFE4D, 0xFF7D },  { 0x0088, 0x01C6, 0xFE39, 0xFF77 },
-    { 0x008E, 0x01DB, 0xFE24, 0xFF71 },  { 0x0094, 0x01EF, 0xFE10, 0xFF6B },
-    { 0x009B, 0x0207, 0xFDF8, 0xFF64 },  { 0x00A2, 0x021D, 0xFDE2, 0xFF5D },
-    { 0x00A9, 0x0234, 0xFDCB, 0xFF56 },  { 0x00B0, 0x024E, 0xFDB1, 0xFF4F },
-    { 0x00B9, 0x0269, 0xFD96, 0xFF46 },  { 0x00C1, 0x0284, 0xFD7B, 0xFF3E },
-    { 0x00C9, 0x02A1, 0xFD5E, 0xFF36 },  { 0x00D2, 0x02BF, 0xFD40, 0xFF2D },
-    { 0x00DC, 0x02DF, 0xFD20, 0xFF23 },  { 0x00E6, 0x02FF, 0xFD00, 0xFF19 },
-    { 0x00F0, 0x0321, 0xFCDE, 0xFF0F },  { 0x00FB, 0x0346, 0xFCB9, 0xFF04 },
-    { 0x0106, 0x036C, 0xFC93, 0xFEF9 },  { 0x0112, 0x0392, 0xFC6D, 0xFEED },
-    { 0x011E, 0x03BB, 0xFC44, 0xFEE1 },  { 0x012B, 0x03E5, 0xFC1A, 0xFED4 },
-    { 0x0138, 0x0411, 0xFBEE, 0xFEC7 },  { 0x0146, 0x0441, 0xFBBE, 0xFEB9 },
-    { 0x0155, 0x0472, 0xFB8D, 0xFEAA },  { 0x0164, 0x04A4, 0xFB5B, 0xFE9B },
-    { 0x0174, 0x04D9, 0xFB26, 0xFE8B },  { 0x0184, 0x0511, 0xFAEE, 0xFE7B },
-    { 0x0196, 0x054A, 0xFAB5, 0xFE69 },  { 0x01A8, 0x0587, 0xFA78, 0xFE57 },
-    { 0x01BB, 0x05C6, 0xFA39, 0xFE44 },  { 0x01CE, 0x0608, 0xF9F7, 0xFE31 },
-    { 0x01E3, 0x064D, 0xF9B2, 0xFE1C },  { 0x01F9, 0x0694, 0xF96B, 0xFE06 },
-    { 0x020F, 0x06E0, 0xF91F, 0xFDF0 },  { 0x0227, 0x072E, 0xF8D1, 0xFDD8 },
-    { 0x0240, 0x0781, 0xF87E, 0xFDBF },  { 0x0259, 0x07D7, 0xF828, 0xFDA6 },
-    { 0x0274, 0x0831, 0xF7CE, 0xFD8B },  { 0x0290, 0x088E, 0xF771, 0xFD6F },
-    { 0x02AE, 0x08F0, 0xF70F, 0xFD51 },  { 0x02CC, 0x0955, 0xF6AA, 0xFD33 },
-    { 0x02EC, 0x09C0, 0xF63F, 0xFD13 },  { 0x030D, 0x0A2F, 0xF5D0, 0xFCF2 },
-    { 0x0330, 0x0AA4, 0xF55B, 0xFCCF },  { 0x0355, 0x0B1E, 0xF4E1, 0xFCAA },
-    { 0x037B, 0x0B9D, 0xF462, 0xFC84 },  { 0x03A2, 0x0C20, 0xF3DF, 0xFC5D },
-    { 0x03CC, 0x0CAB, 0xF354, 0xFC33 },  { 0x03F8, 0x0D3D, 0xF2C2, 0xFC07 },
-    { 0x0425, 0x0DD3, 0xF22C, 0xFBDA },  { 0x0454, 0x0E72, 0xF18D, 0xFBAB },
-    { 0x0486, 0x0F16, 0xF0E9, 0xFB79 },  { 0x04B9, 0x0FC3, 0xF03C, 0xFB46 },
-    { 0x04F0, 0x1078, 0xEF87, 0xFB0F },  { 0x0528, 0x1133, 0xEECC, 0xFAD7 },
-    { 0x0563, 0x11F7, 0xEE08, 0xFA9C },  { 0x05A1, 0x12C6, 0xED39, 0xFA5E },
-    { 0x05E1, 0x139B, 0xEC64, 0xFA1E },  { 0x0624, 0x147C, 0xEB83, 0xF9DB },
-    { 0x066A, 0x1565, 0xEA9A, 0xF995 },  { 0x06B3, 0x165A, 0xE9A5, 0xF94C },
-    { 0x0700, 0x175A, 0xE8A5, 0xF8FF },  { 0x0750, 0x1865, 0xE79A, 0xF8AF },
-    { 0x07A3, 0x197A, 0xE685, 0xF85C },  { 0x07FB, 0x1A9D, 0xE562, 0xF804 },
-    { 0x0856, 0x1BCE, 0xE431, 0xF7A9 },  { 0x08B5, 0x1D0C, 0xE2F3, 0xF74A },
-    { 0x0919, 0x1E57, 0xE1A8, 0xF6E6 },  { 0x0980, 0x1FB2, 0xE04D, 0xF67F },
-    { 0x09ED, 0x211D, 0xDEE2, 0xF612 },  { 0x0A5F, 0x2296, 0xDD69, 0xF5A0 },
-    { 0x0AD5, 0x2422, 0xDBDD, 0xF52A },  { 0x0B51, 0x25BF, 0xDA40, 0xF4AE },
-    { 0x0BD2, 0x276E, 0xD891, 0xF42D },  { 0x0C5A, 0x2932, 0xD6CD, 0xF3A5 },
-    { 0x0CE7, 0x2B08, 0xD4F7, 0xF318 },  { 0x0D7A, 0x2CF4, 0xD30B, 0xF285 },
-    { 0x0E14, 0x2EF4, 0xD10B, 0xF1EB },  { 0x0EB5, 0x310C, 0xCEF3, 0xF14A },
-    { 0x0F5D, 0x333E, 0xCCC1, 0xF0A2 },  { 0x100C, 0x3587, 0xCA78, 0xEFF3 },
-    { 0x10C4, 0x37EB, 0xC814, 0xEF3B },  { 0x1183, 0x3A69, 0xC596, 0xEE7C },
-    { 0x124B, 0x3D05, 0xC2FA, 0xEDB4 },  { 0x131C, 0x3FBE, 0xC041, 0xECE3 },
-    { 0x13F7, 0x4296, 0xBD69, 0xEC08 },  { 0x14DB, 0x458F, 0xBA70, 0xEB24 },
-    { 0x15C9, 0x48AA, 0xB755, 0xEA36 },  { 0x16C2, 0x4BE9, 0xB416, 0xE93D },
-    { 0x17C6, 0x4F4C, 0xB0B3, 0xE839 },  { 0x18D6, 0x52D5, 0xAD2A, 0xE729 },
-    { 0x19F2, 0x5688, 0xA977, 0xE60D },  { 0x1B1A, 0x5A65, 0xA59A, 0xE4E5 },
-    { 0x1C50, 0x5E6D, 0xA192, 0xE3AF },  { 0x1D93, 0x62A4, 0x9D5B, 0xE26C },
-    { 0x1EE5, 0x670C, 0x98F3, 0xE11A },  { 0x2046, 0x6BA5, 0x945A, 0xDFB9 },
-    { 0x21B7, 0x7072, 0x8F8D, 0xDE48 },  { 0x2338, 0x7578, 0x8A87, 0xDCC7 },
-    { 0x24CB, 0x7AB5, 0x854A, 0xDB34 },  { 0x266F, 0x7FFF, 0x8000, 0xD990 },
-    { 0x2826, 0x7FFF, 0x8000, 0xD7D9 },  { 0x29F1, 0x7FFF, 0x8000, 0xD60E },
-    { 0x2BD0, 0x7FFF, 0x8000, 0xD42F },  { 0x2DC5, 0x7FFF, 0x8000, 0xD23A },
-    { 0x2FD0, 0x7FFF, 0x8000, 0xD02F },  { 0x31F2, 0x7FFF, 0x8000, 0xCE0D },
-    { 0x342C, 0x7FFF, 0x8000, 0xCBD3 },  { 0x3681, 0x7FFF, 0x8000, 0xC97E },
-    { 0x38F0, 0x7FFF, 0x8000, 0xC70F },  { 0x3B7A, 0x7FFF, 0x8000, 0xC485 },
-    { 0x3E22, 0x7FFF, 0x8000, 0xC1DD },  { 0x40E7, 0x7FFF, 0x8000, 0xBF18 },
+static const int16_t MACEtab4[][4] = {
+    {    64,    216,   -217,    -65}, {    67,    226,   -227,    -68},
+    {    70,    236,   -237,    -71}, {    74,    246,   -247,    -75},
+    {    77,    257,   -258,    -78}, {    80,    268,   -269,    -81},
+    {    84,    280,   -281,    -85}, {    88,    294,   -295,    -89},
+    {    92,    307,   -308,    -93}, {    96,    321,   -322,    -97},
+    {   100,    334,   -335,   -101}, {   104,    350,   -351,   -105},
+    {   109,    365,   -366,   -110}, {   114,    382,   -383,   -115},
+    {   119,    399,   -400,   -120}, {   124,    416,   -417,   -125},
+    {   130,    434,   -435,   -131}, {   136,    454,   -455,   -137},
+    {   142,    475,   -476,   -143}, {   148,    495,   -496,   -149},
+    {   155,    519,   -520,   -156}, {   162,    541,   -542,   -163},
+    {   169,    564,   -565,   -170}, {   176,    590,   -591,   -177},
+    {   185,    617,   -618,   -186}, {   193,    644,   -645,   -194},
+    {   201,    673,   -674,   -202}, {   210,    703,   -704,   -211},
+    {   220,    735,   -736,   -221}, {   230,    767,   -768,   -231},
+    {   240,    801,   -802,   -241}, {   251,    838,   -839,   -252},
+    {   262,    876,   -877,   -263}, {   274,    914,   -915,   -275},
+    {   286,    955,   -956,   -287}, {   299,    997,   -998,   -300},
+    {   312,   1041,  -1042,   -313}, {   326,   1089,  -1090,   -327},
+    {   341,   1138,  -1139,   -342}, {   356,   1188,  -1189,   -357},
+    {   372,   1241,  -1242,   -373}, {   388,   1297,  -1298,   -389},
+    {   406,   1354,  -1355,   -407}, {   424,   1415,  -1416,   -425},
+    {   443,   1478,  -1479,   -444}, {   462,   1544,  -1545,   -463},
+    {   483,   1613,  -1614,   -484}, {   505,   1684,  -1685,   -506},
+    {   527,   1760,  -1761,   -528}, {   551,   1838,  -1839,   -552},
+    {   576,   1921,  -1922,   -577}, {   601,   2007,  -2008,   -602},
+    {   628,   2097,  -2098,   -629}, {   656,   2190,  -2191,   -657},
+    {   686,   2288,  -2289,   -687}, {   716,   2389,  -2390,   -717},
+    {   748,   2496,  -2497,   -749}, {   781,   2607,  -2608,   -782},
+    {   816,   2724,  -2725,   -817}, {   853,   2846,  -2847,   -854},
+    {   891,   2973,  -2974,   -892}, {   930,   3104,  -3105,   -931},
+    {   972,   3243,  -3244,   -973}, {  1016,   3389,  -3390,  -1017},
+    {  1061,   3539,  -3540,  -1062}, {  1108,   3698,  -3699,  -1109},
+    {  1158,   3862,  -3863,  -1159}, {  1209,   4035,  -4036,  -1210},
+    {  1264,   4216,  -4217,  -1265}, {  1320,   4403,  -4404,  -1321},
+    {  1379,   4599,  -4600,  -1380}, {  1441,   4806,  -4807,  -1442},
+    {  1505,   5019,  -5020,  -1506}, {  1572,   5244,  -5245,  -1573},
+    {  1642,   5477,  -5478,  -1643}, {  1715,   5722,  -5723,  -1716},
+    {  1792,   5978,  -5979,  -1793}, {  1872,   6245,  -6246,  -1873},
+    {  1955,   6522,  -6523,  -1956}, {  2043,   6813,  -6814,  -2044},
+    {  2134,   7118,  -7119,  -2135}, {  2229,   7436,  -7437,  -2230},
+    {  2329,   7767,  -7768,  -2330}, {  2432,   8114,  -8115,  -2433},
+    {  2541,   8477,  -8478,  -2542}, {  2655,   8854,  -8855,  -2656},
+    {  2773,   9250,  -9251,  -2774}, {  2897,   9663,  -9664,  -2898},
+    {  3026,  10094, -10095,  -3027}, {  3162,  10546, -10547,  -3163},
+    {  3303,  11016, -11017,  -3304}, {  3450,  11508, -11509,  -3451},
+    {  3604,  12020, -12021,  -3605}, {  3765,  12556, -12557,  -3766},
+    {  3933,  13118, -13119,  -3934}, {  4108,  13703, -13704,  -4109},
+    {  4292,  14315, -14316,  -4293}, {  4483,  14953, -14954,  -4484},
+    {  4683,  15621, -15622,  -4684}, {  4892,  16318, -16319,  -4893},
+    {  5111,  17046, -17047,  -5112}, {  5339,  17807, -17808,  -5340},
+    {  5577,  18602, -18603,  -5578}, {  5826,  19433, -19434,  -5827},
+    {  6086,  20300, -20301,  -6087}, {  6358,  21205, -21206,  -6359},
+    {  6642,  22152, -22153,  -6643}, {  6938,  23141, -23142,  -6939},
+    {  7248,  24173, -24174,  -7249}, {  7571,  25252, -25253,  -7572},
+    {  7909,  26380, -26381,  -7910}, {  8262,  27557, -27558,  -8263},
+    {  8631,  28786, -28787,  -8632}, {  9016,  30072, -30073,  -9017},
+    {  9419,  31413, -31414,  -9420}, {  9839,  32767, -32768,  -9840},
+    { 10278,  32767, -32768, -10279}, { 10737,  32767, -32768, -10738},
+    { 11216,  32767, -32768, -11217}, { 11717,  32767, -32768, -11718},
+    { 12240,  32767, -32768, -12241}, { 12786,  32767, -32768, -12787},
+    { 13356,  32767, -32768, -13357}, { 13953,  32767, -32768, -13954},
+    { 14576,  32767, -32768, -14577}, { 15226,  32767, -32768, -15227},
+    { 15906,  32767, -32768, -15907}, { 16615,  32767, -32768, -16616}
 };
 
 #define QT_8S_2_16S(x) (((x) & 0xFF00) | (((x) >> 8) & 0xFF))