blob: 167837563a8b3cbf2b2154967619fa766993551b [file] [log] [blame]
/*
* Copyright (c) 2016, 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 AV1_COMMON_PC_WIENER_FILTERS_H_
#define AV1_COMMON_PC_WIENER_FILTERS_H_
#define NUM_PC_WIENER_LUT_CLASSES 256
#define NUM_PC_WIENER_FILTERS 64
// TODO(oguleryuz): Update chroma filters to 64x4.
#define NUM_PC_WIENER_FILTERS_CHROMA 256
#define PC_WIENER_BLOCK_SIZE 4
#define PC_WIENER_BLOCK_ROW_OFFSET 0
#define PC_WIENER_BLOCK_COL_OFFSET 0
#define PC_WIENER_FEATURE_LEAD_LUMA (PC_WIENER_BLOCK_SIZE > 3 ? 1 : 1)
#define PC_WIENER_FEATURE_LAG_LUMA (PC_WIENER_BLOCK_SIZE > 3 ? 4 : 3)
#define PC_WIENER_FEATURE_LENGTH_LUMA \
(PC_WIENER_FEATURE_LEAD_LUMA + PC_WIENER_FEATURE_LAG_LUMA + 1)
#define PC_WIENER_FEATURE_LEAD_CHROMA (PC_WIENER_BLOCK_SIZE > 3 ? 1 : 1)
#define PC_WIENER_FEATURE_LAG_CHROMA (PC_WIENER_BLOCK_SIZE > 3 ? 1 : 1)
#define PC_WIENER_FEATURE_LENGTH_CHROMA \
(PC_WIENER_FEATURE_LEAD_CHROMA + PC_WIENER_FEATURE_LAG_CHROMA + 1)
#define PC_WIENER_TSKIP_LEAD_LUMA (PC_WIENER_BLOCK_SIZE > 3 ? 1 : 1)
#define PC_WIENER_TSKIP_LAG_LUMA (PC_WIENER_BLOCK_SIZE > 3 ? 4 : 3)
#define PC_WIENER_TSKIP_LENGTH_LUMA \
(PC_WIENER_TSKIP_LEAD_LUMA + PC_WIENER_TSKIP_LAG_LUMA + 1)
#define PC_WIENER_TSKIP_LEAD_CHROMA 1
#define PC_WIENER_TSKIP_LAG_CHROMA 1
#define PC_WIENER_TSKIP_LENGTH_CHROMA \
(PC_WIENER_TSKIP_LEAD_CHROMA + PC_WIENER_TSKIP_LAG_CHROMA + 1)
#define NUM_PC_WIENER_TSKIP_TAPS_LUMA \
(PC_WIENER_TSKIP_LENGTH_LUMA * PC_WIENER_TSKIP_LENGTH_LUMA)
#define NUM_PC_WIENER_TSKIP_TAPS_CHROMA \
(PC_WIENER_TSKIP_LENGTH_CHROMA * PC_WIENER_TSKIP_LENGTH_CHROMA)
#define NUM_PC_WIENER_TAPS_LUMA 13
#define NUM_PC_WIENER_TAPS_CHROMA 9
#define NUM_PC_WIENER_FEATURES 4
#define PC_WIENER_PREC_FILTER 12
#define PC_WIENER_PREC_FEATURE 14
#define PC_WIENER_MULT_ROOM 6
#define PC_WIENER_LUT_SIZE 4096
#define USE_CONVOLVE_SYM 1
#define PC_WIENER_FEATURE_AREA_LUMA \
(PC_WIENER_FEATURE_LENGTH_LUMA * PC_WIENER_FEATURE_LENGTH_LUMA)
#define MAX_FEATURE_LENGTH PC_WIENER_FEATURE_LENGTH_LUMA
#define NUM_FEATURE_LINE_BUFFERS (NUM_PC_WIENER_FEATURES * MAX_FEATURE_LENGTH)
// Vector size needed to hold feature accumulator values at 4x4 level.
#define PC_WIENER_FEATURE_ACC_SIZE \
(RESTORATION_PROC_UNIT_SIZE + PC_WIENER_FEATURE_LENGTH_LUMA) / \
PC_WIENER_BLOCK_SIZE
#define SCALE_LUMA(x) \
(((x)*25 + PC_WIENER_FEATURE_AREA_LUMA / 2) / PC_WIENER_FEATURE_AREA_LUMA)
// Should be positive numbers.
static const int32_t feature_normalizers_luma[NUM_PC_WIENER_FEATURES] = {
SCALE_LUMA(13), SCALE_LUMA(5384), SCALE_LUMA(4713), SCALE_LUMA(4426)
};
static const int32_t feature_normalizers_chroma[NUM_PC_WIENER_FEATURES] = {
36, 14956, 13092, 12294
};
static const int32_t tskip_normalizer =
(int)(256 / NUM_PC_WIENER_TSKIP_TAPS_LUMA);
static const int32_t mode_weights[NUM_PC_WIENER_FEATURES][3] = {
{ -527, 15325, 321 },
{ 26436, -17705, 17905 },
{ 366, -147, -194 },
{ 202, -267, -179 }
};
static const int32_t mode_offsets[NUM_PC_WIENER_FEATURES] = { -547, -21565,
-573, -680 };
// Origin-symmetric taps first then the last singleton tap.
static const int
pcwiener_tap_config_luma[2 * NUM_PC_WIENER_TAPS_LUMA - 1][3] = {
{ -3, 0, 0 }, { 3, 0, 0 }, { -2, -1, 1 }, { 2, 1, 1 }, { -2, 0, 2 },
{ 2, 0, 2 }, { -2, 1, 3 }, { 2, -1, 3 }, { -1, -2, 4 }, { 1, 2, 4 },
{ -1, -1, 5 }, { 1, 1, 5 }, { -1, 0, 6 }, { 1, 0, 6 }, { -1, 1, 7 },
{ 1, -1, 7 }, { -1, 2, 8 }, { 1, -2, 8 }, { 0, -3, 9 }, { 0, 3, 9 },
{ 0, -2, 10 }, { 0, 2, 10 }, { 0, -1, 11 }, { 0, 1, 11 }, { 0, 0, 12 },
};
static const int
pcwiener_tap_config_chroma[2 * NUM_PC_WIENER_TAPS_CHROMA - 1][3] = {
{ -2, -2, 0 }, { 2, 2, 0 }, { -2, 0, 1 }, { 2, 0, 1 }, { -2, 2, 2 },
{ 2, -2, 2 }, { -1, -1, 3 }, { 1, 1, 3 }, { -1, 0, 4 }, { 1, 0, 4 },
{ -1, 1, 5 }, { 1, -1, 5 }, { 0, -2, 6 }, { 0, 2, 6 }, { 0, -1, 7 },
{ 0, 1, 7 }, { 0, 0, 8 },
};
static const int16_t pcwiener_filters_luma_0[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = {
// 0 ----------------------------------------------------------------------
{ 46, -25, -73, -115, -204, 10, 427, 189, -192, 40, 73, 934, -2221 },
// 1 ----------------------------------------------------------------------
{ -3, 30, 25, -27, 13, -91, -16, 58, -42, 26, -54, 152, -144 },
// 2 ----------------------------------------------------------------------
{ 42, 27, -163, -48, 7, -187, 421, 118, -57, 47, -156, 453, -1009 },
// 3 ----------------------------------------------------------------------
{ 100, -258, 108, -211, 67, -98, 946, 89, -36, 33, -90, 448, -2198 },
// 4 ----------------------------------------------------------------------
{ 17, 33, -26, -185, 23, -236, 257, 715, -195, 8, 8, 290, -1419 },
// 5 ----------------------------------------------------------------------
{ 28, -18, -112, 32, -31, 13, 286, -160, 35, 26, -99, 283, -567 },
// 6 ----------------------------------------------------------------------
{ 17, 22, -106, 37, 9, -101, 260, -150, 30, 21, -93, 250, -393 },
// 7 ----------------------------------------------------------------------
{ 32, -112, -153, 43, -113, 465, 463, -261, 41, 24, -151, 547, -1651 },
// 8 ----------------------------------------------------------------------
{ 18, -281, 85, 90, -19, 358, 207, -239, -145, 29, -44, 853, -1825 },
// 9 ----------------------------------------------------------------------
{ 41, -59, -152, 46, -53, 73, 516, -280, 57, 2, 16, 161, -737 },
// 10 ----------------------------------------------------------------------
{ -7, 24, 150, -166, 13, -177, -119, 412, -125, 36, -65, 393, -739 },
// 11 ----------------------------------------------------------------------
{ 43, 2, -131, -145, -11, -260, 553, 416, -124, 43, -139, 610, -1715 },
// 12 ----------------------------------------------------------------------
{ 17, 41, -90, -5, 28, -148, 223, -22, -16, 20, -71, 209, -373 },
// 13 ----------------------------------------------------------------------
{ 40, 8, -182, -6, -19, -71, 422, -22, -22, 48, -174, 463, -971 },
// 14 ----------------------------------------------------------------------
{ 30, 48, -128, -31, 27, -199, 326, 47, -43, 36, -115, 335, -667 },
// 15 ----------------------------------------------------------------------
{ 48, -16, -153, -29, 59, -293, 754, -197, 19, 23, -108, 502, -1220 },
// 16 ----------------------------------------------------------------------
{ 40, -65, -156, 45, -82, 199, 405, -232, 43, 37, -152, 453, -1071 },
// 17 ----------------------------------------------------------------------
{ 0, 37, -68, 65, 6, -123, 193, -188, 14, 42, -125, 330, -368 },
// 18 ----------------------------------------------------------------------
{ 37, 70, -53, -157, 5, -282, 272, 278, -82, 61, -233, 755, -1343 },
// 19 ----------------------------------------------------------------------
{ -5, 14, -3, 12, 15, -42, 11, -33, 11, -1, -7, 11, 32 },
// 20 ----------------------------------------------------------------------
{ 34, 17, -161, 22, -8, -78, 360, -122, 12, 42, -146, 358, -661 },
// 21 ----------------------------------------------------------------------
{ 1, -190, 109, 71, -87, 427, 25, -322, 26, 57, -167, 632, -1165 },
// 22 ----------------------------------------------------------------------
{ 44, -65, -93, -33, -42, -36, 747, -378, 79, 16, -44, 467, -1326 },
// 23 ----------------------------------------------------------------------
{ 53, -187, -126, -61, -175, 483, 756, -203, -59, 65, -125, 665, -2173 },
// 24 ----------------------------------------------------------------------
{ 23, 30, -123, 19, 16, -127, 291, -110, 15, 32, -124, 302, -489 },
// 25 ----------------------------------------------------------------------
{ 49, -68, -190, 0, -85, 180, 596, -209, -2, 54, -176, 579, -1457 },
// 26 ----------------------------------------------------------------------
{ 10, 98, -126, 18, -151, -153, 344, 6, -140, 79, -79, 811, -1436 },
// 27 ----------------------------------------------------------------------
{ 5, 55, -95, 62, -6, -170, 274, -183, -10, 56, -169, 507, -654 },
// 28 ----------------------------------------------------------------------
{ 41, 47, -169, 15, 54, -246, 437, -136, 10, 23, -96, 302, -566 },
// 29 ----------------------------------------------------------------------
{ 43, 12, -179, 53, 26, -159, 485, -269, 56, 25, -121, 353, -652 },
// 30 ----------------------------------------------------------------------
{ 21, 28, -55, -123, 8, -132, 171, 550, -203, 12, 45, 191, -1027 },
// 31 ----------------------------------------------------------------------
{ 38, -9, -17, -143, -10, -87, 131, 852, -197, 20, 47, 176, -1603 },
// 32 ----------------------------------------------------------------------
{ 36, -144, -119, 10, -160, 545, 334, -114, 39, 28, -122, 392, -1451 },
// 33 ----------------------------------------------------------------------
{ -263, -96, 245, -56, -106, 354, 593, 370, -85, -57, 125, 511, -3071 },
// 34 ----------------------------------------------------------------------
{ 46, 49, -193, 25, 25, -236, 487, -171, 1, 55, -192, 527, -848 },
// 35 ----------------------------------------------------------------------
{ 32, 42, -83, -121, 29, -259, 335, 352, -143, 29, -47, 336, -1005 },
// 36 ----------------------------------------------------------------------
{ 31, -186, 64, -185, -137, 245, 529, 312, -168, 37, 25, 475, -2085 },
// 37 ----------------------------------------------------------------------
{ 63, -7, -259, -40, 53, -282, 829, 343, -189, 44, -52, 335, -1677 },
// 38 ----------------------------------------------------------------------
{ -3, 24, -14, 28, 23, -87, 50, -88, 21, 9, -34, 68, 4 },
// 39 ----------------------------------------------------------------------
{ 37, -16, -161, 30, -32, 30, 377, -161, 19, 41, -149, 384, -799 },
// 40 ----------------------------------------------------------------------
{ 40, 39, -166, 15, 38, -155, 345, -112, 21, 34, -140, 293, -505 },
// 41 ----------------------------------------------------------------------
{ 2, -22, -60, 101, -33, -25, 250, -279, -4, 62, -167, 561, -773 },
// 42 ----------------------------------------------------------------------
{ 42, -28, -176, 83, -69, 30, 433, -249, -50, 75, -214, 795, -1345 },
// 43 ----------------------------------------------------------------------
{ -2, 47, -47, 35, 25, -140, 128, -107, 10, 18, -58, 160, -140 },
// 44 ----------------------------------------------------------------------
{ 7, -105, -18, -118, -116, 142, 540, 209, -122, 8, -11, 660, -2153 },
// 45 ----------------------------------------------------------------------
{ 31, -70, -103, 21, -97, 226, 255, -116, 29, 28, -105, 321, -841 },
// 46 ----------------------------------------------------------------------
{ 7, 76, -61, -5, 24, -228, 187, -14, -49, 57, -163, 446, -556 },
// 47 ----------------------------------------------------------------------
{ -6, -45, 41, 42, -42, 83, 1, -133, 12, 44, -100, 263, -321 },
// 48 ----------------------------------------------------------------------
{ 14, 32, -39, -78, 25, -164, 186, 229, -104, 12, -11, 195, -595 },
// 49 ----------------------------------------------------------------------
{ 38, 16, -132, -4, 67, -261, 521, -217, 56, 9, -118, 414, -779 },
// 50 ----------------------------------------------------------------------
{ 51, 39, -220, -20, 13, -214, 576, -67, -21, 65, -213, 558, -1095 },
// 51 ----------------------------------------------------------------------
{ 75, -50, -256, -38, -88, 150, 903, -298, 80, 55, -159, 447, -1643 },
// 52 ----------------------------------------------------------------------
{ 63, -132, -172, 34, -214, 547, 522, -227, 9, 22, 97, 92, -1283 },
// 53 ----------------------------------------------------------------------
{ 51, -14, -215, 42, -54, -7, 545, -248, 31, 52, -152, 464, -991 },
// 54 ----------------------------------------------------------------------
{ -17, -187, 146, -155, -164, 314, 566, 377, -183, -17, 94, 534, -2617 },
// 55 ----------------------------------------------------------------------
{ 51, 30, -128, -93, 24, -250, 482, 206, -117, 9, 84, 96, -789 },
// 56 ----------------------------------------------------------------------
{ 57, 4, -151, -41, -58, -123, 489, -9, -91, 54, -177, 785, -1479 },
// 57 ----------------------------------------------------------------------
{ 70, -132, -238, -55, -57, 703, 735, -119, -60, 62, -168, 619, -2722 },
// 58 ----------------------------------------------------------------------
{ 43, 81, -265, 61, -8, -359, 814, 451, -285, 5, 237, 66, -1684 },
// 59 ----------------------------------------------------------------------
{ 8, 26, -59, 18, 26, -94, 139, -79, 19, 10, -61, 138, -183 },
// 60 ----------------------------------------------------------------------
{ 15, -214, 144, -11, -95, 560, -27, -181, 47, 33, -110, 392, -1106 },
// 61 ----------------------------------------------------------------------
{ -34, -172, 69, -173, -160, 264, 637, 366, -167, -16, 91, 665, -2741 },
// 62 ----------------------------------------------------------------------
{ 22, 33, -99, 29, 41, -154, 244, -143, 34, 9, -68, 183, -264 },
// 63 ----------------------------------------------------------------------
{ 62, -29, -206, -83, -36, -97, 683, 54, -68, 75, -212, 671, -1629 },
};
static const int16_t pcwiener_filters_luma_1[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = {
// 0 ----------------------------------------------------------------------
{ 66, -18, -151, -185, -50, -212, 665, 374, -126, 60, -163, 682, -1885 },
// 1 ----------------------------------------------------------------------
{ 43, 13, -121, -194, -39, -336, 615, 633, -182, 49, -75, 599, -2011 },
// 2 ----------------------------------------------------------------------
{ 32, 43, -141, 18, 59, -219, 368, -144, 30, 10, -93, 276, -480 },
// 3 ----------------------------------------------------------------------
{ -3, -15, -31, 78, -29, -9, 162, -221, 11, 46, -107, 336, -438 },
// 4 ----------------------------------------------------------------------
{ 51, 52, -209, -40, 36, -262, 576, 73, -80, 14, 17, 191, -839 },
// 5 ----------------------------------------------------------------------
{ 3, -196, 85, -183, -166, 293, 599, 361, -190, 14, 62, 576, -2517 },
// 6 ----------------------------------------------------------------------
{ 78, -72, -84, -112, 80, -292, 718, -165, 50, 6, -113, 578, -1346 },
// 7 ----------------------------------------------------------------------
{ 77, -139, -276, -30, -130, 684, 750, -151, -18, 49, -156, 634, -2592 },
// 8 ----------------------------------------------------------------------
{ -27, 239, -278, 46, -352, 500, 947, -284, 46, 30, 97, 186, -2302 },
// 9 ----------------------------------------------------------------------
{ 104, -229, 71, -199, 104, -279, 863, 150, -68, 13, -21, 463, -1945 },
// 10 ----------------------------------------------------------------------
{ -2, 35, -75, 76, 9, -138, 235, -216, 15, 39, -115, 333, -394 },
// 11 ----------------------------------------------------------------------
{ 6, 84, -61, -18, 4, -214, 166, 42, -65, 55, -121, 381, -519 },
// 12 ----------------------------------------------------------------------
{ 69, -171, -168, -57, -167, 452, 796, -241, -29, 72, -142, 641, -2111 },
// 13 ----------------------------------------------------------------------
{ -3, 56, -43, 26, 25, -169, 141, -88, -2, 29, -75, 204, -204 },
// 14 ----------------------------------------------------------------------
{ 55, 52, -233, 1, 33, -235, 553, -129, 2, 59, -214, 531, -952 },
// 15 ----------------------------------------------------------------------
{ 38, 68, -256, 170, 4, -369, 908, 540, -361, -2, 306, -29, -2036 },
// 16 ----------------------------------------------------------------------
{ -2, -220, 82, 132, 5, 242, 154, -297, -122, 55, -75, 820, -1549 },
// 17 ----------------------------------------------------------------------
{ 51, 39, -193, -106, 4, -279, 599, 262, -131, 60, -140, 523, -1378 },
// 18 ----------------------------------------------------------------------
{ 61, -129, -227, 51, -185, 522, 460, -143, 7, 50, -113, 427, -1562 },
// 19 ----------------------------------------------------------------------
{ -24, -179, 168, -149, -164, 313, 563, 387, -182, -15, 90, 521, -2660 },
// 20 ----------------------------------------------------------------------
{ 34, 47, -156, 31, 23, -190, 354, -121, -10, 47, -157, 405, -616 },
// 21 ----------------------------------------------------------------------
{ 52, -82, -187, 74, -98, 164, 483, -209, -106, 50, -128, 832, -1691 },
// 22 ----------------------------------------------------------------------
{ 22, 55, -232, -25, 25, -360, 916, 232, -191, 9, 133, 179, -1527 },
// 23 ----------------------------------------------------------------------
{ 107, -48, -248, -101, 117, 725, 684, -78, -120, 98, -209, 586, -3027 },
// 24 ----------------------------------------------------------------------
{ 32, 43, -85, -165, 21, -252, 345, 621, -195, 21, -2, 273, -1315 },
// 25 ----------------------------------------------------------------------
{ -14, 30, 190, -229, 25, -235, -101, 580, -128, 18, -11, 367, -986 },
// 26 ----------------------------------------------------------------------
{ 42, 14, -173, 23, 46, -232, 540, -209, 29, 33, -143, 426, -794 },
// 27 ----------------------------------------------------------------------
{ 53, -60, -276, 51, -167, 299, 893, -369, 52, 4, 100, 164, -1490 },
// 28 ----------------------------------------------------------------------
{ 54, -53, -34, -139, -212, 42, 420, 203, -207, 33, 113, 801, -2043 },
// 29 ----------------------------------------------------------------------
{ 33, -224, -50, -117, -114, 561, 745, -77, -155, 41, -76, 695, -2524 },
// 30 ----------------------------------------------------------------------
{ 40, 19, -173, 6, 64, -263, 614, -229, 55, 12, -121, 419, -888 },
// 31 ----------------------------------------------------------------------
{ -8, -98, 63, 70, -81, 182, 58, -233, -3, 58, -110, 432, -661 },
// 32 ----------------------------------------------------------------------
{ 9, 104, -131, 22, -149, -162, 352, 1, -140, 76, -85, 821, -1437 },
// 33 ----------------------------------------------------------------------
{ 62, 1, -229, -39, -5, -170, 669, -53, -33, 81, -252, 671, -1407 },
// 34 ----------------------------------------------------------------------
{ 2, 80, -128, 77, -14, -212, 335, -185, -33, 58, -148, 525, -715 },
// 35 ----------------------------------------------------------------------
{ 60, 31, -231, -7, -37, -180, 576, -19, -91, 54, -166, 694, -1370 },
// 36 ----------------------------------------------------------------------
{ 58, -37, -252, -16, 66, -255, 852, 612, -275, 54, -86, 341, -2126 },
// 37 ----------------------------------------------------------------------
{ -4, -207, 142, 75, -99, 394, 46, -343, 13, 48, -111, 578, -1064 },
// 38 ----------------------------------------------------------------------
{ -246, -105, 254, -68, -108, 350, 584, 375, -93, -45, 149, 497, -3089 },
// 39 ----------------------------------------------------------------------
{ 29, 14, -131, 48, 7, -102, 314, -184, 32, 29, -108, 278, -454 },
// 40 ----------------------------------------------------------------------
{ 121, -292, 193, -308, 20, 49, 967, 95, 23, 44, -134, 442, -2443 },
// 41 ----------------------------------------------------------------------
{ -56, -171, 118, -165, -147, 321, 599, 378, -174, -21, 110, 590, -2765 },
// 42 ----------------------------------------------------------------------
{ -8, 20, -2, 19, 16, -53, 15, -48, 10, 1, -12, 28, 26 },
// 43 ----------------------------------------------------------------------
{ 19, -223, 74, 38, -35, 808, 8, -209, 28, 42, -120, 380, -1620 },
// 44 ----------------------------------------------------------------------
{ 64, 60, -291, -54, -56, -29, 416, 923, -312, 30, 124, 44, -1840 },
// 45 ----------------------------------------------------------------------
{ 61, -106, -296, 81, -181, 645, 575, -228, 5, 42, -108, 501, -1983 },
// 46 ----------------------------------------------------------------------
{ 62, -77, -221, 44, -111, 178, 588, -259, 25, 56, -150, 505, -1281 },
// 47 ----------------------------------------------------------------------
{ 17, 15, -159, 111, -53, -64, 382, -247, -59, 65, -178, 708, -1077 },
// 48 ----------------------------------------------------------------------
{ 69, -90, -154, -82, 54, -194, 889, -84, -6, 49, -160, 503, -1590 },
// 49 ----------------------------------------------------------------------
{ -66, -153, 195, -269, -267, 217, 653, 382, -215, 27, 75, 667, -2488 },
// 50 ----------------------------------------------------------------------
{ 47, 44, -215, 17, 37, -184, 469, -142, 25, 45, -173, 385, -711 },
// 51 ----------------------------------------------------------------------
{ 38, -199, 62, -215, -192, 233, 593, 314, -194, 53, 44, 574, -2223 },
// 52 ----------------------------------------------------------------------
{ -10, 46, 85, -101, 5, -183, -24, 249, -104, 38, -44, 288, -491 },
// 53 ----------------------------------------------------------------------
{ 57, -3, -51, -232, 1, -77, 193, 987, -173, 7, 27, 216, -1905 },
// 54 ----------------------------------------------------------------------
{ -4, 38, -38, 31, 23, -113, 113, -98, 15, 12, -51, 136, -130 },
// 55 ----------------------------------------------------------------------
{ 50, 31, -234, -20, 9, -193, 648, -115, -18, 78, -238, 614, -1225 },
// 56 ----------------------------------------------------------------------
{ 66, -12, -209, -104, -19, -123, 678, 55, -65, 80, -243, 722, -1653 },
// 57 ----------------------------------------------------------------------
{ 54, -13, -228, 43, -37, -46, 592, -261, 28, 55, -174, 515, -1057 },
// 58 ----------------------------------------------------------------------
{ 53, 58, -214, -49, 26, -269, 532, 112, -90, 53, -126, 424, -1021 },
// 59 ----------------------------------------------------------------------
{ 64, -89, -226, -1, -123, 217, 717, -247, -10, 75, -173, 614, -1637 },
// 60 ----------------------------------------------------------------------
{ 53, -91, -44, -155, -85, 48, 936, -301, 111, 15, -26, 443, -1810 },
// 61 ----------------------------------------------------------------------
{ 51, -9, -234, 48, 0, -97, 664, -297, 64, 14, -74, 321, -904 },
// 62 ----------------------------------------------------------------------
{ -9, 40, -18, 29, 18, -118, 76, -100, 14, 8, -28, 102, -30 },
// 63 ----------------------------------------------------------------------
{ 29, 71, -1, -197, 2, -291, 215, 350, -75, 37, -203, 770, -1415 },
};
static const int16_t pcwiener_filters_luma_2[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = {
// 0 ----------------------------------------------------------------------
{ 29, -5, -232, 404, 174, -307, 775, 820, -475, 33, -80, 232, -2739 },
// 1 ----------------------------------------------------------------------
{ 13, 94, -184, 95, -59, -198, 405, -157, -80, 40, -61, 529, -875 },
// 2 ----------------------------------------------------------------------
{ -10, 56, -544, 261, -134, 923, 731, -337, 129, -38, -176, 386, -2496 },
// 3 ----------------------------------------------------------------------
{ 38, -4, -176, 20, 7, -175, 709, -301, 57, 23, -88, 416, -1054 },
// 4 ----------------------------------------------------------------------
{ 13, 41, -150, 130, -49, -102, 370, -319, -25, 43, -62, 469, -720 },
// 5 ----------------------------------------------------------------------
{ 127, -281, 367, -473, -169, 475, 863, 88, -30, 72, -56, 459, -2887 },
// 6 ----------------------------------------------------------------------
{ -92, -52, 131, -134, 138, 653, 534, 21, -223, -43, 14, 540, -2968 },
// 7 ----------------------------------------------------------------------
{ 12, 127, -92, -55, -69, -270, 281, 118, -94, 78, -99, 523, -921 },
// 8 ----------------------------------------------------------------------
{ 129, -497, 468, -226, -71, 211, 794, 412, -363, 86, 128, 393, -2931 },
// 9 ----------------------------------------------------------------------
{ 27, 41, -139, 36, 40, -171, 315, -145, 26, 14, -79, 223, -377 },
// 10 ----------------------------------------------------------------------
{ 58, 4, -178, -74, -40, -145, 572, 102, -97, 52, -137, 598, -1431 },
// 11 ----------------------------------------------------------------------
{ 62, -158, -165, -31, -145, 373, 739, -222, -41, 63, -137, 645, -1967 },
// 12 ----------------------------------------------------------------------
{ 88, -233, -140, 78, 396, 966, 327, -316, 138, 5, -319, 67, -2121 },
// 13 ----------------------------------------------------------------------
{ 48, -35, -144, -31, 17, -192, 648, -131, -9, 39, -136, 520, -1189 },
// 14 ----------------------------------------------------------------------
{ 6, -30, -66, 117, -35, 34, 259, -346, -6, 53, -106, 506, -774 },
// 15 ----------------------------------------------------------------------
{ 47, -98, -105, -84, -127, 113, 654, 140, -138, 19, 2, 516, -1879 },
// 16 ----------------------------------------------------------------------
{ 37, 37, -176, 28, 24, -167, 408, -146, 14, 38, -149, 373, -643 },
// 17 ----------------------------------------------------------------------
{ 52, 49, -223, -4, 42, -257, 552, -70, -27, 52, -175, 478, -940 },
// 18 ----------------------------------------------------------------------
{ 10, -58, -47, -86, -141, 136, 948, -275, 66, 26, -8, 364, -1871 },
// 19 ----------------------------------------------------------------------
{ 10, 80, 112, -272, -108, -253, 73, 549, -138, 92, -1, 442, -1172 },
// 20 ----------------------------------------------------------------------
{ 47, -184, 36, -153, -6, -28, 820, 20, -45, 48, -119, 539, -1952 },
// 21 ----------------------------------------------------------------------
{ -34, -263, 402, -346, -341, 447, 574, 439, -346, -1, 312, 581, -2843 },
// 22 ----------------------------------------------------------------------
{ -113, -143, 368, -263, -309, 19, 436, 737, -93, -20, 204, 515, -2672 },
// 23 ----------------------------------------------------------------------
{ 52, -112, -154, 46, -126, 163, 464, -54, -184, 55, -26, 741, -1731 },
// 24 ----------------------------------------------------------------------
{ -44, -156, 256, -95, -162, 332, 482, 363, -181, -45, 144, 453, -2696 },
// 25 ----------------------------------------------------------------------
{ -2, 84, -102, 71, 26, -285, 354, -266, 44, 14, -72, 351, -440 },
// 26 ----------------------------------------------------------------------
{ -3, -13, -26, -82, -106, -190, 1025, -145, -11, 20, 130, 314, -1828 },
// 27 ----------------------------------------------------------------------
{ 48, 2, -214, -13, -9, -126, 601, -85, -22, 62, -209, 576, -1222 },
// 28 ----------------------------------------------------------------------
{ 39, 61, 213, -520, -111, -252, 128, 706, 191, -37, 1, 743, -2324 },
// 29 ----------------------------------------------------------------------
{ -447, 38, 399, 91, -63, 337, 547, 308, -13, -98, 170, 417, -3372 },
// 30 ----------------------------------------------------------------------
{ 203, -216, 356, -301, -159, -203, 694, 132, -160, 13, 350, 480, -2375 },
// 31 ----------------------------------------------------------------------
{ 43, 25, -79, -243, -27, -219, 427, 733, -170, 24, -56, 418, -1750 },
// 32 ----------------------------------------------------------------------
{ 54, 4, -112, -227, 18, -328, 820, 670, -224, 5, 215, -120, -1550 },
// 33 ----------------------------------------------------------------------
{ -5, 40, 83, -111, 7, -182, 2, 263, -107, 25, -23, 268, -522 },
// 34 ----------------------------------------------------------------------
{ 31, 12, 5, -116, -402, 105, 321, 234, -274, 172, 207, 791, -2173 },
// 35 ----------------------------------------------------------------------
{ -5, 157, 23, -338, -61, -184, 84, 1229, 48, 15, 3, 33, -2010 },
// 36 ----------------------------------------------------------------------
{ -32, 119, -277, 90, -406, 506, 978, -375, -20, 44, 212, 240, -2158 },
// 37 ----------------------------------------------------------------------
{ 26, -507, 154, 197, 421, 528, 184, -217, -220, -71, 69, 500, -2127 },
// 38 ----------------------------------------------------------------------
{ 73, -230, 131, -290, -299, 283, 482, 445, -290, 66, 429, 744, -3089 },
// 39 ----------------------------------------------------------------------
{ 45, 79, -318, -7, 6, -380, 912, 201, -166, 33, 50, 317, -1544 },
// 40 ----------------------------------------------------------------------
{ 121, 19, 337, -589, -447, 255, 868, -95, 168, -8, 348, 274, -2505 },
// 41 ----------------------------------------------------------------------
{ 59, -82, -209, 24, -124, 190, 616, -242, 16, 63, -151, 535, -1391 },
// 42 ----------------------------------------------------------------------
{ 20, -309, 46, 159, 11, 265, 248, -54, -390, 95, 174, 742, -2014 },
// 43 ----------------------------------------------------------------------
{ 0, -195, 88, -186, -170, 284, 594, 358, -188, 18, 68, 578, -2499 },
// 44 ----------------------------------------------------------------------
{ 215, -511, 401, -317, 65, 91, 855, 313, -199, 51, 51, 394, -2820 },
// 45 ----------------------------------------------------------------------
{ 14, -10, -145, 128, -96, -36, 392, -179, -150, 64, -6, 586, -1125 },
// 46 ----------------------------------------------------------------------
{ 12, -178, 68, 100, -56, 313, 186, -403, -23, 50, -48, 499, -1042 },
// 47 ----------------------------------------------------------------------
{ -7, 22, -6, 20, 16, -61, 26, -54, 11, 4, -18, 42, 8 },
// 48 ----------------------------------------------------------------------
{ -1, 44, -47, 29, 24, -130, 131, -94, 9, 16, -62, 168, -176 },
// 49 ----------------------------------------------------------------------
{ -4, -17, -6, 58, -6, -20, 96, -169, 20, 40, -109, 267, -301 },
// 50 ----------------------------------------------------------------------
{ 14, -14, -234, 73, -73, 44, 822, -371, 64, 17, -38, 333, -1277 },
// 51 ----------------------------------------------------------------------
{ -34, 75, -233, 150, 3, -337, 887, 536, -415, 19, 222, 165, -2078 },
// 52 ----------------------------------------------------------------------
{ 45, 48, -267, 131, 63, -7, 109, 1476, -100, 50, -168, -112, -2535 },
// 53 ----------------------------------------------------------------------
{ 21, -77, -161, 58, -60, 222, 380, -108, -45, -16, -28, 384, -1142 },
// 54 ----------------------------------------------------------------------
{ 94, -244, -71, -80, -132, 515, 547, 16, -267, -11, 172, 641, -2360 },
// 55 ----------------------------------------------------------------------
{ 20, 147, -167, -8, -214, -161, 398, 26, -136, 92, -9, 689, -1356 },
// 56 ----------------------------------------------------------------------
{ 42, 14, -172, 13, 63, -253, 578, -243, 66, 17, -143, 444, -855 },
// 57 ----------------------------------------------------------------------
{ 43, 28, -148, -124, 19, -234, 462, 390, -168, 24, -60, 420, -1305 },
// 58 ----------------------------------------------------------------------
{ 58, -164, -305, 90, 55, 697, 641, -228, 27, -56, -172, 544, -2374 },
// 59 ----------------------------------------------------------------------
{ 37, -101, -234, 97, -168, 538, 453, -225, 3, 19, -74, 433, -1557 },
// 60 ----------------------------------------------------------------------
{ -104, 536, -583, 253, -318, 873, 764, -301, 186, -30, -141, 350, -2970 },
// 61 ----------------------------------------------------------------------
{ -116, 473, 159, -163, -525, 579, 842, -165, 164, 47, -4, 208, -3001 },
// 62 ----------------------------------------------------------------------
{ 49, -338, 49, 157, 32, 585, 183, -371, -111, 81, -75, 474, -1431 },
// 63 ----------------------------------------------------------------------
{ 54, -13, -219, 53, -42, -15, 555, -270, 30, 52, -167, 485, -1007 },
};
static const int16_t pcwiener_filters_luma_3[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = {
// 0 ----------------------------------------------------------------------
{ 249, 92, -359, -220, -188, -55, 711, 180, 38, -1, -63, 342, -1428 },
// 1 ----------------------------------------------------------------------
{ 55, 0, -161, 29, -30, -52, 534, -290, 63, 30, -95, 377, -925 },
// 2 ----------------------------------------------------------------------
{ 101, 67, -212, -16, -104, -143, 473, -125, -31, 142, -81, 450, -1054 },
// 3 ----------------------------------------------------------------------
{ -442, -215, 732, -118, -306, 375, 358, 420, -87, 154, 349, 488, -3410 },
// 4 ----------------------------------------------------------------------
{ 74, 81, -215, 55, -61, -180, 274, 25, -37, 99, -82, 442, -971 },
// 5 ----------------------------------------------------------------------
{ -63, 34, 168, -216, -2, -221, 21, 478, 28, 114, -135, 430, -1275 },
// 6 ----------------------------------------------------------------------
{ -7, -40, 79, -114, -210, 17, 264, 177, 248, -25, 53, 335, -1570 },
// 7 ----------------------------------------------------------------------
{ 31, 31, -122, -105, -20, -230, 464, 417, -127, 30, -11, 312, -1344 },
// 8 ----------------------------------------------------------------------
{ 704, -434, 304, -311, -553, 567, 446, 332, -261, -19, 493, 432, -3405 },
// 9 ----------------------------------------------------------------------
{ 68, -114, -115, 49, -112, 164, 484, 240, -72, -160, 275, 265, -1933 },
// 10 ----------------------------------------------------------------------
{ 10, 80, -116, -8, -76, -166, 298, 95, -98, 67, -5, 465, -1097 },
// 11 ----------------------------------------------------------------------
{ -418, 496, 177, 46, 730, 550, -173, 196, -221, -248, 272, -623, -1593 },
// 12 ----------------------------------------------------------------------
{ -263, 131, 287, -180, 194, 211, 209, 378, -354, -82, 306, 259, -2179 },
// 13 ----------------------------------------------------------------------
{ 134, -2, -198, -17, 51, -201, 590, -185, 64, 59, -173, 494, -1239 },
// 14 ----------------------------------------------------------------------
{ -227, 131, 308, -100, -479, 146, -123, 92, 1124, 293, -143, 87, -2230 },
// 15 ----------------------------------------------------------------------
{ 48, 26, -125, 39, -3, -135, 372, -221, -25, 122, -120, 478, -916 },
// 16 ----------------------------------------------------------------------
{ -13, -188, 93, -178, -162, 281, 589, 350, -179, 17, 64, 567, -2483 },
// 17 ----------------------------------------------------------------------
{ -10, 83, -96, 47, -91, -238, 207, 758, -34, 47, 30, 184, -1785 },
// 18 ----------------------------------------------------------------------
{ -478, -35, 786, 33, 146, 543, 324, 248, -309, -105, 350, 320, -3642 },
// 19 ----------------------------------------------------------------------
{ -280, 203, 108, 201, 440, 491, -81, -157, -283, 101, -31, 181, -1797 },
// 20 ----------------------------------------------------------------------
{ 1083, 1193, -856, -972, -1089, 57, 789, 808, -355, -180, 1528, -448,
-3060 },
// 21 ----------------------------------------------------------------------
{ 208, -109, -78, -147, -95, 53, 723, -94, 45, 50, -63, 451, -1896 },
// 22 ----------------------------------------------------------------------
{ 30, 35, -134, 12, 56, -212, 366, -122, 13, 16, -88, 278, -501 },
// 23 ----------------------------------------------------------------------
{ 487, -483, -447, 2182, 132, -14, 303, -446, 432, -302, 185, -597, -2856 },
// 24 ----------------------------------------------------------------------
{ -207, -277, 727, -420, -760, 387, 119, 373, 474, 369, 250, 562, -3197 },
// 25 ----------------------------------------------------------------------
{ 45, -19, -95, 39, 36, 49, 343, -181, -71, 89, -83, 408, -1117 },
// 26 ----------------------------------------------------------------------
{ -200, -301, 999, -459, -502, 722, 392, 737, -379, -58, 663, 353, -3912 },
// 27 ----------------------------------------------------------------------
{ 53, -127, -298, 1184, -51, 57, -143, 740, 649, -138, 183, -854, -2520 },
// 28 ----------------------------------------------------------------------
{ 154, -339, 110, -212, -195, 31, 562, 344, -82, 102, -76, 603, -2005 },
// 29 ----------------------------------------------------------------------
{ -13, -264, 230, -172, 74, 308, 147, 210, -308, 427, -231, 707, -2231 },
// 30 ----------------------------------------------------------------------
{ -403, 368, 35, 459, 635, 705, -76, -506, 29, 55, -111, -84, -2258 },
// 31 ----------------------------------------------------------------------
{ 177, -272, -215, 285, 107, -6, 688, 110, -13, -131, 105, -19, -1651 },
// 32 ----------------------------------------------------------------------
{ 15, 159, -162, -165, 15, 608, 368, 74, -42, 29, -117, 378, -2323 },
// 33 ----------------------------------------------------------------------
{ 58, -67, -202, 26, -92, 95, 596, -265, 28, 59, -171, 577, -1285 },
// 34 ----------------------------------------------------------------------
{ 770, 189, -21, -485, -242, 207, 562, 292, -189, -6, 316, 215, -3215 },
// 35 ----------------------------------------------------------------------
{ -524, 52, 470, 235, -39, 263, 480, 293, 139, -140, 235, 333, -3592 },
// 36 ----------------------------------------------------------------------
{ 56, -15, -76, -49, -115, 185, 401, 10, -98, -74, 187, 387, -1593 },
// 37 ----------------------------------------------------------------------
{ 332, -329, -78, -121, 44, -23, 807, 99, -69, 4, -1, 385, -2094 },
// 38 ----------------------------------------------------------------------
{ 149, 173, 542, -589, -48, 260, 462, 754, -596, -142, 557, 152, -3352 },
// 39 ----------------------------------------------------------------------
{ 51, 151, -273, 82, -211, 422, 646, -217, -116, -2, 197, 99, -1671 },
// 40 ----------------------------------------------------------------------
{ -349, 10, 421, 116, -33, 298, 363, 315, 41, -371, 284, 309, -2809 },
// 41 ----------------------------------------------------------------------
{ 47, 46, -211, 9, 31, -190, 467, -118, 12, 48, -177, 409, -747 },
// 42 ----------------------------------------------------------------------
{ 59, -616, 58, 1385, -127, 324, 464, -57, 54, -208, 370, -161, -3084 },
// 43 ----------------------------------------------------------------------
{ -45, -344, 713, -440, -451, 669, 427, 598, -311, -38, 487, 389, -3311 },
// 44 ----------------------------------------------------------------------
{ 57, 18, -234, -46, -1, -173, 640, -23, -37, 76, -235, 619, -1323 },
// 45 ----------------------------------------------------------------------
{ -298, -393, 636, -62, 390, 348, 161, 173, -503, 318, -144, 541, -2334 },
// 46 ----------------------------------------------------------------------
{ -87, -185, 308, -205, -545, 458, 212, 374, -22, 210, 106, 549, -2348 },
// 47 ----------------------------------------------------------------------
{ 15, 21, -80, 32, 26, -101, 185, -121, 28, 15, -78, 179, -243 },
// 48 ----------------------------------------------------------------------
{ 63, 32, -212, -19, 33, -331, 884, 38, -73, 36, -17, 302, -1476 },
// 49 ----------------------------------------------------------------------
{ 203, -250, -201, 462, -39, 72, -43, 958, 341, 188, -303, -44, -2683 },
// 50 ----------------------------------------------------------------------
{ 14, -36, -26, 69, -24, 80, 205, -243, -21, 38, -66, 400, -779 },
// 51 ----------------------------------------------------------------------
{ -155, -215, 434, -115, -419, 229, 215, 547, 351, -66, 183, 248, -2478 },
// 52 ----------------------------------------------------------------------
{ -79, -73, 112, 565, -260, 194, -355, 519, 1019, -147, 120, -570, -2094 },
// 53 ----------------------------------------------------------------------
{ -215, -181, 284, -137, 175, -244, 570, 305, -410, -3, 246, 320, -1450 },
// 54 ----------------------------------------------------------------------
{ -6, 27, -11, 18, 18, -72, 37, -54, 10, 7, -28, 61, -16 },
// 55 ----------------------------------------------------------------------
{ 2, 54, -60, 36, 15, -156, 156, -103, 0, 35, -97, 264, -293 },
// 56 ----------------------------------------------------------------------
{ 15, -110, 14, -55, -372, 293, 290, -29, 49, 286, -91, 664, -1915 },
// 57 ----------------------------------------------------------------------
{ 93, -6, -176, -8, 25, -193, 634, -213, 30, 24, -88, 424, -1095 },
// 58 ----------------------------------------------------------------------
{ -8, -28, -48, -18, 37, 133, 255, -9, -205, 233, -235, 704, -1629 },
// 59 ----------------------------------------------------------------------
{ 71, -160, -191, -42, -154, 379, 757, -216, -22, 78, -154, 625, -1943 },
// 60 ----------------------------------------------------------------------
{ 268, 1155, -120, -321, -369, 210, 538, 152, -292, -255, 755, -287, -2882 },
// 61 ----------------------------------------------------------------------
{ 57, 43, -141, 17, 47, -243, 449, -188, 39, 51, -144, 448, -876 },
// 62 ----------------------------------------------------------------------
{ 716, -845, 234, -51, -201, 503, 572, 494, -651, 73, 531, 190, -3148 },
// 63 ----------------------------------------------------------------------
{ 50, 54, -96, 3, 1, -185, 276, -125, 37, 57, -85, 310, -591 },
};
static const int16_t pcwiener_filters_chroma[NUM_PC_WIENER_FILTERS_CHROMA][NUM_PC_WIENER_TAPS_CHROMA] = {
// 0 ----------------------------------------------------------------------
{ -140, -30, 46, 497, 274, -261, -6, 188, -1137 },
// 1 ----------------------------------------------------------------------
{ -126, 106, 63, 528, 920, -500, 148, -215, -1851 },
// 2 ----------------------------------------------------------------------
{ 17, 17, 12, -41, -33, -30, 37, -81, 204 },
// 3 ----------------------------------------------------------------------
{ -1, 21, 6, -71, 128, -148, -5, 172, -201 },
// 4 ----------------------------------------------------------------------
{ -78, 125, -14, 1340, 83, -144, -262, -8, -2086 },
// 5 ----------------------------------------------------------------------
{ -190, -109, 94, 920, 691, -272, 123, -560, -1394 },
// 6 ----------------------------------------------------------------------
{ 7, -2, -118, -450, 419, 365, -17, 455, -1315 },
// 7 ----------------------------------------------------------------------
{ -148, -90, -86, 809, 560, -504, 370, -188, -1455 },
// 8 ----------------------------------------------------------------------
{ -180, -74, 92, 668, 593, -265, 111, -317, -1257 },
// 9 ----------------------------------------------------------------------
{ -179, 288, -29, 304, 585, -362, 165, 119, -1809 },
// 10 ----------------------------------------------------------------------
{ -109, 32, 75, 430, -25, -234, 18, 75, -524 },
// 11 ----------------------------------------------------------------------
{ -154, 45, 77, 1104, -349, -82, 42, -161, -1045 },
// 12 ----------------------------------------------------------------------
{ -196, 135, 37, 829, -338, -171, -4, 227, -1041 },
// 13 ----------------------------------------------------------------------
{ -178, 172, 43, 584, 1004, -707, 271, -122, -2147 },
// 14 ----------------------------------------------------------------------
{ -132, -22, 34, 453, 179, -157, 16, 68, -880 },
// 15 ----------------------------------------------------------------------
{ -153, -16, 47, 862, 49, -105, -14, 9, -1359 },
// 16 ----------------------------------------------------------------------
{ -13, -77, -51, 25, 665, -135, -48, 451, -1637 },
// 17 ----------------------------------------------------------------------
{ 44, 2, -10, -200, 120, -56, 9, 378, -576 },
// 18 ----------------------------------------------------------------------
{ -109, 38, 64, 403, -87, -172, 23, 74, -469 },
// 19 ----------------------------------------------------------------------
{ -94, -20, -17, 280, 457, -304, -35, 344, -1219 },
// 20 ----------------------------------------------------------------------
{ -152, 216, 38, 512, 333, -548, 76, 237, -1434 },
// 21 ----------------------------------------------------------------------
{ -189, -116, 97, 1070, 560, -245, 108, -640, -1285 },
// 22 ----------------------------------------------------------------------
{ 18, -12, -234, -224, 317, 809, 210, -303, -1164 },
// 23 ----------------------------------------------------------------------
{ -160, 35, -26, 865, 433, -371, 20, -18, -1558 },
// 24 ----------------------------------------------------------------------
{ 11, -21, -296, -120, 277, 1348, 290, -716, -1550 },
// 25 ----------------------------------------------------------------------
{ -133, 0, 51, 1076, 51, -196, 83, -390, -1073 },
// 26 ----------------------------------------------------------------------
{ -95, -59, 15, 241, 400, -297, -60, 368, -1026 },
// 27 ----------------------------------------------------------------------
{ -152, 310, -97, 461, 516, -358, 44, 260, -1983 },
// 28 ----------------------------------------------------------------------
{ -475, 406, -317, 921, -467, 765, 320, -804, -715 },
// 29 ----------------------------------------------------------------------
{ 8, 43, 93, 47, -4, 1273, 131, -728, -1732 },
// 30 ----------------------------------------------------------------------
{ 47, -31, -130, -202, 218, 404, -11, 147, -884 },
// 31 ----------------------------------------------------------------------
{ -343, 159, -120, 1547, 776, 123, 44, -796, -2850 },
// 32 ----------------------------------------------------------------------
{ -111, -41, 62, 226, 390, -277, 85, 20, -710 },
// 33 ----------------------------------------------------------------------
{ -134, -52, 72, 336, 711, -436, 97, 96, -1380 },
// 34 ----------------------------------------------------------------------
{ -102, -52, 48, 246, 281, -214, -21, 215, -803 },
// 35 ----------------------------------------------------------------------
{ -179, -83, 64, 633, 485, -304, -57, 250, -1619 },
// 36 ----------------------------------------------------------------------
{ -1, 20, 54, -73, 127, -244, 61, 114, -122 },
// 37 ----------------------------------------------------------------------
{ -174, 1, 66, 1090, 448, -257, 207, -685, -1391 },
// 38 ----------------------------------------------------------------------
{ 96, -79, -32, -55, 103, 14, -11, 0, -65 },
// 39 ----------------------------------------------------------------------
{ -154, -137, 94, 842, 354, -183, -78, 128, -1734 },
// 40 ----------------------------------------------------------------------
{ -50, -47, 91, 155, 253, -209, 7, 45, -490 },
// 41 ----------------------------------------------------------------------
{ -128, -73, 75, 456, 478, -252, 85, -132, -1020 },
// 42 ----------------------------------------------------------------------
{ -133, -12, 80, 496, 209, -184, 47, -134, -742 },
// 43 ----------------------------------------------------------------------
{ -148, 30, 65, 672, -155, -122, 45, -89, -597 },
// 44 ----------------------------------------------------------------------
{ 68, -117, -91, 305, 780, -247, -43, 351, -2033 },
// 45 ----------------------------------------------------------------------
{ -201, 86, 63, 724, 292, -242, 66, -249, -1074 },
// 46 ----------------------------------------------------------------------
{ -163, 25, 52, 664, 563, -429, 199, -269, -1285 },
// 47 ----------------------------------------------------------------------
{ -223, -57, 66, 883, 408, -203, 142, -373, -1288 },
// 48 ----------------------------------------------------------------------
{ -304, 307, 32, 685, -258, -640, 144, 872, -1679 },
// 49 ----------------------------------------------------------------------
{ -140, 48, 52, 666, -248, -279, 0, 150, -498 },
// 50 ----------------------------------------------------------------------
{ 32, 311, -135, -371, -570, 1322, 181, -8, -1529 },
// 51 ----------------------------------------------------------------------
{ -129, 40, 38, 193, 722, -356, -92, 687, -2208 },
// 52 ----------------------------------------------------------------------
{ 19, -75, -24, -86, 319, 7, -111, 363, -824 },
// 53 ----------------------------------------------------------------------
{ -199, -30, 70, 1074, -14, -165, 116, -364, -977 },
// 54 ----------------------------------------------------------------------
{ -43, 42, 36, 34, 42, -152, 40, 15, -31 },
// 55 ----------------------------------------------------------------------
{ -177, -37, 33, 652, 421, -380, -15, 215, -1423 },
// 56 ----------------------------------------------------------------------
{ 71, 154, -127, -379, -241, 445, 155, 281, -721 },
// 57 ----------------------------------------------------------------------
{ -143, 76, 52, 443, 121, -287, 64, 100, -831 },
// 58 ----------------------------------------------------------------------
{ -94, 56, 83, 173, 15, -313, 130, 223, -553 },
// 59 ----------------------------------------------------------------------
{ -154, 139, 67, 531, -157, -413, 121, 310, -891 },
// 60 ----------------------------------------------------------------------
{ -24, 32, 30, -57, 183, -358, 55, 221, -169 },
// 61 ----------------------------------------------------------------------
{ -247, 48, 149, 724, -176, -341, 102, 76, -672 },
// 62 ----------------------------------------------------------------------
{ 6, -41, 59, -55, 270, -181, -16, 172, -428 },
// 63 ----------------------------------------------------------------------
{ -127, 58, 68, 576, -219, -246, 30, 59, -399 },
// 64 ----------------------------------------------------------------------
{ 59, 23, -124, -129, -211, 704, 55, -62, -630 },
// 65 ----------------------------------------------------------------------
{ -63, -49, 72, 72, 475, -433, 36, 181, -583 },
// 66 ----------------------------------------------------------------------
{ 57, -11, 19, -165, 149, -116, 22, 59, -30 },
// 67 ----------------------------------------------------------------------
{ -60, -30, 58, 66, 457, -475, 61, 150, -454 },
// 68 ----------------------------------------------------------------------
{ 30, -85, 37, -19, 114, 22, -65, 22, -116 },
// 69 ----------------------------------------------------------------------
{ 12, 34, 187, 111, 66, 1439, 138, -999, -1990 },
// 70 ----------------------------------------------------------------------
{ 103, 255, -217, -632, -262, 645, 353, 325, -1151 },
// 71 ----------------------------------------------------------------------
{ -2, -85, -29, -104, 371, 15, -106, 395, -911 },
// 72 ----------------------------------------------------------------------
{ 72, 34, -14, -263, 154, -77, 76, 164, -299 },
// 73 ----------------------------------------------------------------------
{ -33, -105, 34, 37, 423, -166, -81, 331, -881 },
// 74 ----------------------------------------------------------------------
{ -71, 31, -34, -185, 535, 19, -61, 520, -1503 },
// 75 ----------------------------------------------------------------------
{ -113, 20, -29, -99, 930, 394, -213, 263, -2307 },
// 76 ----------------------------------------------------------------------
{ -177, -50, 53, 710, 233, -210, -3, 118, -1348 },
// 77 ----------------------------------------------------------------------
{ -66, -69, 25, 146, 328, -213, -74, 404, -962 },
// 78 ----------------------------------------------------------------------
{ 48, -56, -8, -300, 607, -128, 22, 275, -921 },
// 79 ----------------------------------------------------------------------
{ 27, -3, 61, -188, 199, -176, 56, 97, -144 },
// 80 ----------------------------------------------------------------------
{ 56, 10, -157, -127, -171, 1014, 6, -118, -1028 },
// 81 ----------------------------------------------------------------------
{ 43, 78, 58, -45, 218, -5, -175, 309, -938 },
// 82 ----------------------------------------------------------------------
{ 18, -2, 37, -185, 242, -151, 6, 205, -342 },
// 83 ----------------------------------------------------------------------
{ -39, -114, -58, -40, 485, 28, -91, 589, -1521 },
// 84 ----------------------------------------------------------------------
{ -190, 14, 81, 885, -94, -167, 63, -160, -866 },
// 85 ----------------------------------------------------------------------
{ 88, 100, -94, -447, 111, 91, 123, 138, -232 },
// 86 ----------------------------------------------------------------------
{ 57, -119, -74, -286, 495, 231, -74, 396, -1253 },
// 87 ----------------------------------------------------------------------
{ 68, -65, -51, -180, 257, 123, -34, 162, -560 },
// 88 ----------------------------------------------------------------------
{ 41, 47, -17, -128, -34, 15, 55, -60, 160 },
// 89 ----------------------------------------------------------------------
{ 11, 396, -212, -270, -873, 1442, 120, 82, -1399 },
// 90 ----------------------------------------------------------------------
{ -50, -147, -58, -162, 752, -89, -101, 746, -1784 },
// 91 ----------------------------------------------------------------------
{ -117, -83, -101, 58, 594, 117, -87, 584, -1932 },
// 92 ----------------------------------------------------------------------
{ 45, -32, -116, -455, 506, 520, 174, -270, -743 },
// 93 ----------------------------------------------------------------------
{ 62, 276, -210, -683, 544, 201, 219, 347, -1515 },
// 94 ----------------------------------------------------------------------
{ -4, 31, -123, -438, 349, 553, -48, 225, -1087 },
// 95 ----------------------------------------------------------------------
{ 79, -19, -122, -470, 359, 746, 27, 21, -1242 },
// 96 ----------------------------------------------------------------------
{ 4, -45, 20, -30, 140, -55, -29, 106, -223 },
// 97 ----------------------------------------------------------------------
{ -2, -10, 52, -71, 222, -211, 1, 184, -330 },
// 98 ----------------------------------------------------------------------
{ -45, -48, 33, 59, 247, -152, -57, 274, -623 },
// 99 ----------------------------------------------------------------------
{ -46, -77, 63, 88, 496, -347, 7, 220, -809 },
// 100 ----------------------------------------------------------------------
{ 20, -45, 0, -71, 150, -19, -56, 176, -311 },
// 101 ----------------------------------------------------------------------
{ 1, -55, 14, -45, 204, -67, -71, 237, -437 },
// 102 ----------------------------------------------------------------------
{ 3, -89, 18, -79, 333, -98, -73, 308, -646 },
// 103 ----------------------------------------------------------------------
{ 20, -94, -4, -109, 345, -8, -109, 377, -837 },
// 104 ----------------------------------------------------------------------
{ 21, 12, 39, -76, 31, -78, 25, -22, 94 },
// 105 ----------------------------------------------------------------------
{ -75, 54, 54, 154, -25, -211, 76, 84, -225 },
// 106 ----------------------------------------------------------------------
{ -44, -46, 30, 104, 171, -109, -4, 93, -391 },
// 107 ----------------------------------------------------------------------
{ -96, 104, 62, 250, -112, -253, 36, 231, -448 },
// 108 ----------------------------------------------------------------------
{ 45, 51, -130, -385, -188, 541, 69, 309, -622 },
// 109 ----------------------------------------------------------------------
{ -275, -16, 98, 1174, -234, -95, -43, -2, -1215 },
// 110 ----------------------------------------------------------------------
{ 8, 143, -179, -162, -252, 906, 50, 61, -1152 },
// 111 ----------------------------------------------------------------------
{ 23, -25, 9, -374, 690, -155, 62, 226, -910 },
// 112 ----------------------------------------------------------------------
{ -73, 59, 98, 236, 91, -549, 228, 358, -904 },
// 113 ----------------------------------------------------------------------
{ -59, 33, 47, 30, 142, -333, 10, 376, -494 },
// 114 ----------------------------------------------------------------------
{ -75, -47, -172, 405, 205, -132, 99, 304, -1134 },
// 115 ----------------------------------------------------------------------
{ -88, -38, -3, 151, 557, -326, -29, 515, -1481 },
// 116 ----------------------------------------------------------------------
{ 34, -23, -6, -310, 511, -121, 19, 335, -878 },
// 117 ----------------------------------------------------------------------
{ 15, 86, -95, -264, 335, 291, 17, 82, -929 },
// 118 ----------------------------------------------------------------------
{ -101, -106, 19, 9, 593, -69, -39, 453, -1487 },
// 119 ----------------------------------------------------------------------
{ -72, -70, 11, 139, 406, -196, -69, 373, -1044 },
// 120 ----------------------------------------------------------------------
{ -12, 12, 39, -78, 228, -281, 24, 236, -339 },
// 121 ----------------------------------------------------------------------
{ -55, 22, 53, 69, 101, -282, 19, 318, -492 },
// 122 ----------------------------------------------------------------------
{ -87, -106, -81, -150, 788, -122, -73, 678, -1697 },
// 123 ----------------------------------------------------------------------
{ -34, 57, -61, 442, 589, -33, -110, 248, -2188 },
// 124 ----------------------------------------------------------------------
{ 16, 16, -142, -72, -329, 1189, 112, -344, -890 },
// 125 ----------------------------------------------------------------------
{ 83, 121, -129, -431, 61, 922, 30, 107, -1528 },
// 126 ----------------------------------------------------------------------
{ -45, 92, -187, -354, 315, 1014, -44, 152, -1885 },
// 127 ----------------------------------------------------------------------
{ 76, 17, -82, -339, 144, 196, 25, 191, -456 },
// 128 ----------------------------------------------------------------------
{ -158, 80, 38, 403, 588, -431, -111, 462, -1746 },
// 129 ----------------------------------------------------------------------
{ 16, -108, 20, -21, 937, -56, -135, 437, -2174 },
// 130 ----------------------------------------------------------------------
{ 73, 20, 2, -404, 766, -96, -5, 354, -1421 },
// 131 ----------------------------------------------------------------------
{ -79, 120, 49, -61, 734, -539, 67, 498, -1580 },
// 132 ----------------------------------------------------------------------
{ 24, -19, -132, -394, 335, 507, -28, 308, -1203 },
// 133 ----------------------------------------------------------------------
{ -57, -43, 71, 44, 628, -368, 41, 221, -1075 },
// 134 ----------------------------------------------------------------------
{ 32, -8, -94, -273, 225, 264, -9, 160, -587 },
// 135 ----------------------------------------------------------------------
{ 74, 76, -68, -263, -3, 43, 136, -37, 80 },
// 136 ----------------------------------------------------------------------
{ 74, 338, -392, -696, 621, 628, 283, 193, -2103 },
// 137 ----------------------------------------------------------------------
{ -40, 252, 16, 94, 506, -456, 64, 273, -1417 },
// 138 ----------------------------------------------------------------------
{ 68, 66, 19, -516, 937, -107, -22, 495, -1880 },
// 139 ----------------------------------------------------------------------
{ -21, 15, 82, 2, 812, -526, 28, 321, -1422 },
// 140 ----------------------------------------------------------------------
{ 38, -42, -3, -237, 478, -138, 27, 231, -709 },
// 141 ----------------------------------------------------------------------
{ -560, 298, -336, -139, 168, 867, 876, -712, -962 },
// 142 ----------------------------------------------------------------------
{ -95, 103, 44, 181, 59, -387, 79, 258, -490 },
// 143 ----------------------------------------------------------------------
{ 62, -70, -107, -277, 435, 340, 61, 4, -897 },
// 144 ----------------------------------------------------------------------
{ -118, -174, -177, 550, 536, -327, 225, 403, -1860 },
// 145 ----------------------------------------------------------------------
{ -36, -73, 57, 43, 403, -251, -27, 258, -749 },
// 146 ----------------------------------------------------------------------
{ 19, -3, 29, -79, 65, -88, 20, 9, 55 },
// 147 ----------------------------------------------------------------------
{ 32, 47, -179, -230, 485, 812, 134, -394, -1414 },
// 148 ----------------------------------------------------------------------
{ 45, -13, 29, -170, 186, -133, 0, 143, -176 },
// 149 ----------------------------------------------------------------------
{ -224, 44, 56, 1283, -519, -45, 120, -264, -904 },
// 150 ----------------------------------------------------------------------
{ -7, 23, 36, -40, 43, -137, 47, 26, 16 },
// 151 ----------------------------------------------------------------------
{ -61, 114, -110, 644, 824, -347, -28, 147, -2359 },
// 152 ----------------------------------------------------------------------
{ 50, 100, -181, -416, 1064, 650, 192, -344, -2235 },
// 153 ----------------------------------------------------------------------
{ -83, 41, 52, 36, 146, -431, 10, 366, -275 },
// 154 ----------------------------------------------------------------------
{ 33, -44, -116, -266, 299, 352, -38, 323, -1087 },
// 155 ----------------------------------------------------------------------
{ -12, -80, -51, -156, 499, -1, -65, 471, -1211 },
// 156 ----------------------------------------------------------------------
{ -53, 45, 59, 122, -46, -172, 47, 43, -92 },
// 157 ----------------------------------------------------------------------
{ 63, 43, -104, -270, -16, 291, 19, 297, -647 },
// 158 ----------------------------------------------------------------------
{ 50, 126, -176, -71, -475, 761, -35, 259, -882 },
// 159 ----------------------------------------------------------------------
{ 35, -14, -195, -170, 135, 892, 90, -101, -1344 },
// 160 ----------------------------------------------------------------------
{ -148, -88, 47, 823, 323, -207, -58, 171, -1726 },
// 161 ----------------------------------------------------------------------
{ -53, 14, 80, 37, 673, -403, 47, 173, -1136 },
// 162 ----------------------------------------------------------------------
{ 53, 2, 3, -242, 183, -133, 3, 212, -164 },
// 163 ----------------------------------------------------------------------
{ -43, -29, 44, -53, 507, -315, 47, 259, -835 },
// 164 ----------------------------------------------------------------------
{ 21, -33, -21, -69, 112, 41, -15, 76, -226 },
// 165 ----------------------------------------------------------------------
{ 204, -108, 87, 1814, 616, 636, -452, -1377, -2814 },
// 166 ----------------------------------------------------------------------
{ 22, 265, -164, -275, -657, 1093, 68, 423, -1553 },
// 167 ----------------------------------------------------------------------
{ 24, 177, -137, -62, -632, 1068, -42, 279, -1353 },
// 168 ----------------------------------------------------------------------
{ -159, 112, 80, 1105, -617, -161, -9, 342, -1390 },
// 169 ----------------------------------------------------------------------
{ -128, -178, 101, 1272, 216, -2, -12, -443, -1655 },
// 170 ----------------------------------------------------------------------
{ -99, 100, 40, 416, -166, -188, 22, 145, -544 },
// 171 ----------------------------------------------------------------------
{ -174, 92, 79, 721, -296, -228, 14, 301, -1022 },
// 172 ----------------------------------------------------------------------
{ -238, -140, 39, 1323, 531, -674, 162, -70, -1858 },
// 173 ----------------------------------------------------------------------
{ -218, -196, -39, 1507, -86, 583, -44, -1178, -661 },
// 174 ----------------------------------------------------------------------
{ 38, -6, -3, -347, 649, -160, 40, 265, -952 },
// 175 ----------------------------------------------------------------------
{ -128, 322, 10, 1225, -831, -205, 118, -45, -939 },
// 176 ----------------------------------------------------------------------
{ -256, 75, 58, 1306, -281, -97, -20, 29, -1625 },
// 177 ----------------------------------------------------------------------
{ -70, 43, 57, 53, 84, -358, 15, 338, -326 },
// 178 ----------------------------------------------------------------------
{ 49, 37, -102, -125, -150, 464, 38, 23, -469 },
// 179 ----------------------------------------------------------------------
{ 14, -8, 0, -24, 6, -14, 33, -87, 162 },
// 180 ----------------------------------------------------------------------
{ 58, -101, -53, -196, 382, 107, -93, 336, -880 },
// 181 ----------------------------------------------------------------------
{ -104, -47, 69, 1278, 56, -181, 140, -431, -1556 },
// 182 ----------------------------------------------------------------------
{ 77, -86, -133, -324, 480, 438, 82, -57, -955 },
// 183 ----------------------------------------------------------------------
{ -127, -55, 24, 360, 398, -272, -34, 313, -1214 },
// 184 ----------------------------------------------------------------------
{ 12, -35, 4, -42, 115, -31, -18, 71, -153 },
// 185 ----------------------------------------------------------------------
{ -213, 195, 69, 528, -139, -524, 98, 679, -1392 },
// 186 ----------------------------------------------------------------------
{ 51, 117, -110, -341, 460, 1376, 199, -912, -1679 },
// 187 ----------------------------------------------------------------------
{ -202, 22, 165, 898, -359, -281, -144, 949, -2092 },
// 188 ----------------------------------------------------------------------
{ -109, 181, -86, 161, 687, 353, -192, 404, -2801 },
// 189 ----------------------------------------------------------------------
{ -209, 126, 89, 896, -419, -279, -29, 507, -1365 },
// 190 ----------------------------------------------------------------------
{ -13, 63, 58, -97, 409, -281, -40, 352, -905 },
// 191 ----------------------------------------------------------------------
{ -31, 37, 96, 1047, -430, -333, 234, 65, -1373 },
// 192 ----------------------------------------------------------------------
{ 60, -15, -43, -278, 313, 110, 33, 80, -519 },
// 193 ----------------------------------------------------------------------
{ 26, -41, 25, -103, 181, -86, 8, 55, -130 },
// 194 ----------------------------------------------------------------------
{ 63, 37, -121, -498, 611, 177, 123, 206, -1198 },
// 195 ----------------------------------------------------------------------
{ 33, -3, 0, -281, 249, -139, -8, 369, -442 },
// 196 ----------------------------------------------------------------------
{ 87, 30, -96, -227, 186, 316, 8, -11, -587 },
// 197 ----------------------------------------------------------------------
{ 67, 22, -27, -246, 77, 11, 61, 72, -76 },
// 198 ----------------------------------------------------------------------
{ 53, -18, -95, -339, 489, 147, 89, 107, -867 },
// 199 ----------------------------------------------------------------------
{ -209, -39, 44, 1045, 58, 18, 32, -369, -1163 },
// 200 ----------------------------------------------------------------------
{ 11, -69, -11, -101, 301, -33, -81, 338, -711 },
// 201 ----------------------------------------------------------------------
{ 82, 33, -26, -247, 60, -56, 67, 264, -358 },
// 202 ----------------------------------------------------------------------
{ 14, -84, 15, -95, 317, -63, -61, 225, -537 },
// 203 ----------------------------------------------------------------------
{ 83, 812, 119, 331, -16, 352, -43, 174, -3627 },
// 204 ----------------------------------------------------------------------
{ -17, 574, 761, 175, -563, 384, -1510, -86, 964 },
// 205 ----------------------------------------------------------------------
{ 77, 69, -92, -362, -9, 174, 89, 207, -310 },
// 206 ----------------------------------------------------------------------
{ 55, -29, -124, -402, 692, 423, 125, -28, -1427 },
// 207 ----------------------------------------------------------------------
{ 35, -46, -72, -168, 235, 170, -51, 228, -663 },
// 208 ----------------------------------------------------------------------
{ 43, 293, -209, -549, -78, 531, 241, 5, -555 },
// 209 ----------------------------------------------------------------------
{ 23, 15, -7, -308, 282, -205, -13, 398, -371 },
// 210 ----------------------------------------------------------------------
{ 83, 31, -161, -468, 693, 387, 123, 5, -1386 },
// 211 ----------------------------------------------------------------------
{ -27, -135, -50, -165, 707, -57, -92, 697, -1758 },
// 212 ----------------------------------------------------------------------
{ 69, -13, -105, -261, 312, 431, 60, -96, -793 },
// 213 ----------------------------------------------------------------------
{ 74, -80, -135, -374, 473, 536, 102, -170, -853 },
// 214 ----------------------------------------------------------------------
{ 42, -60, -87, -241, 293, 293, -84, 284, -881 },
// 215 ----------------------------------------------------------------------
{ 42, -23, -167, -219, 184, 683, 5, 87, -1184 },
// 216 ----------------------------------------------------------------------
{ -9, 96, -230, -257, 577, 1068, 318, -772, -1583 },
// 217 ----------------------------------------------------------------------
{ 71, 15, -16, -370, 187, -110, 12, 562, -704 },
// 218 ----------------------------------------------------------------------
{ 34, 28, -137, -636, 835, 437, 186, 13, -1516 },
// 219 ----------------------------------------------------------------------
{ 4, 10, -9, -305, 160, -138, -14, 642, -701 },
// 220 ----------------------------------------------------------------------
{ 1, 220, -203, -336, 576, 1173, 255, -852, -1667 },
// 221 ----------------------------------------------------------------------
{ 24, 156, -100, -457, -31, 227, 13, 443, -551 },
// 222 ----------------------------------------------------------------------
{ 50, -24, -162, -287, 275, 608, -41, 204, -1246 },
// 223 ----------------------------------------------------------------------
{ 74, 57, -135, -373, -106, 457, 53, 308, -670 },
// 224 ----------------------------------------------------------------------
{ 29, 11, 19, -104, 41, -80, 33, 14, 72 },
// 225 ----------------------------------------------------------------------
{ 43, -9, 8, -190, 172, -114, 2, 188, -201 },
// 226 ----------------------------------------------------------------------
{ 20, -43, 44, -158, 317, -163, -20, 216, -427 },
// 227 ----------------------------------------------------------------------
{ 58, -3, 27, -227, 219, -144, -3, 190, -234 },
// 228 ----------------------------------------------------------------------
{ 55, -1, -9, -159, 109, -9, 27, 1, -29 },
// 229 ----------------------------------------------------------------------
{ 32, -31, -54, -134, 170, 106, -42, 192, -479 },
// 230 ----------------------------------------------------------------------
{ 69, -36, -54, -260, 317, 83, 34, 98, -502 },
// 231 ----------------------------------------------------------------------
{ 44, -23, -108, -169, 173, 299, 27, 72, -632 },
// 232 ----------------------------------------------------------------------
{ 26, 19, 8, -69, -22, -33, 49, -79, 199 },
// 233 ----------------------------------------------------------------------
{ 5, 9, 38, -63, 58, -143, 66, 62, -68 },
// 234 ----------------------------------------------------------------------
{ -4, 34, 25, -8, -65, -66, 49, -64, 196 },
// 235 ----------------------------------------------------------------------
{ -2, 167, 126, -120, 473, 1222, 254, -1173, -1896 },
// 236 ----------------------------------------------------------------------
{ 41, 43, -41, -156, -49, 91, 62, 23, -30 },
// 237 ----------------------------------------------------------------------
{ 68, 99, -97, -258, -161, 309, 48, 240, -497 },
// 238 ----------------------------------------------------------------------
{ 25, 85, -92, -142, -115, 324, 43, 27, -313 },
// 239 ----------------------------------------------------------------------
{ 29, 25, -155, -83, -83, 771, 8, 22, -1070 },
// 240 ----------------------------------------------------------------------
{ -35, 22, 45, 31, 73, -218, 12, 279, -419 },
// 241 ----------------------------------------------------------------------
{ 28, 10, 5, -222, 167, -138, -2, 218, -133 },
// 242 ----------------------------------------------------------------------
{ 34, 9, 8, -145, 91, -81, 25, 99, -82 },
// 243 ----------------------------------------------------------------------
{ -11, -109, -39, -151, 634, -56, -86, 634, -1633 },
// 244 ----------------------------------------------------------------------
{ 32, -47, -211, -270, 603, 909, 231, -470, -1556 },
// 245 ----------------------------------------------------------------------
{ 27, -102, -72, -430, 634, 295, -82, 603, -1756 },
// 246 ----------------------------------------------------------------------
{ 53, -61, -61, -175, 236, 187, -85, 278, -744 },
// 247 ----------------------------------------------------------------------
{ 2, -108, 6, -113, 438, -117, -62, 377, -840 },
// 248 ----------------------------------------------------------------------
{ -53, 9, -151, -415, 797, 1320, 453, -959, -2006 },
// 249 ----------------------------------------------------------------------
{ -45, 75, 82, 6, 111, -365, 217, 91, -351 },
// 250 ----------------------------------------------------------------------
{ 54, -72, -129, -275, 324, 447, -31, 259, -1153 },
// 251 ----------------------------------------------------------------------
{ -104, 337, -167, -150, 552, 193, 53, 487, -2400 },
// 252 ----------------------------------------------------------------------
{ 41, -42, -178, -230, 661, 1176, 209, -729, -1818 },
// 253 ----------------------------------------------------------------------
{ 31, 41, -96, 14, -180, 1276, 69, -489, -1333 },
// 254 ----------------------------------------------------------------------
{ 69, 12, -148, -238, 146, 686, -25, 108, -1220 },
// 255 ----------------------------------------------------------------------
{ 42, 26, -220, -91, 12, 1185, 123, -398, -1361 }
};
static const int32_t pc_wiener_thresholds[NUM_PC_WIENER_FEATURES] = { 512, 64,
8, 1 };
static const int32_t pc_wiener_threshold_shift = 5;
static const uint8_t pc_wiener_sub_classify_to_1[NUM_PC_WIENER_LUT_CLASSES] = {
0
};
static const uint8_t
pc_wiener_sub_classify_to_64_0[NUM_PC_WIENER_LUT_CLASSES] = {
7, 54, 38, 45, 57, 51, 11, 57, 52, 51, 16, 52, 60, 6, 45, 32, 63, 27,
29, 23, 22, 23, 55, 57, 58, 32, 25, 23, 22, 31, 35, 57, 9, 22, 16, 23,
41, 53, 44, 7, 53, 9, 9, 45, 23, 13, 52, 52, 8, 7, 31, 23, 50, 32,
41, 23, 10, 16, 21, 41, 42, 21, 29, 20, 35, 23, 34, 23, 43, 30, 18, 63,
27, 53, 36, 33, 32, 25, 15, 17, 4, 29, 49, 44, 7, 18, 2, 14, 1, 10,
61, 33, 37, 12, 61, 11, 6, 39, 39, 51, 24, 20, 20, 50, 17, 27, 5, 41,
11, 7, 10, 3, 8, 42, 56, 25, 15, 63, 63, 25, 41, 42, 54, 36, 4, 4,
11, 18, 23, 15, 3, 22, 11, 22, 63, 46, 3, 3, 3, 54, 15, 9, 42, 15,
33, 53, 62, 37, 28, 60, 29, 33, 3, 8, 11, 63, 47, 18, 10, 4, 57, 15,
26, 22, 12, 51, 18, 4, 21, 52, 47, 21, 57, 51, 3, 16, 21, 0, 14, 19,
50, 39, 37, 25, 59, 8, 58, 8, 33, 60, 49, 33, 15, 62, 55, 20, 14, 28,
55, 52, 13, 26, 40, 8, 56, 27, 55, 2, 47, 13, 37, 54, 37, 37, 43, 35,
58, 0, 30, 0, 58, 62, 11, 11, 43, 34, 49, 34, 28, 14, 28, 48, 43, 27,
38, 58, 46, 10, 1, 30, 42, 56, 27, 36, 58, 11, 50, 34, 6, 26, 35, 23,
58, 31, 4, 30
};
static const uint8_t
pc_wiener_sub_classify_to_16_0[NUM_PC_WIENER_LUT_CLASSES] = {
14, 1, 11, 12, 14, 14, 0, 14, 12, 14, 12, 12, 10, 3, 12, 12, 7, 13,
3, 14, 10, 14, 5, 14, 2, 12, 14, 14, 10, 2, 2, 14, 10, 10, 12, 14,
13, 12, 1, 14, 12, 10, 10, 12, 14, 7, 12, 12, 15, 14, 2, 14, 7, 12,
13, 14, 5, 12, 12, 13, 15, 12, 3, 4, 2, 14, 4, 14, 11, 2, 7, 7,
13, 12, 1, 6, 12, 14, 5, 11, 2, 3, 10, 1, 14, 7, 7, 5, 9, 5,
6, 6, 0, 8, 6, 0, 3, 12, 12, 14, 3, 4, 4, 7, 11, 13, 10, 13,
0, 14, 5, 5, 15, 15, 15, 14, 5, 7, 7, 14, 13, 15, 1, 1, 2, 2,
0, 7, 14, 5, 5, 10, 0, 10, 7, 5, 5, 5, 5, 1, 5, 10, 15, 5,
6, 12, 8, 0, 3, 10, 3, 6, 5, 15, 0, 7, 11, 7, 5, 2, 14, 5,
13, 10, 8, 14, 7, 2, 12, 12, 11, 12, 14, 14, 5, 12, 12, 0, 5, 9,
7, 12, 0, 14, 8, 15, 2, 15, 6, 10, 10, 6, 5, 8, 5, 4, 5, 3,
5, 12, 7, 13, 3, 15, 15, 13, 5, 7, 11, 7, 0, 1, 0, 0, 11, 2,
2, 0, 2, 0, 2, 8, 0, 0, 11, 4, 10, 4, 3, 5, 3, 5, 11, 13,
11, 2, 5, 5, 9, 2, 15, 15, 13, 1, 2, 0, 7, 4, 3, 13, 2, 14,
2, 2, 2, 2
};
static const uint8_t
pc_wiener_sub_classify_to_8_0[NUM_PC_WIENER_LUT_CLASSES] = {
0, 2, 6, 5, 0, 0, 7, 0, 5, 0, 5, 5, 1, 1, 5, 5, 7, 4, 1, 0, 1, 0, 3, 0,
3, 5, 0, 0, 1, 3, 3, 0, 1, 1, 5, 0, 4, 5, 2, 0, 5, 1, 1, 5, 0, 7, 5, 5,
0, 0, 3, 0, 7, 5, 4, 0, 3, 5, 5, 4, 0, 5, 1, 1, 3, 0, 1, 0, 6, 3, 7, 7,
4, 5, 2, 2, 5, 0, 3, 6, 3, 1, 1, 2, 0, 7, 7, 3, 6, 3, 2, 2, 7, 4, 2, 7,
1, 5, 5, 0, 1, 1, 1, 7, 6, 4, 1, 4, 7, 0, 3, 3, 0, 0, 0, 0, 3, 7, 7, 0,
4, 0, 2, 2, 3, 3, 7, 7, 0, 3, 3, 1, 7, 1, 7, 3, 3, 3, 3, 2, 3, 1, 0, 3,
2, 5, 4, 7, 1, 1, 1, 2, 3, 0, 7, 7, 6, 7, 3, 3, 0, 3, 4, 1, 4, 0, 7, 3,
5, 5, 6, 5, 0, 0, 3, 5, 5, 7, 3, 6, 7, 5, 7, 0, 4, 0, 3, 0, 2, 1, 1, 2,
3, 4, 3, 1, 3, 1, 3, 5, 7, 4, 1, 0, 0, 4, 3, 7, 6, 7, 7, 2, 7, 7, 6, 3,
3, 7, 3, 7, 3, 4, 7, 7, 6, 1, 1, 1, 1, 3, 1, 3, 6, 4, 6, 3, 3, 3, 6, 3,
0, 0, 4, 2, 3, 7, 7, 1, 1, 4, 3, 0, 3, 3, 3, 3
};
static const uint8_t
pc_wiener_sub_classify_to_4_0[NUM_PC_WIENER_LUT_CLASSES] = {
1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 3, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 3, 1, 2, 1, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 3, 1, 0, 1, 1, 3, 1, 1, 0, 0, 0, 1, 0, 1, 3, 0, 1, 1,
3, 1, 2, 2, 1, 1, 0, 3, 0, 0, 0, 2, 1, 1, 1, 0, 3, 0, 2, 2, 1, 3, 2, 1,
0, 1, 1, 1, 0, 0, 0, 1, 3, 3, 0, 3, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1,
3, 1, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0,
2, 1, 3, 1, 0, 0, 0, 2, 0, 1, 1, 1, 3, 1, 0, 0, 1, 0, 3, 0, 3, 1, 1, 0,
1, 1, 3, 1, 1, 1, 0, 1, 1, 1, 0, 3, 1, 1, 1, 1, 3, 1, 0, 1, 2, 0, 0, 2,
0, 3, 0, 0, 0, 0, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 3, 1, 1, 2, 1, 1, 3, 0,
0, 1, 0, 1, 0, 3, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 0,
1, 1, 3, 2, 0, 1, 1, 0, 0, 3, 0, 1, 0, 0, 0, 0
};
static const uint8_t
pc_wiener_sub_classify_to_2_0[NUM_PC_WIENER_LUT_CLASSES] = {
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1,
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1,
0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1,
0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0,
1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0,
1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0
};
static const uint8_t
pc_wiener_sub_classify_to_64_1[NUM_PC_WIENER_LUT_CLASSES] = {
21, 62, 54, 46, 23, 8, 0, 7, 27, 60, 46, 18, 31, 60, 18, 18, 56, 34,
3, 29, 60, 8, 4, 23, 44, 45, 59, 29, 60, 44, 58, 29, 61, 27, 46, 12,
34, 27, 28, 45, 61, 27, 61, 46, 12, 12, 27, 27, 16, 45, 44, 12, 33, 45,
3, 12, 52, 46, 37, 31, 21, 37, 61, 57, 24, 12, 20, 12, 62, 44, 63, 56,
34, 57, 51, 49, 18, 21, 48, 10, 24, 30, 2, 5, 45, 63, 17, 58, 13, 25,
41, 38, 36, 22, 49, 1, 39, 57, 57, 59, 20, 50, 57, 55, 10, 10, 39, 31,
1, 43, 25, 40, 16, 47, 56, 59, 6, 33, 56, 59, 47, 21, 19, 49, 53, 24,
49, 63, 29, 61, 9, 60, 1, 60, 17, 11, 9, 40, 40, 9, 30, 6, 16, 4,
23, 46, 54, 22, 26, 43, 39, 41, 9, 21, 0, 51, 3, 63, 25, 24, 7, 48,
32, 61, 2, 8, 63, 63, 37, 27, 31, 37, 7, 27, 48, 45, 43, 28, 11, 42,
58, 45, 36, 59, 54, 16, 15, 16, 38, 43, 6, 34, 26, 2, 9, 35, 4, 20,
4, 18, 14, 32, 50, 54, 27, 34, 22, 58, 58, 35, 22, 5, 58, 36, 58, 24,
15, 28, 7, 28, 22, 35, 1, 63, 13, 14, 30, 26, 2, 50, 4, 11, 54, 34,
42, 15, 11, 52, 52, 52, 47, 35, 34, 28, 22, 0, 58, 14, 15, 32, 17, 49,
15, 53, 24, 44
};
static const uint8_t
pc_wiener_sub_classify_to_16_1[NUM_PC_WIENER_LUT_CLASSES] = {
7, 4, 4, 13, 15, 2, 3, 15, 2, 2, 13, 13, 12, 2, 13, 13, 5, 14,
12, 15, 2, 2, 10, 15, 0, 2, 7, 15, 2, 0, 9, 15, 10, 2, 13, 15,
14, 2, 5, 2, 10, 2, 10, 13, 15, 15, 2, 2, 6, 2, 0, 15, 5, 2,
12, 15, 14, 13, 6, 12, 7, 6, 10, 13, 0, 15, 14, 15, 4, 0, 1, 5,
14, 13, 8, 3, 13, 7, 9, 12, 0, 10, 10, 8, 2, 1, 5, 9, 4, 1,
8, 8, 0, 0, 3, 3, 10, 13, 13, 7, 14, 10, 13, 9, 12, 12, 10, 12,
3, 6, 1, 0, 6, 11, 5, 7, 10, 5, 5, 7, 11, 7, 8, 3, 1, 0,
3, 1, 15, 10, 0, 2, 3, 2, 5, 14, 0, 0, 0, 0, 10, 10, 6, 10,
15, 13, 4, 0, 10, 6, 10, 8, 0, 7, 3, 8, 12, 1, 1, 0, 15, 9,
11, 10, 10, 2, 1, 1, 6, 2, 12, 6, 15, 2, 9, 2, 6, 5, 14, 4,
9, 2, 0, 7, 4, 6, 0, 6, 8, 6, 10, 14, 10, 10, 0, 5, 10, 14,
10, 13, 9, 11, 10, 4, 2, 14, 0, 9, 9, 5, 0, 8, 9, 0, 9, 0,
0, 5, 15, 5, 0, 5, 3, 1, 4, 9, 10, 10, 10, 10, 10, 14, 4, 14,
4, 0, 14, 14, 14, 14, 11, 5, 14, 5, 0, 3, 9, 9, 0, 11, 5, 3,
0, 1, 0, 0
};
static const uint8_t
pc_wiener_sub_classify_to_8_1[NUM_PC_WIENER_LUT_CLASSES] = {
0, 2, 2, 0, 1, 0, 5, 1, 0, 0, 0, 0, 2, 0, 0, 0, 5, 3, 2, 1, 0, 0, 6, 1,
7, 0, 0, 1, 0, 7, 3, 1, 6, 0, 0, 1, 3, 0, 5, 0, 6, 0, 6, 0, 1, 1, 0, 0,
0, 0, 7, 1, 5, 0, 2, 1, 3, 0, 0, 2, 0, 0, 6, 0, 7, 1, 3, 1, 2, 7, 3, 5,
3, 0, 4, 5, 0, 0, 3, 2, 7, 6, 6, 4, 0, 3, 5, 3, 2, 3, 4, 4, 7, 7, 5, 5,
6, 0, 0, 0, 3, 6, 0, 3, 2, 2, 6, 2, 5, 0, 3, 7, 0, 3, 5, 0, 6, 5, 5, 0,
3, 0, 4, 5, 3, 7, 5, 3, 1, 6, 7, 0, 5, 0, 5, 3, 7, 7, 7, 7, 6, 6, 0, 6,
1, 0, 2, 7, 6, 0, 6, 4, 7, 0, 5, 4, 2, 3, 3, 7, 1, 3, 3, 6, 6, 0, 3, 3,
0, 0, 2, 0, 1, 0, 3, 0, 0, 5, 3, 2, 3, 0, 7, 0, 2, 0, 7, 0, 4, 0, 6, 3,
6, 6, 7, 5, 6, 3, 6, 0, 3, 3, 6, 2, 0, 3, 7, 3, 3, 5, 7, 4, 3, 7, 3, 7,
7, 5, 1, 5, 7, 5, 5, 3, 2, 3, 6, 6, 6, 6, 6, 3, 2, 3, 2, 7, 3, 3, 3, 3,
3, 5, 3, 5, 7, 5, 3, 3, 7, 3, 5, 5, 7, 3, 7, 7
};
static const uint8_t
pc_wiener_sub_classify_to_4_1[NUM_PC_WIENER_LUT_CLASSES] = {
1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 2, 1, 1, 1, 0, 1,
0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 2, 1, 0, 1, 1, 2, 1, 1, 0, 1, 0, 1, 0, 1, 2, 0, 0, 1,
0, 1, 3, 1, 1, 1, 0, 2, 0, 0, 0, 3, 1, 0, 1, 0, 2, 0, 3, 3, 0, 0, 1, 1,
0, 1, 1, 1, 0, 0, 1, 0, 2, 2, 0, 2, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1,
0, 1, 3, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 1, 2, 0, 0, 1, 0, 3, 0, 1, 1, 3, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
1, 1, 2, 1, 1, 1, 0, 1, 1, 1, 0, 2, 0, 1, 0, 1, 2, 1, 0, 1, 3, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0,
0, 1, 1, 1, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
};
static const uint8_t
pc_wiener_sub_classify_to_2_1[NUM_PC_WIENER_LUT_CLASSES] = {
1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1,
0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1,
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1,
0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1,
0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
};
static const uint8_t
pc_wiener_sub_classify_to_64_2[NUM_PC_WIENER_LUT_CLASSES] = {
59, 6, 47, 15, 6, 36, 31, 58, 36, 40, 59, 59, 49, 40, 59, 59, 10, 1,
63, 11, 18, 61, 9, 58, 51, 2, 11, 54, 40, 32, 57, 6, 50, 50, 41, 11,
45, 36, 28, 59, 63, 50, 9, 41, 11, 36, 36, 50, 42, 58, 52, 11, 27, 2,
14, 11, 19, 41, 46, 46, 23, 46, 3, 53, 57, 11, 16, 5, 25, 52, 28, 10,
1, 63, 43, 22, 41, 53, 13, 4, 31, 3, 56, 43, 58, 19, 10, 17, 48, 35,
43, 29, 0, 32, 22, 31, 9, 27, 63, 41, 16, 16, 63, 27, 49, 48, 4, 14,
28, 58, 19, 8, 42, 45, 10, 11, 3, 15, 10, 41, 45, 23, 24, 21, 35, 57,
22, 57, 54, 26, 26, 26, 31, 18, 31, 7, 44, 5, 44, 21, 56, 30, 42, 17,
37, 41, 9, 51, 56, 49, 16, 6, 8, 54, 57, 15, 49, 7, 33, 31, 11, 20,
55, 50, 9, 60, 28, 31, 62, 36, 49, 46, 58, 60, 20, 2, 12, 23, 7, 47,
17, 60, 51, 41, 48, 62, 0, 37, 29, 14, 56, 24, 17, 9, 32, 10, 17, 17,
17, 59, 27, 55, 16, 34, 24, 55, 39, 57, 57, 15, 39, 43, 39, 51, 57, 57,
51, 34, 5, 38, 51, 54, 31, 31, 48, 17, 56, 13, 9, 17, 9, 33, 48, 4,
47, 52, 48, 33, 33, 33, 63, 10, 1, 24, 32, 57, 57, 17, 51, 34, 57, 21,
51, 33, 31, 32
};
static const uint8_t
pc_wiener_sub_classify_to_16_2[NUM_PC_WIENER_LUT_CLASSES] = {
6, 0, 9, 1, 0, 7, 10, 0, 7, 7, 6, 6, 9, 7, 6, 6, 12, 14,
14, 1, 7, 7, 9, 0, 15, 0, 1, 1, 7, 13, 10, 0, 13, 13, 12, 1,
14, 7, 8, 6, 14, 13, 9, 12, 1, 7, 7, 13, 5, 0, 15, 1, 12, 0,
14, 1, 10, 12, 6, 6, 1, 6, 13, 1, 10, 1, 13, 7, 9, 15, 8, 12,
14, 14, 11, 11, 12, 1, 12, 14, 10, 13, 13, 11, 0, 10, 12, 13, 9, 8,
11, 4, 15, 13, 11, 10, 9, 12, 14, 12, 13, 13, 14, 12, 9, 9, 14, 14,
8, 0, 10, 2, 5, 14, 12, 1, 13, 1, 12, 12, 14, 1, 3, 11, 8, 10,
11, 10, 1, 6, 6, 6, 10, 7, 10, 10, 2, 7, 2, 11, 13, 6, 5, 13,
6, 12, 9, 15, 13, 9, 13, 0, 2, 1, 10, 1, 9, 10, 9, 10, 1, 12,
10, 13, 9, 0, 8, 10, 6, 7, 9, 6, 0, 0, 12, 0, 6, 1, 10, 9,
13, 0, 15, 12, 9, 6, 15, 6, 4, 14, 13, 3, 13, 9, 13, 12, 13, 13,
13, 6, 12, 10, 13, 5, 3, 10, 13, 10, 10, 1, 13, 11, 13, 15, 10, 10,
15, 5, 7, 5, 15, 1, 10, 10, 9, 13, 13, 12, 9, 13, 9, 9, 9, 14,
9, 15, 9, 9, 9, 9, 14, 12, 14, 3, 13, 10, 10, 13, 15, 5, 10, 11,
15, 9, 10, 13
};
static const uint8_t
pc_wiener_sub_classify_to_8_2[NUM_PC_WIENER_LUT_CLASSES] = {
3, 3, 6, 7, 3, 3, 2, 3, 3, 3, 3, 3, 6, 3, 3, 3, 1, 6, 6, 7, 3, 3, 6, 3,
4, 3, 7, 7, 3, 6, 2, 3, 6, 6, 1, 7, 6, 3, 2, 3, 6, 6, 6, 1, 7, 3, 3, 6,
0, 3, 4, 7, 1, 3, 6, 7, 2, 1, 3, 3, 7, 3, 6, 7, 2, 7, 6, 3, 6, 4, 2, 1,
6, 6, 7, 7, 1, 7, 1, 6, 2, 6, 6, 7, 3, 2, 1, 6, 6, 2, 7, 5, 4, 6, 7, 2,
6, 1, 6, 1, 6, 6, 6, 1, 6, 6, 6, 6, 2, 3, 2, 4, 0, 6, 1, 7, 6, 7, 1, 1,
6, 7, 5, 7, 2, 2, 7, 2, 7, 3, 3, 3, 2, 3, 2, 2, 4, 3, 4, 7, 6, 3, 0, 6,
3, 1, 6, 4, 6, 6, 6, 3, 4, 7, 2, 7, 6, 2, 6, 2, 7, 1, 2, 6, 6, 3, 2, 2,
3, 3, 6, 3, 3, 3, 1, 3, 3, 7, 2, 6, 6, 3, 4, 1, 6, 3, 4, 3, 5, 6, 6, 5,
6, 6, 6, 1, 6, 6, 6, 3, 1, 2, 6, 0, 5, 2, 6, 2, 2, 7, 6, 7, 6, 4, 2, 2,
4, 0, 3, 0, 4, 7, 2, 2, 6, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 4, 6, 6, 6, 6,
6, 1, 6, 5, 6, 2, 2, 6, 4, 0, 2, 7, 4, 6, 2, 6
};
static const uint8_t
pc_wiener_sub_classify_to_4_2[NUM_PC_WIENER_LUT_CLASSES] = {
2, 2, 3, 1, 2, 2, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 1, 3, 3, 1, 2, 2, 3, 2,
3, 2, 1, 1, 2, 3, 1, 2, 3, 3, 1, 1, 3, 2, 1, 2, 3, 3, 3, 1, 1, 2, 2, 3,
1, 2, 3, 1, 1, 2, 3, 1, 1, 1, 2, 2, 1, 2, 3, 1, 1, 1, 3, 2, 3, 3, 1, 1,
3, 3, 1, 1, 1, 1, 1, 3, 1, 3, 3, 1, 2, 1, 1, 3, 3, 1, 1, 0, 3, 3, 1, 1,
3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 1, 2, 1, 3, 1, 3, 1, 1, 3, 1, 1, 1,
3, 1, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 3, 2, 3, 1, 3, 2, 1, 3,
2, 1, 3, 3, 3, 3, 3, 2, 3, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 3, 2, 1, 1,
2, 2, 3, 2, 2, 2, 1, 2, 2, 1, 1, 3, 3, 2, 3, 1, 3, 2, 3, 2, 0, 3, 3, 0,
3, 3, 3, 1, 3, 3, 3, 2, 1, 1, 3, 1, 0, 1, 3, 1, 1, 1, 3, 1, 3, 3, 1, 1,
3, 1, 2, 1, 3, 1, 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 3, 0, 3, 1, 1, 3, 3, 1, 1, 1, 3, 3, 1, 3
};
static const uint8_t
pc_wiener_sub_classify_to_2_2[NUM_PC_WIENER_LUT_CLASSES] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
static const uint8_t
pc_wiener_sub_classify_to_64_3[NUM_PC_WIENER_LUT_CLASSES] = {
33, 38, 54, 36, 18, 39, 6, 59, 39, 34, 25, 50, 50, 20, 1, 39, 44, 15,
1, 58, 39, 60, 22, 32, 17, 11, 59, 32, 21, 49, 7, 32, 1, 1, 33, 59,
15, 39, 24, 59, 1, 1, 1, 50, 59, 39, 0, 1, 45, 12, 27, 59, 44, 39,
50, 59, 5, 33, 25, 25, 36, 25, 1, 25, 7, 59, 61, 38, 63, 49, 14, 44,
2, 33, 16, 40, 33, 33, 48, 15, 17, 57, 22, 16, 25, 6, 44, 41, 55, 5,
16, 16, 42, 53, 51, 7, 47, 13, 41, 59, 22, 41, 1, 44, 55, 55, 47, 50,
51, 11, 5, 8, 29, 25, 0, 59, 57, 37, 44, 33, 22, 33, 40, 26, 52, 7,
51, 7, 59, 48, 28, 57, 28, 21, 9, 4, 62, 8, 62, 46, 22, 37, 58, 48,
35, 33, 47, 31, 61, 50, 47, 18, 62, 12, 7, 59, 47, 41, 5, 17, 59, 21,
10, 1, 22, 60, 14, 6, 15, 39, 50, 50, 32, 32, 48, 19, 30, 33, 10, 54,
44, 11, 7, 33, 47, 25, 23, 19, 35, 33, 57, 51, 57, 22, 48, 10, 22, 61,
22, 50, 44, 10, 41, 35, 12, 2, 48, 10, 53, 9, 48, 16, 48, 31, 31, 7,
31, 46, 18, 3, 31, 3, 7, 5, 55, 41, 22, 13, 22, 41, 22, 22, 54, 55,
54, 27, 55, 55, 54, 55, 33, 57, 55, 16, 48, 28, 7, 41, 31, 56, 7, 43,
48, 54, 17, 7
};
static const uint8_t
pc_wiener_sub_classify_to_16_3[NUM_PC_WIENER_LUT_CLASSES] = {
9, 2, 13, 8, 1, 8, 4, 9, 8, 6, 8, 8, 8, 2, 8, 8, 9, 14,
8, 10, 8, 2, 13, 10, 7, 12, 9, 10, 8, 7, 7, 10, 8, 8, 9, 9,
14, 8, 11, 9, 8, 8, 8, 8, 9, 8, 9, 8, 12, 12, 5, 9, 9, 8,
8, 9, 4, 9, 8, 8, 8, 8, 8, 8, 7, 9, 14, 2, 14, 7, 5, 9,
14, 9, 1, 3, 9, 9, 7, 14, 7, 8, 13, 1, 8, 4, 9, 13, 13, 4,
1, 1, 0, 13, 11, 7, 13, 14, 13, 9, 13, 13, 8, 9, 13, 13, 13, 8,
11, 12, 4, 6, 10, 8, 9, 9, 8, 7, 9, 9, 13, 9, 3, 1, 5, 7,
11, 7, 9, 7, 9, 8, 9, 8, 1, 14, 6, 6, 6, 11, 13, 7, 10, 7,
15, 9, 13, 7, 14, 8, 13, 1, 6, 12, 7, 9, 13, 13, 4, 7, 9, 8,
14, 8, 13, 2, 5, 4, 14, 8, 8, 8, 10, 10, 7, 10, 13, 9, 14, 13,
9, 12, 7, 9, 13, 8, 0, 10, 15, 9, 8, 11, 8, 13, 7, 14, 13, 14,
13, 8, 9, 14, 13, 15, 12, 14, 7, 14, 13, 1, 7, 1, 7, 7, 7, 7,
7, 11, 1, 15, 7, 15, 7, 4, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13,
13, 5, 13, 13, 13, 13, 9, 8, 13, 1, 7, 9, 7, 13, 7, 4, 7, 1,
7, 13, 7, 7
};
static const uint8_t
pc_wiener_sub_classify_to_8_3[NUM_PC_WIENER_LUT_CLASSES] = {
1, 5, 7, 7, 6, 7, 1, 1, 7, 2, 7, 7, 7, 5, 7, 7, 1, 7, 7, 1, 7, 5, 7, 1,
7, 5, 1, 1, 7, 7, 7, 1, 7, 7, 1, 1, 7, 7, 3, 1, 7, 7, 7, 7, 1, 7, 1, 7,
5, 5, 3, 1, 1, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 1, 7, 5, 7, 7, 3, 1,
7, 1, 6, 4, 1, 1, 7, 7, 7, 7, 7, 6, 7, 1, 1, 7, 7, 1, 6, 6, 6, 7, 3, 7,
7, 7, 7, 1, 7, 7, 7, 1, 7, 7, 7, 7, 3, 5, 1, 2, 1, 7, 1, 1, 7, 7, 1, 1,
7, 1, 4, 6, 3, 7, 3, 7, 1, 7, 1, 7, 1, 7, 6, 7, 2, 2, 2, 3, 7, 7, 1, 7,
0, 1, 7, 7, 7, 7, 7, 6, 2, 5, 7, 1, 7, 7, 1, 7, 1, 7, 7, 7, 7, 5, 3, 1,
7, 7, 7, 7, 1, 1, 7, 1, 7, 1, 7, 7, 1, 5, 7, 1, 7, 7, 6, 1, 0, 1, 7, 3,
7, 7, 7, 7, 7, 7, 7, 7, 1, 7, 7, 0, 5, 7, 7, 7, 7, 6, 7, 6, 7, 7, 7, 7,
7, 3, 6, 0, 7, 0, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 7, 7, 7, 7,
1, 7, 7, 6, 7, 1, 7, 7, 7, 1, 7, 6, 7, 7, 7, 7
};
static const uint8_t
pc_wiener_sub_classify_to_4_3[NUM_PC_WIENER_LUT_CLASSES] = {
1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 1,
1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 3, 3, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 0, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 0, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1,
1, 0, 3, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1
};
static const uint8_t
pc_wiener_sub_classify_to_2_3[NUM_PC_WIENER_LUT_CLASSES] = {
1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1,
1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1,
1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1
};
/* clang-format off */
static const uint8_t pc_wiener_collapse_16_0[4][16] = {
{ 7, 2, 3, 1, 1, 3, 2, 7, 4, 6, 1, 6, 5, 4, 0, 0,}, // to 8
{ 1, 2, 0, 0, 0, 0, 2, 1, 3, 3, 0, 3, 1, 3, 1, 1,}, // to 4
{ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_8_0[3][8] = {
{ 1, 0, 2, 0, 3, 1, 3, 1,}, // to 4
{ 1, 0, 1, 0, 0, 1, 0, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_4_0[2][4] = {
{ 0, 1, 1, 0,}, // to 2
{ 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_16_1[4][16] = {
{ 7, 3, 0, 5, 2, 5, 0, 0, 4, 3, 6, 3, 2, 0, 3, 1,}, // to 8
{ 0, 0, 1, 1, 2, 1, 1, 1, 3, 0, 0, 0, 2, 1, 0, 1,}, // to 4
{ 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_8_1[3][8] = {
{ 1, 1, 2, 0, 3, 1, 0, 0,}, // to 4
{ 1, 1, 0, 0, 1, 1, 0, 0,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_4_1[2][4] = {
{ 0, 1, 0, 1,}, // to 2
{ 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_16_2[4][16] = {
{ 3, 7, 4, 5, 5, 0, 3, 3, 2, 6, 2, 7, 1, 6, 6, 4,}, // to 8
{ 2, 1, 3, 0, 0, 1, 2, 2, 1, 3, 1, 1, 1, 3, 3, 3,}, // to 4
{ 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_8_2[3][8] = {
{ 1, 1, 1, 2, 3, 0, 3, 1,}, // to 4
{ 1, 1, 1, 1, 1, 0, 1, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_4_2[2][4] = {
{ 0, 1, 1, 1,}, // to 2
{ 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_16_3[4][16] = {
{ 6, 6, 5, 4, 1, 3, 2, 7, 7, 1, 1, 3, 5, 7, 7, 0,}, // to 8
{ 3, 3, 2, 3, 1, 0, 2, 1, 1, 1, 1, 0, 2, 1, 1, 0,}, // to 4
{ 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_8_3[3][8] = {
{ 0, 1, 2, 0, 3, 2, 3, 1,}, // to 4
{ 0, 1, 0, 0, 0, 0, 0, 1,}, // to 2
{ 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_4_3[2][4] = {
{ 0, 1, 0, 0,}, // to 2
{ 0, 0, 0, 0,}, // to 1
};
static const uint8_t pc_wiener_collapse_2[1][2] = {
{ 0}, // to 1
};
/* clang-format on */
// qindex ranges 0 : [0, 130), 1: [130, 190), 2: [190, 220), 3: [220, 270)]
static AOM_INLINE int get_filter_bank_index(int base_qindex) {
if (base_qindex < 130)
return 0;
else if (base_qindex < 190)
return 1;
else if (base_qindex < 220)
return 2;
else
return 3;
}
static AOM_INLINE const int16_t (
*get_filter_bank(int filter_bank_index))[NUM_PC_WIENER_TAPS_LUMA] {
switch (filter_bank_index) {
case 0: return pcwiener_filters_luma_0;
case 1: return pcwiener_filters_luma_1;
case 2: return pcwiener_filters_luma_2;
case 3: return pcwiener_filters_luma_3;
default: assert(0); return pcwiener_filters_luma_0;
}
}
static AOM_INLINE const uint8_t *get_filter_selector(int filter_bank_index) {
assert(NUM_PC_WIENER_FILTERS == 64);
switch (filter_bank_index) {
case 0: return pc_wiener_sub_classify_to_64_0;
case 1: return pc_wiener_sub_classify_to_64_1;
case 2: return pc_wiener_sub_classify_to_64_2;
case 3: return pc_wiener_sub_classify_to_64_3;
default: assert(0); return pc_wiener_sub_classify_to_64_0;
}
}
typedef struct PcWienerSubClassifiers {
const uint8_t *pc_wiener_sub_classify_to_64;
const uint8_t *pc_wiener_sub_classify_to_16;
const uint8_t *pc_wiener_sub_classify_to_8;
const uint8_t *pc_wiener_sub_classify_to_4;
const uint8_t *pc_wiener_sub_classify_to_2;
} PcWienerSubClassifiers;
static const PcWienerSubClassifiers subclass0 = {
.pc_wiener_sub_classify_to_64 = pc_wiener_sub_classify_to_64_0,
.pc_wiener_sub_classify_to_16 = pc_wiener_sub_classify_to_16_0,
.pc_wiener_sub_classify_to_8 = pc_wiener_sub_classify_to_8_0,
.pc_wiener_sub_classify_to_4 = pc_wiener_sub_classify_to_4_0,
.pc_wiener_sub_classify_to_2 = pc_wiener_sub_classify_to_2_0
};
static const PcWienerSubClassifiers subclass1 = {
.pc_wiener_sub_classify_to_64 = pc_wiener_sub_classify_to_64_1,
.pc_wiener_sub_classify_to_16 = pc_wiener_sub_classify_to_16_1,
.pc_wiener_sub_classify_to_8 = pc_wiener_sub_classify_to_8_1,
.pc_wiener_sub_classify_to_4 = pc_wiener_sub_classify_to_4_1,
.pc_wiener_sub_classify_to_2 = pc_wiener_sub_classify_to_2_1
};
static const PcWienerSubClassifiers subclass2 = {
.pc_wiener_sub_classify_to_64 = pc_wiener_sub_classify_to_64_2,
.pc_wiener_sub_classify_to_16 = pc_wiener_sub_classify_to_16_2,
.pc_wiener_sub_classify_to_8 = pc_wiener_sub_classify_to_8_2,
.pc_wiener_sub_classify_to_4 = pc_wiener_sub_classify_to_4_2,
.pc_wiener_sub_classify_to_2 = pc_wiener_sub_classify_to_2_2
};
static const PcWienerSubClassifiers subclass3 = {
.pc_wiener_sub_classify_to_64 = pc_wiener_sub_classify_to_64_3,
.pc_wiener_sub_classify_to_16 = pc_wiener_sub_classify_to_16_3,
.pc_wiener_sub_classify_to_8 = pc_wiener_sub_classify_to_8_3,
.pc_wiener_sub_classify_to_4 = pc_wiener_sub_classify_to_4_3,
.pc_wiener_sub_classify_to_2 = pc_wiener_sub_classify_to_2_3
};
static AOM_INLINE const PcWienerSubClassifiers *get_sub_classifiers(
int filter_bank_index) {
assert(NUM_PC_WIENER_FILTERS == 64);
switch (filter_bank_index) {
case 0: return &subclass0;
case 1: return &subclass1;
case 2: return &subclass2;
case 3: return &subclass3;
default: assert(0); return &subclass0;
}
}
// Number of bits needed to fir the output of encode_num_classes().
#define NUM_FILTER_CLASSES_BITS 2
// Returns a number to encode for each possible value of num_classes.
static AOM_INLINE int encode_num_filter_classes(int num_classes) {
switch (num_classes) {
case 16: return 4;
case 8: return 3;
case 4: return 2;
case 2: return 1;
case 1: return 0;
default: assert(0); return 0;
}
}
// Returns a number to encode for each possible value of num_classes.
static AOM_INLINE int decode_num_filter_classes(int encoded_num_classes) {
switch (encoded_num_classes) {
case 4: return 16;
case 3: return 8;
case 2: return 4;
case 1: return 2;
case 0: return 1;
default: assert(0); return 1;
}
}
static AOM_INLINE const uint8_t *get_converter(int filter_bank_index,
int num_classes,
int target_classes) {
if (num_classes < target_classes) {
assert(0);
// Safe all zeros return.
return pc_wiener_sub_classify_to_1;
}
if (num_classes == 1) return pc_wiener_sub_classify_to_1;
if (num_classes != 16 && num_classes != 8 && num_classes != 4 &&
num_classes != 2 && num_classes != 1) {
assert(0);
return pc_wiener_sub_classify_to_1;
}
if (target_classes != 16 && target_classes != 8 && target_classes != 4 &&
target_classes != 2 && target_classes != 1) {
assert(0);
return pc_wiener_sub_classify_to_1;
}
int row = 1;
while (num_classes >> row > target_classes) ++row;
--row;
switch (filter_bank_index) {
case 0:
switch (num_classes) {
case 16: return pc_wiener_collapse_16_0[row];
case 8: return pc_wiener_collapse_8_0[row];
case 4: return pc_wiener_collapse_4_0[row];
case 2: return pc_wiener_collapse_2[row];
default: assert(0); return pc_wiener_sub_classify_to_1;
}
case 1:
switch (num_classes) {
case 16: return pc_wiener_collapse_16_1[row];
case 8: return pc_wiener_collapse_8_1[row];
case 4: return pc_wiener_collapse_4_1[row];
case 2: return pc_wiener_collapse_2[row];
default: assert(0); return pc_wiener_sub_classify_to_1;
}
case 2:
switch (num_classes) {
case 16: return pc_wiener_collapse_16_2[row];
case 8: return pc_wiener_collapse_8_2[row];
case 4: return pc_wiener_collapse_4_2[row];
case 2: return pc_wiener_collapse_2[row];
default: assert(0); return pc_wiener_sub_classify_to_1;
}
case 3:
switch (num_classes) {
case 16: return pc_wiener_collapse_16_3[row];
case 8: return pc_wiener_collapse_8_3[row];
case 4: return pc_wiener_collapse_4_3[row];
case 2: return pc_wiener_collapse_2[row];
default: assert(0); return pc_wiener_sub_classify_to_1;
}
default: assert(0); return pc_wiener_sub_classify_to_1;
}
}
static const uint8_t pc_wiener_lut_to_class_index[PC_WIENER_LUT_SIZE] = {
83, 154, 254, 125, 125, 125, 253, 253, 77, 200, 207, 30, 30, 239, 239,
239, 0, 98, 101, 229, 229, 231, 231, 231, 0, 34, 101, 100, 100, 229,
229, 231, 15, 34, 98, 100, 100, 100, 164, 164, 15, 34, 98, 106, 100,
96, 164, 164, 15, 14, 43, 106, 96, 96, 96, 164, 15, 14, 43, 106,
106, 96, 96, 184, 83, 154, 64, 110, 125, 239, 253, 253, 119, 225, 87,
231, 64, 64, 239, 239, 120, 101, 100, 229, 236, 231, 202, 231, 15, 98,
228, 100, 150, 202, 236, 231, 15, 40, 18, 100, 228, 96, 228, 88, 15,
43, 106, 68, 96, 193, 224, 88, 199, 43, 34, 106, 104, 184, 224, 184,
11, 14, 43, 96, 96, 184, 96, 184, 243, 212, 244, 22, 239, 239, 253,
253, 99, 192, 198, 230, 22, 22, 231, 239, 8, 163, 140, 230, 230, 230,
230, 231, 47, 32, 226, 82, 226, 230, 179, 164, 41, 32, 226, 226, 82,
193, 179, 224, 106, 42, 42, 226, 193, 82, 193, 184, 15, 42, 42, 193,
193, 193, 193, 184, 11, 43, 42, 106, 193, 193, 193, 184, 241, 157, 64,
255, 255, 255, 255, 255, 240, 66, 228, 228, 22, 22, 22, 22, 10, 150,
228, 228, 230, 146, 230, 232, 199, 150, 150, 228, 146, 146, 146, 184, 199,
42, 62, 146, 146, 193, 193, 184, 47, 42, 62, 193, 146, 193, 193, 184,
199, 42, 42, 146, 146, 146, 193, 179, 199, 42, 42, 146, 193, 146, 193,
184, 138, 237, 158, 237, 239, 253, 255, 255, 156, 17, 236, 88, 88, 231,
231, 22, 171, 105, 224, 224, 232, 146, 232, 22, 12, 104, 146, 146, 146,
146, 224, 232, 12, 146, 146, 146, 146, 146, 146, 232, 199, 106, 234, 146,
146, 146, 146, 146, 199, 42, 234, 146, 146, 146, 146, 146, 199, 42, 146,
146, 146, 146, 146, 184, 145, 179, 236, 158, 158, 110, 253, 29, 11, 179,
238, 237, 238, 238, 238, 88, 41, 156, 242, 88, 88, 88, 232, 2, 12,
107, 104, 232, 232, 232, 232, 232, 12, 170, 234, 234, 2, 232, 2, 179,
12, 156, 234, 234, 2, 2, 234, 179, 12, 156, 234, 234, 234, 2, 2,
179, 199, 156, 234, 234, 234, 234, 146, 184, 133, 211, 179, 179, 110, 110,
110, 253, 160, 166, 179, 238, 238, 238, 238, 238, 129, 35, 179, 236, 88,
88, 88, 179, 137, 170, 104, 242, 88, 88, 2, 2, 171, 170, 156, 104,
232, 2, 2, 232, 12, 170, 156, 234, 2, 2, 2, 2, 189, 170, 156,
234, 2, 2, 2, 2, 12, 156, 234, 179, 234, 2, 2, 179, 186, 219,
179, 179, 237, 110, 110, 253, 155, 179, 60, 231, 238, 238, 238, 238, 28,
58, 188, 179, 88, 238, 238, 238, 226, 238, 234, 179, 104, 88, 2, 88,
14, 179, 170, 242, 104, 232, 2, 2, 39, 2, 170, 156, 232, 232, 232,
2, 179, 170, 170, 234, 232, 232, 2, 2, 170, 170, 156, 234, 234, 234,
2, 179, 90, 132, 95, 254, 159, 159, 159, 253, 44, 71, 154, 222, 254,
254, 125, 159, 55, 183, 52, 86, 250, 250, 254, 125, 39, 26, 145, 103,
180, 246, 250, 215, 39, 26, 183, 73, 103, 180, 180, 30, 39, 39, 183,
145, 73, 247, 247, 87, 76, 39, 26, 145, 73, 102, 247, 87, 25, 76,
76, 57, 145, 73, 102, 202, 83, 132, 254, 125, 159, 159, 254, 159, 44,
209, 154, 64, 125, 125, 125, 159, 26, 121, 241, 86, 64, 207, 254, 125,
84, 0, 103, 103, 207, 246, 215, 215, 39, 0, 57, 227, 52, 52, 196,
30, 39, 15, 57, 145, 52, 102, 207, 87, 76, 53, 10, 77, 103, 97,
197, 87, 25, 15, 15, 0, 34, 73, 18, 100, 74, 182, 252, 252, 215,
125, 71, 69, 99, 78, 206, 244, 244, 244, 125, 159, 8, 133, 116, 198,
198, 244, 244, 215, 46, 33, 163, 190, 116, 198, 198, 215, 47, 33, 163,
116, 190, 140, 190, 230, 47, 46, 33, 163, 190, 190, 190, 230, 156, 47,
33, 33, 163, 190, 190, 82, 25, 40, 41, 41, 163, 62, 226, 193, 177,
127, 64, 255, 255, 255, 255, 255, 121, 225, 87, 196, 22, 22, 22, 22,
10, 102, 148, 230, 198, 198, 22, 22, 199, 40, 62, 226, 230, 198, 198,
22, 47, 40, 62, 62, 226, 226, 198, 230, 47, 41, 32, 62, 226, 226,
140, 230, 47, 47, 41, 62, 62, 226, 226, 230, 47, 47, 41, 42, 32,
32, 226, 193, 49, 125, 158, 158, 110, 29, 29, 255, 58, 162, 178, 231,
231, 22, 22, 22, 58, 120, 66, 228, 228, 196, 196, 22, 171, 18, 150,
228, 228, 228, 230, 22, 149, 18, 150, 150, 228, 228, 62, 230, 11, 42,
150, 62, 228, 146, 226, 230, 11, 42, 42, 62, 62, 193, 193, 230, 169,
47, 42, 42, 42, 193, 62, 193, 85, 238, 179, 158, 158, 110, 253, 29,
179, 179, 158, 158, 237, 237, 238, 22, 226, 59, 17, 236, 236, 164, 164,
22, 189, 59, 105, 224, 224, 228, 228, 230, 189, 107, 104, 146, 146, 224,
146, 228, 189, 107, 150, 146, 146, 146, 146, 228, 149, 43, 146, 146, 146,
146, 146, 228, 11, 199, 42, 146, 96, 146, 146, 193, 62, 92, 88, 214,
238, 89, 89, 253, 42, 228, 110, 158, 158, 158, 158, 239, 85, 137, 179,
237, 237, 237, 238, 231, 156, 170, 233, 17, 236, 88, 88, 228, 109, 171,
107, 105, 224, 232, 224, 232, 171, 171, 170, 232, 232, 232, 232, 232, 189,
12, 156, 104, 146, 232, 2, 232, 149, 14, 156, 146, 146, 146, 146, 146,
158, 205, 179, 179, 179, 179, 110, 253, 179, 254, 122, 110, 110, 158, 158,
110, 81, 122, 179, 238, 2, 158, 158, 238, 10, 179, 42, 179, 237, 238,
238, 238, 238, 58, 179, 233, 242, 88, 88, 88, 204, 179, 107, 233, 104,
232, 88, 88, 179, 12, 107, 156, 104, 232, 232, 2, 149, 12, 170, 156,
156, 234, 234, 179, 90, 132, 95, 254, 159, 159, 159, 159, 19, 155, 222,
222, 254, 254, 125, 159, 55, 115, 71, 245, 222, 222, 250, 254, 39, 55,
115, 71, 86, 250, 250, 215, 39, 55, 115, 119, 52, 86, 246, 250, 25,
39, 26, 183, 119, 103, 180, 246, 39, 39, 26, 26, 119, 103, 103, 180,
76, 39, 39, 26, 183, 145, 73, 247, 108, 132, 95, 254, 89, 50, 69,
239, 128, 209, 245, 154, 254, 134, 102, 80, 39, 60, 241, 161, 127, 157,
250, 125, 0, 177, 243, 87, 116, 127, 223, 254, 10, 240, 115, 71, 86,
71, 245, 127, 23, 169, 115, 115, 115, 209, 118, 86, 114, 23, 199, 26,
99, 52, 118, 246, 25, 35, 145, 199, 180, 119, 103, 197, 211, 182, 252,
252, 244, 213, 95, 17, 65, 78, 210, 244, 244, 244, 206, 80, 5, 133,
116, 194, 244, 244, 244, 215, 5, 20, 131, 116, 194, 143, 244, 215, 5,
46, 131, 131, 116, 194, 194, 194, 8, 46, 46, 131, 190, 194, 190, 215,
45, 46, 37, 33, 190, 190, 116, 198, 175, 47, 33, 33, 33, 163, 163,
82, 177, 223, 80, 255, 24, 24, 24, 24, 121, 241, 180, 212, 244, 244,
252, 244, 84, 73, 192, 192, 198, 206, 244, 244, 53, 145, 192, 140, 198,
143, 206, 244, 169, 41, 32, 140, 140, 198, 198, 198, 169, 8, 32, 32,
140, 140, 198, 230, 47, 47, 41, 32, 32, 226, 140, 198, 47, 47, 33,
33, 163, 163, 163, 82, 203, 223, 158, 158, 253, 253, 29, 24, 105, 162,
157, 157, 64, 239, 255, 255, 185, 120, 66, 197, 87, 196, 22, 244, 189,
240, 148, 148, 100, 198, 198, 22, 149, 43, 62, 148, 148, 148, 198, 198,
11, 199, 40, 62, 62, 226, 62, 230, 11, 41, 40, 32, 62, 193, 140,
198, 181, 47, 41, 32, 32, 42, 32, 226, 155, 210, 85, 238, 158, 89,
253, 50, 1, 179, 85, 158, 158, 158, 239, 255, 0, 58, 162, 135, 229,
231, 196, 22, 171, 58, 233, 224, 228, 236, 196, 196, 189, 58, 105, 224,
228, 164, 228, 230, 189, 12, 18, 150, 224, 146, 228, 228, 189, 199, 40,
150, 104, 146, 150, 62, 53, 199, 42, 42, 62, 62, 193, 226, 166, 168,
144, 222, 179, 239, 89, 50, 117, 179, 179, 88, 158, 158, 158, 239, 78,
233, 189, 56, 237, 237, 237, 239, 28, 10, 59, 17, 236, 236, 164, 231,
64, 171, 59, 233, 242, 224, 236, 224, 171, 189, 107, 104, 224, 104, 148,
228, 189, 171, 18, 105, 150, 224, 179, 228, 149, 199, 43, 150, 96, 232,
146, 193, 219, 233, 220, 238, 158, 29, 17, 253, 70, 110, 179, 158, 110,
158, 110, 110, 137, 50, 55, 2, 158, 158, 158, 237, 166, 178, 209, 224,
237, 237, 237, 238, 29, 179, 97, 233, 17, 236, 236, 238, 221, 171, 58,
107, 242, 242, 88, 88, 61, 189, 171, 107, 233, 104, 232, 88, 149, 12,
12, 170, 156, 104, 232, 2, 91, 94, 95, 95, 254, 254, 125, 125, 19,
155, 222, 222, 222, 222, 254, 125, 23, 44, 155, 245, 222, 222, 222, 254,
23, 55, 115, 16, 245, 86, 222, 254, 160, 7, 44, 115, 71, 86, 86,
250, 160, 7, 55, 115, 119, 71, 86, 86, 160, 7, 55, 35, 115, 119,
52, 86, 160, 160, 160, 35, 35, 115, 119, 103, 166, 124, 254, 167, 17,
50, 235, 97, 49, 211, 83, 239, 95, 80, 69, 253, 23, 0, 209, 155,
134, 125, 238, 110, 114, 177, 211, 209, 167, 222, 147, 213, 153, 172, 44,
60, 243, 245, 215, 250, 47, 7, 55, 35, 243, 99, 118, 86, 5, 25,
55, 83, 83, 243, 51, 127, 23, 160, 7, 7, 76, 51, 119, 52, 211,
182, 252, 252, 252, 254, 71, 69, 65, 174, 210, 216, 244, 244, 252, 213,
5, 133, 130, 194, 244, 216, 244, 22, 5, 20, 133, 130, 130, 194, 244,
244, 46, 46, 20, 131, 130, 194, 194, 194, 46, 46, 33, 131, 131, 116,
194, 194, 233, 46, 37, 131, 131, 131, 194, 194, 25, 46, 46, 33, 33,
33, 131, 190, 177, 223, 80, 255, 24, 24, 24, 24, 121, 241, 246, 212,
244, 244, 252, 244, 84, 73, 192, 192, 143, 206, 244, 244, 53, 145, 192,
140, 198, 143, 206, 244, 169, 41, 163, 140, 140, 140, 143, 244, 169, 8,
41, 163, 140, 140, 140, 143, 169, 47, 8, 32, 140, 140, 140, 143, 181,
47, 8, 33, 33, 163, 163, 140, 2, 205, 158, 158, 253, 29, 29, 24,
185, 162, 157, 127, 64, 22, 255, 255, 185, 120, 225, 197, 87, 212, 22,
244, 189, 240, 66, 148, 148, 198, 212, 143, 149, 10, 102, 148, 148, 192,
192, 143, 11, 10, 40, 62, 148, 226, 226, 198, 11, 41, 40, 40, 81,
226, 230, 198, 181, 47, 41, 41, 32, 32, 32, 226, 232, 209, 241, 89,
89, 89, 253, 29, 116, 9, 178, 158, 158, 64, 64, 255, 149, 58, 162,
178, 197, 231, 196, 22, 171, 58, 120, 66, 197, 197, 196, 196, 189, 58,
18, 66, 228, 228, 100, 230, 189, 10, 18, 150, 150, 193, 228, 230, 189,
10, 18, 18, 148, 146, 228, 230, 11, 199, 42, 40, 62, 62, 62, 226,
28, 177, 230, 22, 110, 56, 89, 253, 43, 179, 108, 238, 158, 158, 110,
239, 181, 89, 146, 56, 237, 237, 237, 239, 230, 170, 59, 17, 17, 197,
231, 196, 73, 58, 59, 233, 242, 236, 164, 236, 58, 58, 107, 105, 66,
224, 224, 228, 189, 171, 107, 18, 150, 224, 193, 228, 149, 199, 43, 18,
96, 146, 193, 193, 145, 88, 142, 238, 238, 179, 253, 253, 194, 87, 241,
110, 158, 158, 238, 110, 147, 90, 179, 237, 238, 158, 158, 237, 50, 29,
162, 238, 237, 237, 237, 237, 45, 91, 96, 233, 17, 242, 236, 238, 126,
40, 58, 107, 233, 242, 242, 236, 149, 171, 58, 107, 233, 242, 224, 88,
149, 12, 12, 107, 156, 104, 104, 232, 91, 94, 95, 95, 159, 254, 254,
69, 128, 74, 132, 132, 132, 95, 95, 159, 172, 19, 74, 6, 132, 132,
95, 95, 172, 128, 51, 155, 6, 132, 132, 95, 23, 55, 44, 51, 155,
245, 6, 222, 39, 172, 55, 44, 16, 16, 245, 222, 160, 172, 55, 44,
51, 16, 71, 245, 160, 7, 55, 55, 44, 115, 115, 52, 108, 75, 245,
69, 162, 244, 69, 125, 31, 152, 219, 167, 108, 57, 235, 92, 128, 209,
177, 6, 95, 82, 143, 159, 23, 172, 51, 132, 245, 129, 223, 254, 23,
232, 128, 83, 210, 132, 86, 147, 169, 4, 133, 245, 51, 132, 28, 246,
19, 149, 31, 60, 245, 251, 60, 6, 4, 53, 51, 53, 7, 7, 16,
52, 90, 213, 186, 216, 244, 126, 186, 69, 65, 174, 152, 216, 210, 147,
147, 235, 5, 20, 130, 130, 194, 136, 216, 92, 5, 13, 131, 130, 194,
194, 148, 208, 5, 46, 131, 131, 194, 194, 194, 194, 5, 46, 131, 131,
131, 130, 194, 194, 3, 46, 33, 20, 37, 131, 194, 143, 84, 172, 41,
33, 33, 33, 131, 190, 217, 223, 124, 50, 235, 235, 186, 213, 60, 177,
134, 182, 220, 252, 216, 244, 84, 241, 52, 206, 206, 147, 252, 252, 25,
45, 161, 78, 206, 147, 93, 244, 181, 45, 145, 78, 81, 194, 246, 206,
181, 47, 8, 161, 161, 116, 190, 194, 181, 46, 46, 33, 161, 230, 227,
194, 181, 46, 46, 8, 8, 33, 33, 32, 11, 245, 166, 89, 124, 50,
50, 235, 153, 249, 85, 167, 125, 255, 252, 252, 185, 113, 195, 246, 246,
212, 182, 252, 185, 121, 227, 227, 196, 86, 206, 147, 109, 84, 97, 192,
140, 135, 78, 101, 149, 47, 14, 140, 81, 140, 197, 206, 181, 169, 41,
32, 52, 227, 226, 206, 181, 169, 169, 41, 33, 32, 163, 81, 175, 119,
248, 167, 89, 124, 124, 69, 74, 212, 166, 85, 167, 167, 80, 29, 218,
112, 201, 201, 157, 30, 215, 255, 177, 185, 36, 72, 135, 180, 143, 244,
189, 185, 36, 72, 148, 82, 214, 215, 189, 171, 233, 17, 100, 32, 241,
246, 109, 149, 10, 40, 227, 227, 82, 79, 175, 53, 47, 163, 163, 32,
81, 81, 253, 36, 201, 189, 49, 190, 70, 69, 88, 140, 38, 179, 166,
166, 167, 80, 178, 206, 112, 201, 85, 56, 215, 80, 3, 148, 142, 201,
205, 207, 127, 215, 179, 185, 142, 36, 17, 197, 247, 250, 105, 185, 58,
107, 79, 82, 197, 192, 176, 185, 107, 73, 197, 79, 197, 207, 176, 149,
199, 18, 40, 79, 148, 81, 192, 214, 111, 191, 1, 158, 50, 89, 227,
86, 158, 158, 238, 158, 70, 89, 250, 167, 232, 4, 170, 166, 166, 110,
157, 156, 90, 166, 201, 85, 56, 56, 70, 90, 53, 142, 162, 162, 56,
56, 216, 189, 185, 142, 17, 17, 162, 178, 120, 112, 185, 58, 233, 17,
242, 178, 149, 149, 171, 59, 107, 54, 54, 105, 91, 94, 94, 95, 95,
92, 95, 215, 31, 211, 94, 95, 95, 95, 95, 95, 23, 19, 74, 94,
132, 132, 95, 95, 23, 128, 19, 74, 6, 132, 222, 95, 23, 172, 19,
51, 155, 245, 222, 222, 23, 172, 55, 44, 51, 245, 245, 245, 23, 172,
44, 19, 51, 118, 118, 245, 160, 7, 7, 35, 44, 115, 118, 118, 109,
75, 75, 210, 95, 38, 86, 208, 31, 161, 201, 143, 208, 6, 126, 95,
151, 251, 155, 79, 251, 69, 78, 110, 172, 44, 39, 114, 95, 76, 205,
154, 4, 128, 16, 84, 132, 136, 94, 159, 175, 4, 67, 35, 118, 74,
212, 132, 23, 55, 181, 205, 19, 6, 174, 245, 7, 4, 4, 160, 49,
44, 76, 118, 90, 213, 252, 216, 248, 186, 117, 158, 65, 174, 152, 216,
216, 206, 216, 254, 5, 20, 130, 194, 194, 216, 244, 206, 5, 20, 130,
130, 194, 194, 216, 194, 46, 46, 20, 131, 130, 130, 194, 194, 20, 46,
131, 131, 131, 194, 194, 194, 12, 46, 37, 13, 131, 130, 194, 194, 23,
224, 46, 33, 131, 131, 131, 190, 217, 223, 80, 29, 24, 24, 216, 235,
60, 241, 214, 147, 244, 252, 252, 216, 84, 97, 52, 212, 147, 210, 206,
216, 53, 57, 52, 78, 174, 78, 93, 244, 181, 45, 163, 161, 78, 206,
206, 206, 165, 5, 8, 133, 78, 81, 143, 206, 165, 46, 8, 20, 161,
116, 116, 206, 5, 46, 37, 33, 8, 33, 133, 116, 239, 217, 166, 89,
124, 29, 29, 24, 58, 249, 162, 127, 64, 125, 22, 252, 185, 113, 195,
225, 246, 212, 206, 244, 185, 63, 66, 227, 52, 212, 212, 206, 11, 199,
97, 227, 192, 78, 140, 206, 25, 199, 40, 227, 192, 140, 180, 206, 25,
45, 41, 41, 163, 81, 78, 143, 181, 169, 8, 41, 163, 133, 140, 140,
143, 104, 223, 166, 89, 167, 89, 50, 178, 131, 249, 166, 158, 167, 80,
255, 171, 142, 201, 205, 178, 64, 214, 213, 189, 142, 36, 66, 17, 197,
180, 212, 187, 58, 54, 66, 66, 100, 246, 198, 189, 171, 107, 148, 105,
193, 197, 78, 109, 199, 57, 150, 148, 148, 192, 78, 25, 53, 57, 32,
62, 81, 81, 140, 162, 196, 28, 131, 69, 70, 223, 253, 198, 135, 221,
76, 166, 166, 167, 80, 118, 179, 61, 85, 56, 157, 167, 64, 232, 171,
142, 162, 17, 157, 157, 215, 130, 185, 142, 72, 66, 135, 82, 196, 12,
187, 58, 54, 66, 197, 82, 197, 189, 189, 107, 105, 225, 148, 224, 197,
149, 15, 57, 98, 79, 148, 148, 148, 113, 82, 172, 50, 174, 2, 205,
89, 171, 130, 16, 179, 158, 158, 70, 110, 133, 234, 14, 100, 120, 158,
158, 158, 203, 158, 179, 201, 56, 157, 157, 237, 174, 112, 63, 36, 17,
178, 178, 178, 221, 187, 142, 59, 17, 17, 135, 178, 179, 189, 58, 59,
54, 242, 242, 236, 176, 171, 171, 107, 54, 54, 79, 224, 91, 126, 75,
95, 95, 208, 252, 95, 128, 251, 94, 126, 95, 254, 159, 254, 23, 19,
155, 155, 132, 95, 95, 95, 23, 128, 19, 155, 245, 52, 125, 95, 23,
128, 19, 51, 51, 245, 16, 132, 23, 7, 128, 19, 51, 51, 76, 222,
23, 7, 128, 19, 44, 51, 114, 64, 160, 7, 7, 7, 35, 44, 44,
16, 219, 218, 235, 126, 247, 28, 108, 179, 138, 245, 173, 99, 220, 176,
204, 239, 203, 144, 111, 208, 188, 5, 152, 167, 144, 188, 38, 244, 195,
52, 171, 29, 151, 6, 100, 152, 131, 44, 141, 157, 186, 203, 90, 144,
20, 144, 235, 238, 124, 13, 126, 29, 175, 251, 86, 14, 48, 31, 169,
179, 46, 126, 55, 223, 74, 182, 93, 216, 65, 137, 111, 37, 51, 174,
78, 93, 143, 65, 235, 50, 45, 161, 129, 174, 93, 224, 104, 75, 23,
99, 129, 78, 78, 82, 155, 87, 181, 5, 20, 131, 136, 148, 206, 116,
165, 21, 225, 65, 81, 130, 226, 208, 21, 21, 119, 9, 137, 136, 141,
136, 31, 21, 9, 9, 9, 163, 78, 116, 249, 223, 127, 80, 235, 24,
235, 248, 241, 52, 118, 250, 246, 220, 135, 186, 7, 145, 192, 202, 117,
174, 66, 162, 160, 57, 78, 192, 81, 179, 206, 227, 160, 8, 73, 103,
78, 140, 130, 198, 181, 73, 66, 247, 140, 225, 230, 132, 165, 99, 79,
202, 32, 161, 20, 250, 21, 21, 20, 20, 115, 131, 99, 78, 171, 115,
167, 223, 69, 69, 69, 235, 90, 201, 205, 85, 118, 114, 208, 24, 185,
121, 225, 103, 87, 202, 246, 252, 187, 240, 192, 87, 118, 202, 135, 87,
61, 84, 79, 66, 192, 135, 86, 135, 160, 99, 73, 192, 150, 190, 236,
147, 25, 65, 163, 102, 42, 148, 62, 205, 181, 46, 240, 41, 115, 81,
226, 116, 178, 148, 10, 190, 89, 208, 69, 208, 175, 64, 83, 85, 223,
85, 127, 29, 232, 60, 201, 162, 114, 157, 208, 135, 176, 61, 59, 54,
157, 205, 88, 206, 185, 58, 107, 105, 102, 140, 247, 232, 187, 42, 240,
120, 150, 135, 104, 224, 176, 0, 73, 236, 79, 200, 117, 163, 39, 57,
65, 17, 16, 225, 193, 62, 195, 50, 190, 232, 202, 141, 166, 69, 249,
110, 167, 176, 166, 205, 167, 80, 222, 179, 117, 156, 63, 224, 167, 157,
92, 179, 142, 59, 54, 17, 116, 135, 118, 189, 58, 59, 225, 202, 97,
208, 185, 189, 58, 54, 236, 2, 157, 208, 187, 171, 105, 10, 79, 183,
59, 105, 160, 0, 200, 240, 225, 150, 119, 102, 210, 131, 40, 11, 179,
222, 222, 208, 127, 161, 239, 233, 131, 218, 238, 208, 86, 28, 39, 238,
179, 217, 114, 64, 52, 138, 219, 36, 59, 60, 162, 106, 128, 0, 204,
249, 59, 162, 56, 118, 128, 103, 142, 61, 59, 233, 36, 195, 78, 170,
48, 170, 241, 34, 54, 54, 55, 55, 35, 121, 121, 107, 54, 54, 188,
75, 75, 75, 126, 245, 89, 214, 151, 123, 94, 126, 126, 95, 95, 159,
4, 123, 251, 94, 126, 126, 126, 159, 4, 31, 251, 251, 132, 126, 126,
254, 4, 31, 27, 251, 251, 6, 6, 222, 4, 31, 31, 27, 251, 251,
245, 114, 23, 31, 27, 27, 27, 251, 51, 245, 23, 23, 31, 27, 27,
27, 19, 114, 203, 218, 204, 204, 126, 222, 179, 162, 1, 139, 218, 218,
38, 95, 98, 179, 1, 139, 221, 38, 38, 95, 69, 158, 123, 144, 221,
204, 191, 191, 69, 198, 208, 144, 144, 218, 218, 191, 221, 95, 109, 208,
144, 168, 6, 218, 218, 89, 130, 46, 172, 112, 185, 152, 218, 244, 4,
173, 172, 181, 187, 185, 37, 208, 122, 92, 186, 186, 248, 248, 216, 69,
67, 111, 152, 216, 248, 248, 208, 208, 21, 137, 138, 152, 152, 248, 248,
248, 21, 9, 137, 138, 138, 136, 136, 248, 21, 13, 9, 138, 136, 136,
136, 136, 165, 13, 13, 9, 130, 136, 136, 136, 165, 13, 13, 13, 28,
136, 136, 136, 46, 46, 46, 28, 28, 28, 28, 141, 219, 108, 124, 50,
235, 235, 235, 235, 153, 209, 134, 213, 220, 220, 220, 216, 49, 3, 117,
117, 147, 147, 220, 216, 25, 3, 161, 161, 174, 174, 210, 216, 181, 45,
133, 161, 161, 174, 210, 93, 165, 5, 20, 133, 161, 161, 174, 93, 165,
5, 20, 133, 161, 161, 116, 93, 165, 37, 37, 37, 20, 133, 133, 129,
38, 38, 70, 70, 124, 50, 50, 235, 48, 217, 85, 167, 80, 213, 213,
24, 48, 60, 195, 195, 214, 214, 147, 252, 187, 63, 97, 227, 241, 246,
212, 210, 109, 199, 97, 227, 227, 78, 143, 206, 109, 15, 43, 81, 227,
227, 192, 206, 175, 169, 41, 81, 81, 81, 81, 78, 173, 169, 8, 33,
163, 81, 81, 81, 37, 1, 191, 70, 70, 124, 124, 69, 188, 38, 217,
166, 167, 167, 80, 29, 48, 112, 249, 201, 127, 64, 214, 255, 48, 142,
113, 72, 17, 207, 246, 212, 187, 185, 63, 66, 227, 197, 192, 212, 187,
84, 63, 72, 227, 227, 227, 212, 109, 15, 10, 102, 148, 227, 227, 78,
175, 53, 41, 32, 32, 81, 62, 81, 110, 104, 70, 191, 189, 70, 70,
69, 29, 159, 158, 89, 70, 166, 167, 80, 213, 38, 217, 249, 85, 85,
223, 80, 151, 48, 112, 201, 162, 178, 246, 212, 93, 112, 142, 36, 72,
17, 197, 207, 48, 187, 58, 72, 66, 66, 242, 197, 187, 187, 10, 105,
79, 66, 148, 197, 176, 11, 14, 18, 79, 79, 148, 148, 50, 226, 254,
110, 110, 50, 170, 89, 3, 61, 165, 89, 110, 166, 70, 89, 228, 37,
208, 89, 166, 166, 166, 110, 73, 179, 56, 249, 249, 85, 56, 56, 5,
179, 112, 249, 201, 205, 205, 178, 20, 187, 112, 142, 36, 205, 205, 135,
110, 187, 185, 113, 36, 72, 72, 135, 176, 168, 61, 59, 54, 79, 79,
68
};
#endif // AV1_COMMON_PC_WIENER_FILTERS_H_