blob: c6b5d1598c154e93f87d5b1ab2ffd0754c96a778 [file] [log] [blame]
/*
* 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_