| /* |
| * Copyright (c) 2017, Alliance for Open Media. All rights reserved |
| * |
| * This source code is subject to the terms of the BSD 2 Clause License and |
| * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| * was not distributed with this source code in the LICENSE file, you can |
| * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| * Media Patent License 1.0 was not distributed with this source code in the |
| * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| */ |
| |
| #ifndef GFT_COEFFICIENTS_H_ |
| #define GFT_COEFFICIENTS_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| static const int32_t gft4_inter[7][16] = { |
| { 4, 158, 1407, 2527, 14, 377, 2499, -1415, 2894, 115, -30, 5, 118, -2865, |
| 405, -46 }, |
| { 7, 317, 2813, 5054, 27, 753, 4998, -2830, 5788, 230, -60, 11, 236, -5730, |
| 810, -92 }, |
| { 14, 633, 5627, 10107, 55, 1507, 9996, -5659, 11575, 459, -120, 22, 472, |
| -11460, 1620, -185 }, |
| { 28, 1266, 11254, 20214, 110, 3013, 19992, -11319, 23151, 918, -241, 44, 943, |
| -22920, 3241, -369 }, |
| { 57, 2533, 22508, 40429, 220, 6027, 39983, -22638, 46302, 1836, -482, 88, |
| 1887, -45841, 6481, -739 }, |
| { 114, 5066, 45015, 80857, 440, 12054, 79966, -45275, 92604, 3673, -963, 176, |
| 3774, -91681, 12962, -1478 }, |
| { 227, 10132, 90031, 161714, 879, 24108, 159932, -90551, 185208, 7346, -1927, |
| 352, 7548, -183363, 25925, -2955 }, |
| }; |
| |
| static const int32_t gft8_inter[7][64] = { |
| { 41, 69, 105, 309, 799, 1473, 2314, 2916, 75, 118, 110, |
| 385, 1871, 2466, 874, -2501, -113, -104, -112, -883, -2244, -566, |
| 2964, -1350, -196, -146, -428, -1634, -2056, 2763, -1348, 433, -498, |
| -550, -1163, -3303, 1828, -746, 225, 110, -2088, -2394, -2182, 1373, |
| -153, 118, 53, -40, 2923, 284, -2817, 447, -108, 1, 60, |
| -12, 1888, -3258, 1583, -290, 42, 55, -25, 5 }, |
| { 83, 139, 211, 617, 1599, 2946, 4629, 5831, 151, 236, 219, |
| 769, 3741, 4932, 1748, -5002, -225, -207, -223, -1766, -4488, -1132, |
| 5927, -2700, -392, -291, -857, -3269, -4112, 5526, -2696, 865, -997, |
| -1101, -2326, -6607, 3655, -1493, 450, 219, -4176, -4787, -4365, 2746, |
| -305, 236, 105, -79, 5847, 567, -5634, 894, -217, 1, 121, |
| -25, 3777, -6516, 3167, -580, 84, 109, -49, 9 }, |
| { 166, 277, 421, 1235, 3197, 5891, 9257, 11662, 302, 472, |
| 438, 1539, 7482, 9864, 3496, -10003, -450, -415, -446, -3532, |
| -8976, -2263, 11855, -5399, -784, -583, -1714, -6538, -8223, 11051, |
| -5391, 1730, -1993, -2201, -4652, -13214, 7311, -2986, 900, 438, |
| -8351, -9574, -8729, 5492, -611, 472, 211, -159, 11693, 1134, |
| -11268, 1788, -434, 3, 242, -50, 7554, -13032, 6334, -1161, |
| 168, 218, -99, 19 }, |
| { 331, 554, 843, 2470, 6394, 11783, 18514, 23324, 603, 943, |
| 876, 3078, 14965, 19727, 6992, -20006, -901, -830, -893, -7065, |
| -17952, -4527, 23709, -10799, -1567, -1165, -3427, -13076, -16446, 22102, |
| -10782, 3460, -3987, -4403, -9304, -26428, 14622, -5972, 1799, 876, |
| -16702, -19148, -17459, 10985, -1222, 944, 422, -317, 23386, 2269, |
| -22536, 3577, -867, 5, 484, -99, 15107, -26064, 12668, -2321, |
| 337, 436, -198, 37 }, |
| { 662, 1108, 1686, 4940, 12788, 23566, 37028, 46649, |
| 1206, 1886, 1753, 6155, 29930, 39455, 13983, -40013, |
| -1801, -1660, -1786, -14130, -35905, -9054, 47419, -21597, |
| -3134, -2330, -6855, -26151, -32892, 44204, -21565, 6920, |
| -7973, -8805, -18609, -52856, 29243, -11944, 3599, 1752, |
| -33404, -38297, -34917, 21970, -2444, 1888, 843, -634, |
| 46773, 4537, -45072, 7154, -1735, 11, 968, -199, |
| 30214, -52127, 25335, -4643, 673, 872, -396, 75 }, |
| { 1324, 2216, 3371, 9879, 25576, 47132, 74056, 93297, |
| 2412, 3773, 3506, 12311, 59859, 78909, 27967, -80025, |
| -3602, -3320, -3572, -28260, -71810, -18107, 94838, -43194, |
| -6268, -4661, -13709, -52302, -65784, 88408, -43130, 13840, |
| -15947, -17610, -37217, -105712, 58486, -23887, 7197, 3505, |
| -66808, -76593, -69834, 43939, -4887, 3775, 1687, -1268, |
| 93546, 9074, -90145, 14308, -3469, 22, 1936, -398, |
| 60429, -104255, 50671, -9286, 1347, 1745, -792, 149 }, |
| { 2648, 4433, 6742, 19759, 51152, 94263, 148112, 186595, |
| 4824, 7546, 7012, 24622, 119718, 157818, 55933, -160051, |
| -7204, -6639, -7143, -56519, -143620, -36215, 189676, -86389, |
| -12536, -9322, -27419, -104605, -131569, 176817, -86260, 27681, |
| -31893, -35221, -74435, -211424, 116973, -47775, 14394, 7010, |
| -133616, -153186, -139668, 87878, -9775, 7551, 3374, -2536, |
| 187092, 18149, -180289, 28616, -6938, 44, 3871, -795, |
| 120857, -208509, 101342, -18571, 2694, 3490, -1583, 298 }, |
| }; |
| |
| static const int32_t klt4_inter[7][16] = { |
| { -436, -213, 1439, 2466, -710, 1313, 2138, -1260, 2147, 1852, -79, 586, 1756, |
| -1786, 1319, -613 }, |
| { -872, -425, 2878, 4933, -1420, 2627, 4277, -2520, 4294, 3704, -159, 1171, |
| 3512, -3572, 2638, -1226 }, |
| { -1744, -850, 5756, 9865, -2840, 5253, 8553, -5040, 8588, 7407, -317, 2342, |
| 7025, -7143, 5276, -2451 }, |
| { -3489, -1700, 11511, 19731, -5680, 10506, 17107, -10079, 17177, 14815, -635, |
| 4684, 14049, -14287, 10551, -4903 }, |
| { -6978, -3401, 23022, 39462, -11361, 21012, 34213, -20158, 34354, 29630, |
| -1270, 9369, 28099, -28574, 21103, -9805 }, |
| { -13955, -6801, 46044, 78923, -22722, 42025, 68426, -40317, 68707, 59260, |
| -2540, 18737, 56198, -57148, 42205, -19610 }, |
| { -27911, -13602, 92088, 157846, -45444, 84050, 136852, -80633, 137415, |
| 118519, -5080, 37475, 112396, -114296, 84411, -39221 }, |
| }; |
| |
| static const int32_t klt8_inter[7][64] = { |
| { -2, 24, 154, 253, 111, 811, 2450, 3165, 71, 211, -106, |
| -381, 1392, 3127, 1272, -1801, -181, 75, 478, -1131, -3117, -263, |
| 1957, -1272, 116, 428, -1369, -3425, -185, 674, -1160, 1069, 116, |
| -1857, -3056, 81, 647, -1162, 1350, -614, 3126, 2235, -366, -45, |
| 520, -968, 744, -339, 2317, -1713, -451, 1013, -1685, 1676, -1166, |
| 488, 1255, -2273, 2227, -1589, 1245, -850, 497, -174 }, |
| { -5, 48, 308, 506, 223, 1622, 4900, 6330, 141, 422, -212, |
| -762, 2783, 6253, 2543, -3601, -362, 150, 956, -2262, -6234, -526, |
| 3914, -2543, 232, 855, -2738, -6850, -369, 1348, -2320, 2138, 232, |
| -3714, -6113, 163, 1293, -2323, 2701, -1228, 6252, 4470, -731, -91, |
| 1040, -1937, 1487, -678, 4633, -3426, -902, 2025, -3370, 3353, -2331, |
| 976, 2510, -4546, 4455, -3178, 2491, -1699, 994, -348 }, |
| { -9, 96, 616, 1012, 445, 3244, 9801, 12659, 282, 844, |
| -424, -1523, 5567, 12506, 5086, -7202, -724, 301, 1912, -4524, |
| -12468, -1053, 7828, -5086, 464, 1710, -5476, -13700, -739, 2697, |
| -4639, 4275, 464, -7428, -12225, 326, 2587, -4647, 5401, -2457, |
| 12503, 8940, -1463, -181, 2079, -3874, 2975, -1356, 9267, -6853, |
| -1804, 4051, -6740, 6706, -4663, 1952, 5020, -9091, 8910, -6355, |
| 4982, -3399, 1989, -697 }, |
| { -19, 192, 1232, 2023, 891, 6487, 19601, 25318, |
| 564, 1689, -849, -3047, 11134, 25013, 10173, -14404, |
| -1447, 601, 3825, -9048, -24936, -2106, 15656, -10172, |
| 928, 3420, -10953, -27400, -1478, 5394, -9278, 8550, |
| 928, -14855, -24450, 651, 5173, -9294, 10802, -4913, |
| 25006, 17879, -2925, -362, 4158, -7747, 5949, -2713, |
| 18533, -13705, -3608, 8102, -13479, 13412, -9325, 3903, |
| 10040, -18183, 17819, -12710, 9964, -6798, 3977, -1394 }, |
| { -38, 384, 2463, 4047, 1782, 12975, 39202, 50636, |
| 1128, 3377, -1698, -6094, 22268, 50026, 20345, -28808, |
| -2895, 1202, 7649, -18096, -49871, -4211, 31312, -20344, |
| 1856, 6841, -21906, -54800, -2955, 10788, -18556, 17100, |
| 1857, -29711, -48900, 1302, 10346, -18588, 21605, -9827, |
| 50013, 35759, -5850, -724, 8317, -15494, 11899, -5425, |
| 37066, -27411, -7216, 16204, -26958, 26824, -18651, 7806, |
| 20080, -36365, 35639, -25421, 19928, -13596, 7955, -2788 }, |
| { -76, 767, 4926, 8094, 3564, 25950, 78404, 101273, |
| 2257, 6755, -3395, -12187, 44535, 100052, 40691, -57616, |
| -5789, 2405, 15298, -36192, -99742, -8423, 62623, -40688, |
| 3712, 13682, -43812, -109599, -5911, 21575, -37112, 34201, |
| 3713, -59421, -97800, 2604, 20692, -37175, 43210, -19653, |
| 100026, 71517, -11700, -1449, 16634, -30989, 23797, -10850, |
| 74133, -54822, -14432, 32408, -53916, 53648, -37302, 15612, |
| 40161, -72730, 71278, -50841, 39855, -27191, 15910, -5575 }, |
| { -152, 1534, 9852, 16187, 7127, 51899, 156808, 202546, |
| 4513, 13510, -6791, -24374, 89071, 200103, 81381, -115233, |
| -11578, 4809, 30596, -72384, -199485, -16846, 125246, -81376, |
| 7424, 27364, -87623, -219199, -11822, 43151, -74224, 68402, |
| 7426, -118842, -195601, 5209, 41385, -74350, 86420, -39306, |
| 200051, 143034, -23401, -2897, 33268, -61977, 47594, -21701, |
| 148265, -109644, -28863, 64815, -107833, 107295, -74604, 31225, |
| 80321, -145460, 142555, -101682, 79711, -54382, 31820, -11150 }, |
| }; |
| |
| static const int32_t lgt4_inter[7][16] = { |
| { 3, 154, 1403, 2529, 13, 368, 2502, -1411, 2894, 113, -29, 5, 116, -2866, |
| 396, -45 }, |
| { 7, 308, 2807, 5058, 27, 737, 5005, -2822, 5788, 227, -58, 11, 233, -5733, |
| 792, -90 }, |
| { 14, 617, 5614, 10115, 53, 1473, 10009, -5645, 11576, 453, -116, 21, 465, |
| -11466, 1584, -180 }, |
| { 27, 1233, 11227, 20231, 107, 2947, 20018, -11289, 23152, 907, -233, 43, 930, |
| -22931, 3167, -361 }, |
| { 55, 2467, 22455, 40462, 213, 5894, 40036, -22578, 46303, 1813, -465, 85, |
| 1861, -45863, 6334, -722 }, |
| { 110, 4934, 44910, 80924, 426, 11787, 80073, -45157, 92606, 3626, -931, 170, |
| 3722, -91725, 12669, -1443 }, |
| { 219, 9868, 89820, 161848, 853, 23575, 160146, -90314, 185212, 7253, -1862, |
| 340, 7444, -183450, 25338, -2887 }, |
| }; |
| |
| static const int32_t lgt8_inter[7][64] = { |
| { 2, 6, 27, 170, 765, 1489, 2353, 2900, 6, 22, 89, |
| 503, 1923, 2456, 828, -2470, -14, -44, -159, -782, -2209, -581, |
| 2958, -1472, -49, -127, -384, -1479, -2178, 2792, -1336, 315, -350, |
| -659, -1441, -3314, 1658, -627, 140, -19, -2275, -2357, -1993, 1402, |
| -321, 67, -9, 1, 2839, 161, -2825, 834, -120, 16, -2, |
| 0, 1848, -3278, 1602, -229, 19, -2, 0, 0 }, |
| { 3, 13, 55, 340, 1529, 2979, 4706, 5800, 13, 44, 177, |
| 1007, 3846, 4911, 1655, -4941, -29, -88, -319, -1565, -4419, -1162, |
| 5917, -2944, -99, -253, -769, -2959, -4357, 5583, -2672, 630, -699, |
| -1319, -2882, -6627, 3317, -1254, 280, -39, -4551, -4713, -3987, 2804, |
| -642, 133, -18, 2, 5678, 323, -5650, 1667, -239, 33, -3, |
| 0, 3696, -6556, 3203, -458, 39, -3, 0, 0 }, |
| { 7, 25, 110, 680, 3058, 5958, 9411, 11599, 26, 88, |
| 354, 2014, 7692, 9823, 3311, -9881, -58, -176, -638, -3130, |
| -8837, -2325, 11834, -5887, -198, -507, -1537, -5918, -8714, 11166, |
| -5343, 1260, -1399, -2637, -5763, -13255, 6634, -2509, 561, -77, |
| -9101, -9426, -7974, 5608, -1284, 266, -36, 3, 11356, 645, |
| -11300, 3335, -478, 66, -6, 0, 7392, -13112, 6406, -916, |
| 78, -7, 0, 0 }, |
| { 14, 51, 219, 1361, 6117, 11915, 18822, 23198, |
| 51, 175, 708, 4028, 15384, 19645, 6622, -19762, |
| -115, -353, -1275, -6260, -17674, -4649, 23668, -11775, |
| -396, -1014, -3075, -11835, -17428, 22333, -10686, 2521, |
| -2797, -5274, -11526, -26510, 13268, -5017, 1121, -154, |
| -18202, -18853, -15947, 11217, -2567, 532, -72, 6, |
| 22713, 1290, -22601, 6669, -957, 131, -12, 1, |
| 14784, -26223, 12812, -1833, 156, -13, 1, 0 }, |
| { 28, 101, 438, 2721, 12233, 23831, 37645, 46397, |
| 102, 351, 1417, 8055, 30767, 39290, 13243, -39525, |
| -231, -705, -2550, -12519, -35348, -9299, 47335, -23550, |
| -792, -2027, -6149, -23671, -34856, 44665, -21372, 5041, |
| -5594, -10549, -23053, -53019, 26535, -10035, 2242, -308, |
| -36404, -37705, -31894, 22433, -5134, 1064, -143, 13, |
| 45426, 2581, -45201, 13338, -1914, 262, -24, 2, |
| 29567, -52446, 25625, -3665, 312, -26, 2, 0 }, |
| { 55, 203, 876, 5442, 24467, 47662, 75290, 92794, |
| 205, 701, 2834, 16111, 61535, 78580, 26487, -79050, |
| -462, -1411, -5100, -25038, -70697, -18598, 94670, -47099, |
| -1584, -4054, -12299, -47342, -69711, 89330, -42745, 10082, |
| -11188, -21098, -46105, -106038, 53071, -20070, 4485, -616, |
| -72808, -75411, -63788, 44866, -10269, 2128, -287, 26, |
| 90852, 5161, -90403, 26677, -3828, 525, -49, 3, |
| 59134, -104892, 51250, -7331, 624, -53, 3, 0 }, |
| { 110, 405, 1753, 10885, 48933, 95323, 150579, 185587, |
| 410, 1403, 5667, 32222, 123070, 157160, 52973, -158099, |
| -924, -2822, -10200, -50077, -141394, -37196, 189340, -94199, |
| -3167, -8108, -24598, -94684, -139423, 178661, -85490, 20165, |
| -22377, -42195, -92210, -212077, 106141, -40139, 8969, -1232, |
| -145616, -150822, -127577, 89733, -20538, 4257, -573, 52, |
| 181703, 10322, -180805, 53353, -7656, 1050, -97, 6, |
| 118268, -209784, 102499, -14662, 1248, -105, 6, 0 }, |
| }; |
| |
| static const int32_t gft4_intra[7][16] = { |
| { 3, 246, 1534, 2445, 8, 511, 2391, -1552, 151, 2836, -563, 68, 2892, -150, |
| 21, -2 }, |
| { 7, 492, 3067, 4889, 17, 1023, 4783, -3103, 302, 5672, -1126, 136, 5785, |
| -300, 42, -4 }, |
| { 13, 983, 6134, 9779, 33, 2046, 9566, -6207, 604, 11345, -2252, 272, 11569, |
| -600, 83, -7 }, |
| { 26, 1966, 12269, 19557, 67, 4092, 19132, -12414, 1209, 22690, -4504, 543, |
| 23139, -1199, 166, -15 }, |
| { 53, 3932, 24538, 39114, 134, 8183, 38264, -24827, 2418, 45380, -9009, 1086, |
| 46278, -2399, 332, -29 }, |
| { 105, 7865, 49075, 78228, 267, 16366, 76528, -49654, 4835, 90759, -18017, |
| 2172, 92555, -4798, 665, -59 }, |
| { 210, 15729, 98151, 156457, 535, 32732, 153055, -99308, 9671, 181518, -36035, |
| 4344, 185110, -9595, 1329, -118 }, |
| }; |
| |
| static const int32_t gft8_intra[7][64] = { |
| { 39, 42, 118, 608, 1342, 2038, 2279, 2290, 92, 100, 262, |
| 1330, 2373, 1586, -658, -2518, 140, 162, 391, 1690, 1800, -1876, |
| -1799, 1930, -148, -189, -418, -1331, -255, 2349, -2781, 1207, -476, |
| -652, -1252, -2738, 2409, -1031, 428, -110, -1377, -2156, -2751, 1558, |
| -480, 81, 0, 0, 3089, 1234, -2379, 226, -36, 3, 7, |
| -1, 2249, -3180, 1254, -192, 17, -1, -2, 0 }, |
| { 78, 85, 236, 1216, 2685, 4076, 4557, 4580, 183, 200, 524, |
| 2660, 4746, 3172, -1315, -5036, 279, 323, 782, 3381, 3601, -3752, |
| -3598, 3859, -296, -378, -836, -2662, -510, 4699, -5562, 2413, -951, |
| -1304, -2504, -5475, 4819, -2062, 857, -220, -2754, -4311, -5502, 3116, |
| -960, 163, 1, 0, 6179, 2467, -4758, 451, -72, 6, 13, |
| -1, 4499, -6359, 2507, -384, 33, -2, -4, 0 }, |
| { 156, 170, 472, 2432, 5369, 8151, 9115, 9160, 367, 400, |
| 1047, 5319, 9492, 6345, -2631, -10073, 559, 647, 1563, 6762, |
| 7202, -7504, -7196, 7719, -592, -757, -1672, -5323, -1020, 9398, |
| -11123, 4827, -1902, -2608, -5008, -10951, 9637, -4123, 1714, -439, |
| -5509, -8623, -11005, 6232, -1919, 325, 2, 0, 12357, 4935, |
| -9516, 903, -144, 11, 26, -2, 8997, -12718, 5014, -769, |
| 66, -3, -8, 0 }, |
| { 311, 340, 944, 4864, 10739, 16302, 18229, 18319, 734, 800, |
| 2094, 10639, 18985, 12690, -5262, -20146, 1118, 1294, 3127, 13523, |
| 14404, -15008, -14392, 15438, -1184, -1514, -3343, -10646, -2041, 18796, |
| -22246, 9654, -3805, -5217, -10016, -21902, 19275, -8246, 3427, -879, |
| -11018, -17245, -22010, 12464, -3839, 650, 4, -1, 24714, 9870, |
| -19031, 1806, -288, 22, 52, -4, 17994, -25436, 10029, -1537, |
| 132, -6, -15, 1 }, |
| { 622, 679, 1888, 9728, 21478, 32605, 36458, 36638, 1467, 1600, |
| 4188, 21278, 37969, 25380, -10524, -40292, 2235, 2587, 6253, 27047, |
| 28808, -30016, -28783, 30876, -2368, -3027, -6687, -21293, -4082, 37591, |
| -44492, 19308, -7609, -10433, -20032, -43803, 38550, -16493, 6855, -1757, |
| -22035, -34491, -44019, 24929, -7678, 1301, 8, -1, 49429, 19739, |
| -38062, 3611, -577, 44, 105, -8, 35988, -50872, 20057, -3075, |
| 264, -12, -31, 1 }, |
| { 1244, 1359, 3777, 19455, 42956, 65209, 72916, 73277, |
| 2935, 3200, 8377, 42555, 75939, 50759, -21048, -80583, |
| 4471, 5174, 12506, 54093, 57616, -60032, -57566, 61752, |
| -4736, -6054, -13373, -42586, -8163, 75183, -88984, 38615, |
| -15219, -20867, -40065, -87607, 77099, -32985, 13710, -3515, |
| -44071, -68981, -88039, 49858, -15356, 2602, 16, -2, |
| 98857, 39479, -76125, 7223, -1153, 89, 210, -17, |
| 71977, -101745, 40114, -6150, 529, -24, -62, 3 }, |
| { 2489, 2718, 7553, 38911, 85912, 130418, 145833, 146553, |
| 5870, 6400, 16754, 85111, 151878, 101519, -42096, -161166, |
| 8941, 10349, 25013, 108187, 115232, -120064, -115133, 123504, |
| -9473, -12109, -26747, -85171, -16326, 150366, -177968, 77230, |
| -30438, -41734, -80130, -175214, 154199, -65971, 27420, -7030, |
| -88141, -137962, -176078, 99716, -30711, 5204, 32, -4, |
| 197715, 78957, -152249, 14445, -2306, 177, 419, -34, |
| 143954, -203489, 80228, -12299, 1058, -48, -124, 6 }, |
| }; |
| |
| static const int32_t klt4_intra[7][16] = { |
| { -447, -434, 1338, 2492, -495, 1424, 2242, -1044, 2222, 1668, -198, 795, |
| 1734, -1842, 1239, -674 }, |
| { -894, -867, 2675, 4985, -990, 2848, 4484, -2088, 4444, 3335, -397, 1590, |
| 3468, -3684, 2477, -1349 }, |
| { -1787, -1734, 5350, 9969, -1980, 5695, 8967, -4177, 8887, 6671, -793, 3180, |
| 6937, -7367, 4955, -2697 }, |
| { -3575, -3469, 10701, 19939, -3961, 11391, 17935, -8354, 17774, 13341, -1586, |
| 6359, 13874, -14734, 9910, -5394 }, |
| { -7150, -6938, 21402, 39877, -7922, 22782, 35869, -16707, 35549, 26682, |
| -3172, 12718, 27747, -29469, 19819, -10789 }, |
| { -14299, -13875, 42804, 79755, -15843, 45563, 71738, -33415, 71098, 53365, |
| -6344, 25436, 55494, -58937, 39638, -21577 }, |
| { -28599, -27750, 85607, 159509, -31686, 91126, 143476, -66830, 142195, |
| 106730, -12688, 50872, 110988, -117875, 79276, -43154 }, |
| }; |
| |
| static const int32_t klt8_intra[7][64] = { |
| { 9, 24, -42, 237, 1253, 2213, 2459, 2051, 73, -258, -238, |
| 1033, 2662, 1605, -1088, -2176, 28, -236, 224, 2259, 1574, -1933, |
| -1010, 2081, -114, -998, -2501, -2186, 874, 170, -1503, 1297, 1543, |
| 2846, 1287, -1110, 520, 612, -1429, 850, 2993, 531, -1954, 467, |
| 196, -1042, 1356, -734, 2075, -2010, 649, 914, -1511, 1626, -1333, |
| 688, 1056, -1799, 2126, -1868, 1512, -1197, 783, -295 }, |
| { 18, 47, -85, 473, 2507, 4426, 4917, 4102, 146, -516, -475, |
| 2065, 5325, 3210, -2176, -4352, 56, -472, 448, 4517, 3148, -3867, |
| -2020, 4163, -228, -1996, -5003, -4371, 1748, 340, -3006, 2594, 3085, |
| 5693, 2573, -2219, 1039, 1225, -2858, 1700, 5986, 1062, -3908, 933, |
| 391, -2084, 2712, -1469, 4149, -4020, 1297, 1829, -3021, 3252, -2665, |
| 1377, 2111, -3598, 4252, -3737, 3023, -2394, 1565, -590 }, |
| { 36, 95, -170, 946, 5014, 8852, 9835, 8203, 293, -1031, |
| -951, 4131, 10650, 6420, -4353, -8703, 113, -944, 896, 9035, |
| 6297, -7734, -4039, 8326, -456, -3991, -10005, -8743, 3497, 679, |
| -6013, 5188, 6171, 11385, 5146, -4438, 2079, 2450, -5716, 3399, |
| 11973, 2124, -7815, 1866, 783, -4167, 5423, -2938, 8299, -8040, |
| 2595, 3657, -6042, 6504, -5331, 2754, 4223, -7195, 8503, -7473, |
| 6047, -4788, 3131, -1180 }, |
| { 72, 189, -340, 1893, 10028, 17703, 19669, 16406, |
| 585, -2062, -1901, 8261, 21299, 12839, -8705, -17407, |
| 226, -1887, 1792, 18070, 12594, -15468, -8078, 16652, |
| -911, -7983, -20010, -17486, 6993, 1359, -12026, 10376, |
| 12342, 22771, 10292, -8877, 4158, 4899, -11432, 6799, |
| 23946, 4248, -15630, 3733, 1566, -8334, 10846, -5875, |
| 16598, -16079, 5189, 7315, -12085, 13009, -10662, 5508, |
| 8445, -14390, 17007, -14946, 12093, -9576, 6261, -2360 }, |
| { 144, 378, -680, 3785, 20055, 35406, 39339, 32813, |
| 1170, -4124, -3803, 16523, 42598, 25679, -17411, -34813, |
| 451, -3774, 3585, 36140, 25187, -30936, -16157, 33304, |
| -1822, -15965, -40020, -34972, 13987, 2717, -24051, 20751, |
| 24683, 45542, 20584, -17753, 8316, 9798, -22864, 13597, |
| 47891, 8496, -31260, 7466, 3131, -16668, 21692, -11751, |
| 33196, -32158, 10379, 14630, -24170, 26017, -21323, 11016, |
| 16890, -28780, 34014, -29893, 24187, -19152, 12523, -4720 }, |
| { 287, 757, -1360, 7571, 40110, 70813, 78678, 65625, |
| 2340, -8249, -7606, 33045, 85197, 51358, -34822, -69627, |
| 902, -7548, 7169, 72279, 50374, -61872, -32313, 66608, |
| -3644, -31930, -80041, -69944, 27973, 5435, -48102, 41503, |
| 49366, 91083, 41168, -35506, 16631, 19597, -45727, 27194, |
| 95783, 16992, -62520, 14931, 6263, -33337, 43384, -23501, |
| 66391, -64316, 20758, 29260, -48340, 52035, -42646, 22032, |
| 33780, -57561, 68027, -59786, 48373, -38303, 25046, -9440 }, |
| { 574, 1513, -2719, 15141, 80220, 141625, 157355, 131250, |
| 4681, -16498, -15212, 66091, 170393, 102715, -69644, -139253, |
| 1804, -15096, 14338, 144559, 100748, -123744, -64626, 133215, |
| -7288, -63861, -160082, -139888, 55947, 10869, -96204, 83005, |
| 98732, 182167, 82337, -71012, 33262, 39194, -91455, 54388, |
| 191565, 33984, -125041, 29863, 12525, -66674, 86769, -47003, |
| 132782, -128632, 41516, 58520, -96680, 104070, -85293, 44063, |
| 67560, -115121, 136054, -119571, 96747, -76607, 50092, -18879 }, |
| }; |
| |
| static const int32_t lgt4_intra[7][16] = { |
| { 3, 256, 1537, 2441, 9, 529, 2384, -1557, 146, 2832, -583, 70, 2893, -145, |
| 21, -2 }, |
| { 7, 512, 3074, 4883, 17, 1059, 4769, -3114, 293, 5665, -1167, 141, 5785, |
| -291, 41, -4 }, |
| { 14, 1023, 6149, 9765, 35, 2117, 9537, -6227, 586, 11329, -2334, 281, 11570, |
| -581, 82, -7 }, |
| { 28, 2046, 12298, 19531, 69, 4235, 19074, -12454, 1172, 22658, -4667, 563, |
| 23141, -1163, 164, -14 }, |
| { 55, 4093, 24595, 39061, 139, 8470, 38148, -24908, 2344, 45317, -9335, 1126, |
| 46281, -2325, 329, -29 }, |
| { 110, 8186, 49191, 78123, 278, 16940, 76297, -49817, 4687, 90633, -18669, |
| 2252, 92563, -4650, 658, -57 }, |
| { 220, 16372, 98382, 156246, 556, 33879, 152594, -99633, 9374, 181266, -37339, |
| 4504, 185126, -9300, 1315, -115 }, |
| }; |
| |
| static const int32_t lgt8_intra[7][64] = { |
| { 10, 29, 97, 567, 1302, 2032, 2288, 2321, 26, 73, 236, |
| 1259, 2350, 1683, -580, -2538, 48, 123, 362, 1644, 1917, -1747, |
| -1893, 1902, -59, -136, -355, -1279, -455, 2439, -2741, 1152, -296, |
| -589, -1262, -2890, 2339, -901, 325, -77, -1536, -2192, -2726, 1403, |
| -452, 80, -14, 2, 3004, 1244, -2450, 449, -71, 7, -1, |
| 0, 2302, -3168, 1195, -105, 9, 0, 0, 0 }, |
| { 20, 57, 195, 1134, 2603, 4064, 4576, 4642, 52, 146, 472, |
| 2517, 4699, 3367, -1161, -5076, 96, 246, 725, 3288, 3834, -3494, |
| -3786, 3804, -117, -271, -709, -2557, -909, 4877, -5483, 2304, -592, |
| -1179, -2525, -5780, 4679, -1801, 651, -154, -3072, -4385, -5452, 2807, |
| -903, 160, -28, 4, 6007, 2487, -4900, 898, -143, 13, -1, |
| 0, 4605, -6336, 2391, -209, 18, -1, 0, 0 }, |
| { 39, 114, 390, 2268, 5207, 8127, 9152, 9284, 105, 291, |
| 944, 5035, 9398, 6734, -2321, -10151, 192, 492, 1450, 6575, |
| 7667, -6987, -7572, 7607, -234, -543, -1418, -5114, -1818, 9754, |
| -10966, 4608, -1184, -2358, -5050, -11560, 9358, -3602, 1302, -307, |
| -6145, -8770, -10904, 5613, -1806, 320, -55, 7, 12015, 4974, |
| -9799, 1796, -285, 26, -2, 0, 9209, -12672, 4781, -418, |
| 35, -2, 0, 0 }, |
| { 78, 228, 779, 4537, 10414, 16254, 18305, 18568, 210, 583, |
| 1888, 10070, 18796, 13467, -4642, -20302, 383, 983, 2900, 13151, |
| 15334, -13975, -15145, 15214, -468, -1086, -2836, -10228, -3636, 19508, |
| -21931, 9216, -2368, -4716, -10100, -23121, 18715, -7205, 2603, -615, |
| -12290, -17540, -21807, 11226, -3613, 640, -110, 15, 24030, 9948, |
| -19599, 3592, -571, 52, -5, 0, 18418, -25345, 9563, -836, |
| 71, -4, 0, 0 }, |
| { 157, 456, 1559, 9073, 20827, 32509, 36610, 37137, 419, 1166, |
| 3776, 20140, 37592, 26935, -9284, -40604, 767, 1967, 5799, 26302, |
| 30669, -27949, -30290, 30429, -936, -2172, -5672, -20456, -7273, 39016, |
| -43862, 18432, -4736, -9432, -20200, -46242, 37430, -14409, 5206, -1229, |
| -24580, -35080, -43615, 22452, -7225, 1279, -221, 30, 48060, 19896, |
| -39197, 7184, -1141, 105, -9, 1, 36837, -50689, 19125, -1672, |
| 141, -7, 0, 0 }, |
| { 313, 913, 3118, 18147, 41655, 65017, 73220, 74273, |
| 838, 2331, 7551, 40280, 75185, 53870, -18568, -81208, |
| 1534, 3933, 11598, 52603, 61337, -55898, -60579, 60858, |
| -1873, -4343, -11345, -40912, -14545, 78032, -87724, 36863, |
| -9473, -18864, -40399, -92484, 74860, -28818, 10413, -2458, |
| -49160, -70159, -87229, 44904, -14451, 2559, -441, 59, |
| 96120, 39793, -78395, 14368, -2283, 210, -19, 1, |
| 73674, -101379, 38251, -3344, 282, -14, 1, 0 }, |
| { 626, 1825, 6236, 36294, 83309, 130034, 146439, 148546, |
| 1677, 4662, 15102, 80559, 150370, 107740, -37137, -162416, |
| 3068, 7867, 23196, 105207, 122675, -111796, -121159, 121716, |
| -3745, -8687, -22689, -81825, -29091, 156064, -175448, 73726, |
| -18946, -37727, -80798, -184967, 149720, -57637, 20825, -4917, |
| -98319, -140318, -174459, 89808, -28901, 5117, -883, 119, |
| 192239, 79586, -156790, 28735, -4566, 420, -38, 3, |
| 147348, -202758, 76501, -6689, 564, -28, 1, 0 }, |
| }; |
| |
| static const int ddt_bit_min = 10; |
| static const int ddt_bit_max = 16; |
| |
| static INLINE const int32_t *ddt4_arr(int is_inter, int n) { |
| if (USE_KLT) |
| return is_inter ? klt4_inter[n - ddt_bit_min] : klt4_intra[n - ddt_bit_min]; |
| else if (USE_GFT) |
| return is_inter ? gft4_inter[n - ddt_bit_min] : gft4_intra[n - ddt_bit_min]; |
| else if (USE_LGT) |
| return is_inter ? lgt4_inter[n - ddt_bit_min] : lgt4_intra[n - ddt_bit_min]; |
| assert(0); |
| } |
| |
| static INLINE const int32_t *ddt8_arr(int is_inter, int n) { |
| if (USE_KLT) |
| return is_inter ? klt8_inter[n - ddt_bit_min] : klt8_intra[n - ddt_bit_min]; |
| else if (USE_GFT) |
| return is_inter ? gft8_inter[n - ddt_bit_min] : gft8_intra[n - ddt_bit_min]; |
| else if (USE_LGT) |
| return is_inter ? lgt8_inter[n - ddt_bit_min] : lgt8_intra[n - ddt_bit_min]; |
| assert(0); |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // GFT_COEFFICIENTS_H_ |