| /* |
| * Copyright (c) 2021, Alliance for Open Media. All rights reserved |
| * |
| * This source code is subject to the terms of the BSD 3-Clause Clear License |
| * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear |
| * License was not distributed with this source code in the LICENSE file, you |
| * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. 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 |
| * aomedia.org/license/patent-license/. |
| */ |
| |
| #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 |
| #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_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 NUM_PC_WIENER_TSKIP_TAPS_LUMA \ |
| (PC_WIENER_TSKIP_LENGTH_LUMA * PC_WIENER_TSKIP_LENGTH_LUMA) |
| #define NUM_PC_WIENER_FEATURES 4 |
| #define PC_WIENER_PREC_FILTER 7 |
| #define PC_WIENER_PREC_FEATURE 14 |
| #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(0), SCALE_LUMA(5384), SCALE_LUMA(4713), SCALE_LUMA(4426) |
| }; |
| 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 }; |
| |
| typedef struct PcwienerBuffers { |
| int buffer_width; |
| int16_t *feature_line_buffers[NUM_FEATURE_LINE_BUFFERS]; |
| int *feature_sum_buffers[NUM_PC_WIENER_FEATURES]; |
| int8_t *tskip_sum_buffer; |
| |
| int directional_feature_accumulator[NUM_PC_WIENER_FEATURES] |
| [PC_WIENER_FEATURE_ACC_SIZE]; |
| int16_t tskip_feature_accumulator[PC_WIENER_FEATURE_ACC_SIZE]; |
| |
| int feature_normalizers[NUM_PC_WIENER_FEATURES + 1]; |
| |
| // Lookup table useful in calculating the filter indices within |
| // get_pcwiener_index(). |
| int qval_given_tskip_lut[256][NUM_PC_WIENER_FEATURES]; |
| |
| // Prevent repeated calculation of qval_given_tskip_lut when qindex and |
| // bit_depth do not change. |
| int prev_qindex; |
| int prev_bit_depth; |
| } PcwienerBuffers; |
| |
| // clang-format off |
| static const int16_t |
| pcwiener_filters_luma_0[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = |
| { |
| // 0 ---------------------------------------------------------------------- |
| { 73, 127, -20, -30, -38, -29, 10, 7, -1, -3, 1, 7, -208}, |
| // 1 ---------------------------------------------------------------------- |
| { -1, 3, 1, -1, -2, -1, 0, 0, 1, 0, 0, 0, 0}, |
| // 2 ---------------------------------------------------------------------- |
| { 12, 14, -5, -6, -6, 2, 1, -1, 2, -1, 1, 1, -28}, |
| // 3 ---------------------------------------------------------------------- |
| { 43, 23, -7, -6, -12, -7, -2, -3, 3, 2, 2, 1, -74}, |
| // 4 ---------------------------------------------------------------------- |
| { 5, 12, -1, -2, -4, 19, 1, -5, -1, -7, 1, 2, -40}, |
| // 5 ---------------------------------------------------------------------- |
| { 8, 8, -3, -3, -2, -4, 0, 2, 0, 0, 0, 1, -14}, |
| // 6 ---------------------------------------------------------------------- |
| { 5, 7, -2, -3, -2, -3, 1, 1, 0, 0, 0, 1, -10}, |
| // 7 ---------------------------------------------------------------------- |
| { 16, 16, -7, -6, 11, -6, -3, 1, -3, 2, 2, 1, -48}, |
| // 8 ---------------------------------------------------------------------- |
| { 18, 50, -3, -14, 3, -18, -2, 5, -4, 1, 0, 4, -80}, |
| // 9 ---------------------------------------------------------------------- |
| { 16, 4, -6, -1, -1, -6, 0, 1, 0, 2, 1, 0, -20}, |
| // 10 ---------------------------------------------------------------------- |
| { -7, 11, 7, -3, -2, 11, 0, -5, 0, -3, -1, 1, -18}, |
| // 11 ---------------------------------------------------------------------- |
| { 21, 26, -6, -8, -10, 7, 1, -4, 1, -3, 2, 2, -58}, |
| // 12 ---------------------------------------------------------------------- |
| { 5, 7, -2, -4, -3, -1, 1, 0, 1, 0, 0, 1, -10}, |
| // 13 ---------------------------------------------------------------------- |
| { 14, 15, -6, -5, -4, -4, 1, 1, 0, 0, 1, 1, -28}, |
| // 14 ---------------------------------------------------------------------- |
| { 9, 10, -4, -4, -6, 0, 1, 0, 2, -1, 1, 1, -18}, |
| // 15 ---------------------------------------------------------------------- |
| { 25, 17, -6, -4, -12, -9, 1, 0, 3, 2, 1, 0, -36}, |
| // 16 ---------------------------------------------------------------------- |
| { 13, 13, -4, -5, 3, -7, -2, 1, -1, 2, 1, 1, -30}, |
| // 17 ---------------------------------------------------------------------- |
| { 4, 7, -1, -3, -5, -4, 1, 1, 2, 1, 0, 0, -6}, |
| // 18 ---------------------------------------------------------------------- |
| { 8, 33, 0, -13, -10, 1, 2, -2, 2, -1, 0, 3, -46}, |
| // 19 ---------------------------------------------------------------------- |
| { -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, |
| // 20 ---------------------------------------------------------------------- |
| { 11, 11, -5, -5, -4, -5, 1, 1, 1, 1, 1, 1, -18}, |
| // 21 ---------------------------------------------------------------------- |
| { -2, 17, 4, -3, 7, -6, -3, 2, -3, 0, -1, 1, -26}, |
| // 22 ---------------------------------------------------------------------- |
| { 30, 15, -7, 0, -5, -13, 0, 1, -1, 2, 1, 0, -46}, |
| // 23 ---------------------------------------------------------------------- |
| { 33, 26, -8, -4, 7, -12, -4, 0, -5, 0, 2, 2, -74}, |
| // 24 ---------------------------------------------------------------------- |
| { 8, 10, -4, -5, -4, -4, 1, 1, 1, 1, 1, 1, -14}, |
| // 25 ---------------------------------------------------------------------- |
| { 23, 24, -8, -8, -1, -9, -1, 1, -1, 1, 2, 2, -50}, |
| // 26 ---------------------------------------------------------------------- |
| { 18, 39, -5, -10, -11, -9, 5, 3, -2, -1, -1, 3, -58}, |
| // 27 ---------------------------------------------------------------------- |
| { 7, 15, -3, -6, -5, -5, 2, 2, 0, 0, 0, 2, -18}, |
| // 28 ---------------------------------------------------------------------- |
| { 12, 9, -5, -3, -8, -5, 2, 1, 2, 1, 1, 0, -14}, |
| // 29 ---------------------------------------------------------------------- |
| { 11, 8, -4, -1, -5, -6, 1, 1, 0, 1, 1, 0, -14}, |
| // 30 ---------------------------------------------------------------------- |
| { 3, 3, 0, 1, -2, 13, 0, -4, -1, -4, 1, 1, -22}, |
| // 31 ---------------------------------------------------------------------- |
| { 4, 3, 2, 2, -4, 26, 0, -6, 1, -6, 0, 0, -44}, |
| // 32 ---------------------------------------------------------------------- |
| { 13, 16, -7, -5, 15, -3, -3, 2, -6, 1, 1, 1, -50}, |
| // 33 ---------------------------------------------------------------------- |
| { 32, 20, 1, 9, 16, 15, -7, -7, -7, -7, -2, -2, -122}, |
| // 34 ---------------------------------------------------------------------- |
| { 16, 18, -6, -7, -9, -9, 2, 2, 2, 2, 1, 1, -26}, |
| // 35 ---------------------------------------------------------------------- |
| { 10, 11, -3, -3, -7, 8, 1, -3, 2, -4, 1, 1, -28}, |
| // 36 ---------------------------------------------------------------------- |
| { 36, -1, -12, 4, 17, 19, -10, -11, -5, -6, 8, 1, -80}, |
| // 37 ---------------------------------------------------------------------- |
| { 36, 12, -12, -3, -11, 5, 1, -1, 3, -3, 2, 1, -60}, |
| // 38 ---------------------------------------------------------------------- |
| { 1, 1, 0, -1, -2, -3, 0, 1, 1, 1, 0, 0, 2}, |
| // 39 ---------------------------------------------------------------------- |
| { 11, 11, -5, -5, -1, -4, 0, 1, 0, 1, 1, 1, -22}, |
| // 40 ---------------------------------------------------------------------- |
| { 5, 7, -3, -4, -3, -1, 1, 0, 1, 0, 1, 1, -10}, |
| // 41 ---------------------------------------------------------------------- |
| { 8, 14, -3, -4, -4, -8, 1, 3, 0, 1, 0, 1, -18}, |
| // 42 ---------------------------------------------------------------------- |
| { 28, 42, -9, -13, -13, -19, 3, 6, 1, 2, 0, 3, -62}, |
| // 43 ---------------------------------------------------------------------- |
| { 1, 1, 0, -1, -3, -2, 1, 0, 1, 1, 0, 0, 2}, |
| // 44 ---------------------------------------------------------------------- |
| { 17, 17, -5, -1, 2, 5, -1, -2, -3, -4, 1, 1, -54}, |
| // 45 ---------------------------------------------------------------------- |
| { 8, 12, -1, -4, 3, -5, -2, -1, -2, 2, 1, 1, -24}, |
| // 46 ---------------------------------------------------------------------- |
| { 4, 8, -2, -2, -5, -3, 2, 1, 1, 0, 0, 0, -8}, |
| // 47 ---------------------------------------------------------------------- |
| { -3, 6, 2, -2, 1, -2, 0, 1, -1, 0, -1, 1, -4}, |
| // 48 ---------------------------------------------------------------------- |
| { 5, 6, -1, -2, -4, 4, 0, -2, 1, -2, 1, 1, -14}, |
| // 49 ---------------------------------------------------------------------- |
| { 14, 12, -4, -5, -8, -7, 1, 0, 3, 3, 1, 0, -20}, |
| // 50 ---------------------------------------------------------------------- |
| { 17, 18, -7, -8, -8, -3, 1, 0, 2, 0, 2, 2, -32}, |
| // 51 ---------------------------------------------------------------------- |
| { 41, 18, -14, -3, -5, -14, 1, 1, -1, 4, 3, 0, -62}, |
| // 52 ---------------------------------------------------------------------- |
| { 17, 0, -4, 2, 15, -5, -5, 0, -5, 2, 1, 0, -36}, |
| // 53 ---------------------------------------------------------------------- |
| { 16, 14, -6, -5, -2, -8, 0, 2, -1, 1, 1, 2, -28}, |
| // 54 ---------------------------------------------------------------------- |
| { 39, 2, -10, 8, 17, 20, -10, -9, -7, -9, 6, 1, -96}, |
| // 55 ---------------------------------------------------------------------- |
| { 18, 7, -4, 1, -10, 2, 1, -2, 2, -2, 1, 0, -28}, |
| // 56 ---------------------------------------------------------------------- |
| { 49, 64, -13, -20, -31, -27, 6, 5, 6, 4, 1, 3, -94}, |
| // 57 ---------------------------------------------------------------------- |
| { 24, 22, -7, -5, 24, -6, -5, -2, -6, 0, 2, 2, -86}, |
| // 58 ---------------------------------------------------------------------- |
| { 28, 0, -9, 9, -10, 14, 2, -1, -1, -8, 2, 0, -52}, |
| // 59 ---------------------------------------------------------------------- |
| { 2, 2, -1, -1, -2, -1, 1, 0, 1, 0, 0, 0, -2}, |
| // 60 ---------------------------------------------------------------------- |
| { -5, 11, 6, -3, 16, -3, -6, 1, -3, 0, -1, 1, -28}, |
| // 61 ---------------------------------------------------------------------- |
| { 41, 32, -9, 3, -6, 12, -1, -5, -6, -9, 2, 1, -110}, |
| // 62 ---------------------------------------------------------------------- |
| { 5, 4, -2, -1, -4, -4, 1, 1, 1, 1, 0, 0, -4}, |
| // 63 ---------------------------------------------------------------------- |
| { 25, 25, -8, -8, -7, -5, 1, 0, 0, 0, 1, 2, -52}, |
| }; |
| |
| static const int16_t |
| pcwiener_filters_luma_1[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = |
| { |
| // 0 ---------------------------------------------------------------------- |
| { 21, 23, -6, -7, -7, 6, 0, -4, 0, -3, 2, 2, -54}, |
| // 1 ---------------------------------------------------------------------- |
| { 22, 23, -5, -5, -12, 15, 2, -6, 1, -5, 1, 1, -64}, |
| // 2 ---------------------------------------------------------------------- |
| { 7, 6, -3, -2, -5, -4, 2, 1, 1, 1, 0, 0, -8}, |
| // 3 ---------------------------------------------------------------------- |
| { 4, 7, -1, -3, -4, -5, 1, 1, 1, 2, 0, 0, -6}, |
| // 4 ---------------------------------------------------------------------- |
| { 16, 5, -6, 0, -8, 0, 3, -1, 1, -1, 1, 0, -20}, |
| // 5 ---------------------------------------------------------------------- |
| { 34, 5, -8, 8, 13, 17, -8, -8, -7, -9, 5, 1, -86}, |
| // 6 ---------------------------------------------------------------------- |
| { 24, 20, -3, -4, -11, -9, -1, -1, 3, 2, 1, 0, -42}, |
| // 7 ---------------------------------------------------------------------- |
| { 24, 20, -8, -5, 19, -6, -4, -1, -5, 1, 2, 1, -76}, |
| // 8 ---------------------------------------------------------------------- |
| { 37, 5, -12, 3, 12, -7, 2, 1, -8, 1, 1, 1, -72}, |
| // 9 ---------------------------------------------------------------------- |
| { 32, 17, -3, -3, -9, -1, -4, -4, 3, -1, 2, 1, -60}, |
| // 10 ---------------------------------------------------------------------- |
| { 3, 6, 0, -2, -4, -5, 1, 2, 1, 1, -1, 0, -4}, |
| // 11 ---------------------------------------------------------------------- |
| { 4, 11, -1, -4, -6, -2, 2, 0, 1, 0, 0, 1, -12}, |
| // 12 ---------------------------------------------------------------------- |
| { 33, 26, -8, -7, 5, -13, -4, 0, -3, 2, 2, 2, -70}, |
| // 13 ---------------------------------------------------------------------- |
| { 2, 3, -1, -1, -3, -2, 1, 1, 1, 0, 0, 0, -2}, |
| // 14 ---------------------------------------------------------------------- |
| { 14, 14, -6, -5, -7, -4, 2, 1, 1, 0, 1, 1, -24}, |
| // 15 ---------------------------------------------------------------------- |
| { 30, 2, -9, 9, -11, 14, 1, 1, 0, -9, 2, 0, -60}, |
| // 16 ---------------------------------------------------------------------- |
| { 5, 28, 1, -5, 7, -10, -4, 5, -3, -1, -1, 2, -48}, |
| // 17 ---------------------------------------------------------------------- |
| { 17, 17, -7, -6, -7, 4, 1, -2, 1, -3, 2, 2, -38}, |
| // 18 ---------------------------------------------------------------------- |
| { 13, 12, -6, -4, 11, -4, -3, 2, -4, 1, 1, 1, -40}, |
| // 19 ---------------------------------------------------------------------- |
| { 41, 0, -10, 5, 18, 23, -9, -10, -7, -8, 5, 2, -100}, |
| // 20 ---------------------------------------------------------------------- |
| { 10, 12, -3, -4, -7, -6, 2, 1, 1, 1, 0, 1, -16}, |
| // 21 ---------------------------------------------------------------------- |
| { 31, 41, -11, -10, -9, -18, 3, 5, -1, 1, 1, 2, -70}, |
| // 22 ---------------------------------------------------------------------- |
| { 28, 6, -9, 2, -10, 6, 1, -2, 2, -4, 2, 0, -44}, |
| // 23 ---------------------------------------------------------------------- |
| { 24, 22, -10, -7, 24, -2, -2, -4, -2, -1, 4, 2, -96}, |
| // 24 ---------------------------------------------------------------------- |
| { 11, 8, -2, -1, -7, 15, 1, -5, 1, -5, 1, 1, -36}, |
| // 25 ---------------------------------------------------------------------- |
| { -8, 16, 7, -3, -4, 15, 0, -5, 1, -5, -1, 1, -28}, |
| // 26 ---------------------------------------------------------------------- |
| { 16, 13, -5, -4, -8, -8, 1, 1, 2, 2, 1, 0, -22}, |
| // 27 ---------------------------------------------------------------------- |
| { 29, 2, -10, 4, 5, -10, -2, 3, -3, 0, 2, 0, -40}, |
| // 28 ---------------------------------------------------------------------- |
| { 21, 13, -5, 10, 3, 9, -1, -4, -9, -10, 3, 1, -62}, |
| // 29 ---------------------------------------------------------------------- |
| { 30, 26, -5, -3, 13, -6, -5, -3, -5, -2, 1, 1, -84}, |
| // 30 ---------------------------------------------------------------------- |
| { 16, 11, -6, -2, -8, -6, 2, 1, 1, 1, 1, 0, -22}, |
| // 31 ---------------------------------------------------------------------- |
| { 0, 11, 2, -3, 2, -5, -1, 2, -1, 0, -1, 1, -14}, |
| // 32 ---------------------------------------------------------------------- |
| { 19, 39, -7, -11, -12, -8, 5, 3, -1, -1, 0, 3, -58}, |
| // 33 ---------------------------------------------------------------------- |
| { 21, 23, -7, -8, -9, -5, 2, 0, 1, 0, 1, 2, -42}, |
| // 34 ---------------------------------------------------------------------- |
| { 10, 16, -4, -4, -8, -7, 4, 3, 0, 0, -1, 1, -20}, |
| // 35 ---------------------------------------------------------------------- |
| { 29, 33, -11, -10, -15, -12, 5, 3, 1, 1, 1, 2, -54}, |
| // 36 ---------------------------------------------------------------------- |
| { 37, 16, -14, -4, -10, 11, 1, -2, 2, -6, 3, 2, -72}, |
| // 37 ---------------------------------------------------------------------- |
| { 0, 18, 4, -4, 8, -8, -3, 2, -3, 0, -1, 2, -30}, |
| // 38 ---------------------------------------------------------------------- |
| { 32, 18, 4, 11, 18, 18, -8, -8, -8, -8, -3, -2, -128}, |
| // 39 ---------------------------------------------------------------------- |
| { 5, 6, -3, -3, -2, -3, 1, 2, 0, 0, 0, 1, -8}, |
| // 40 ---------------------------------------------------------------------- |
| { 49, 25, -5, -9, -8, -8, -5, -5, 4, 4, 2, 1, -90}, |
| // 41 ---------------------------------------------------------------------- |
| { 43, 16, -7, 13, 13, 18, -7, -8, -11, -13, 3, 1, -122}, |
| // 42 ---------------------------------------------------------------------- |
| { -2, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}, |
| // 43 ---------------------------------------------------------------------- |
| { -2, 13, 5, -4, 19, -4, -6, 1, -3, 0, -1, 2, -40}, |
| // 44 ---------------------------------------------------------------------- |
| { 12, 1, -5, 4, -2, 25, 0, -5, 0, -8, 2, 0, -48}, |
| // 45 ---------------------------------------------------------------------- |
| { 19, 17, -8, -4, 15, -7, -4, 2, -5, 1, 2, 1, -58}, |
| // 46 ---------------------------------------------------------------------- |
| { 16, 15, -7, -6, 2, -6, -1, 1, -2, 1, 2, 2, -34}, |
| // 47 ---------------------------------------------------------------------- |
| { 14, 21, -5, -5, -7, -10, 2, 4, 0, 0, 0, 1, -30}, |
| // 48 ---------------------------------------------------------------------- |
| { 35, 22, -9, -7, -10, -10, -1, 0, 3, 2, 2, 1, -56}, |
| // 49 ---------------------------------------------------------------------- |
| { 26, 26, -1, -3, -1, 10, -3, -7, -3, -5, 0, 1, -80}, |
| // 50 ---------------------------------------------------------------------- |
| { 10, 9, -5, -4, -4, -3, 1, 1, 1, 0, 1, 1, -16}, |
| // 51 ---------------------------------------------------------------------- |
| { 25, 10, -4, 7, 7, 11, -5, -6, -7, -8, 3, 1, -68}, |
| // 52 ---------------------------------------------------------------------- |
| { -3, 7, 3, -2, -3, 4, 1, -1, 0, -2, -1, 1, -8}, |
| // 53 ---------------------------------------------------------------------- |
| { 3, 12, 4, -2, -4, 31, 0, -10, 1, -7, 0, 1, -58}, |
| // 54 ---------------------------------------------------------------------- |
| { 2, 2, 0, -1, -2, -2, 0, 0, 1, 1, 0, 0, -2}, |
| // 55 ---------------------------------------------------------------------- |
| { 16, 19, -6, -9, -7, -4, 1, 0, 2, 1, 1, 2, -32}, |
| // 56 ---------------------------------------------------------------------- |
| { 22, 25, -7, -8, -7, -5, 1, 0, 0, 0, 1, 2, -48}, |
| // 57 ---------------------------------------------------------------------- |
| { 12, 14, -5, -6, -2, -6, 0, 1, 0, 2, 1, 1, -24}, |
| // 58 ---------------------------------------------------------------------- |
| { 12, 13, -5, -5, -7, -3, 1, 1, 2, 0, 1, 1, -22}, |
| // 59 ---------------------------------------------------------------------- |
| { 25, 22, -8, -7, 1, -11, -2, 1, -2, 2, 2, 2, -50}, |
| // 60 ---------------------------------------------------------------------- |
| { 33, 15, -7, -1, -2, -12, -2, -1, -1, 3, 2, 0, -54}, |
| // 61 ---------------------------------------------------------------------- |
| { 19, 8, -9, -1, -4, -7, 1, 2, 0, 1, 2, 0, -24}, |
| // 62 ---------------------------------------------------------------------- |
| { -1, -2, 1, 1, -2, -1, 1, 0, 1, 1, -1, -1, 6}, |
| // 63 ---------------------------------------------------------------------- |
| { 10, 32, 0, -12, -11, 3, 2, -3, 2, -2, 0, 3, -48}, |
| }; |
| |
| static const int16_t |
| pcwiener_filters_luma_2[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = |
| { |
| // 0 ---------------------------------------------------------------------- |
| { 38, 18, -10, -5, -10, 20, -1, 2, 4, -9, 1, 2, -100}, |
| // 1 ---------------------------------------------------------------------- |
| { 11, 15, -4, -5, -8, -7, 3, 2, 1, 1, 0, 1, -20}, |
| // 2 ---------------------------------------------------------------------- |
| { 20, 9, -10, -3, 18, -4, -2, 1, -4, 1, 3, 1, -60}, |
| // 3 ---------------------------------------------------------------------- |
| { 18, 12, -7, -4, -7, -8, 1, 2, 2, 2, 1, 0, -24}, |
| // 4 ---------------------------------------------------------------------- |
| { 10, 15, -4, -6, -6, -9, 2, 3, 1, 2, 0, 1, -18}, |
| // 5 ---------------------------------------------------------------------- |
| { 61, 30, -8, -10, 5, -13, -8, -6, 0, 5, 4, 2, -124}, |
| // 6 ---------------------------------------------------------------------- |
| { 26, 27, -5, -5, 22, -4, -3, -4, -2, -3, 1, 1, -102}, |
| // 7 ---------------------------------------------------------------------- |
| { 8, 19, -3, -8, -8, -3, 3, 1, 1, 0, 0, 2, -24}, |
| // 8 ---------------------------------------------------------------------- |
| { 38, 16, 3, -3, -3, 10, -9, -7, 3, -5, 1, 2, -92}, |
| // 9 ---------------------------------------------------------------------- |
| { 8, 7, -3, -2, -5, -5, 1, 1, 1, 1, 1, 0, -10}, |
| // 10 ---------------------------------------------------------------------- |
| { 22, 25, -8, -8, -9, -5, 2, 1, 1, -1, 1, 2, -46}, |
| // 11 ---------------------------------------------------------------------- |
| { 28, 24, -8, -6, 6, -10, -3, 0, -4, 1, 2, 2, -64}, |
| // 12 ---------------------------------------------------------------------- |
| { 5, 7, 2, -1, 24, -7, -3, 3, 1, -4, 0, 4, -62}, |
| // 13 ---------------------------------------------------------------------- |
| { 30, 20, -11, -8, -11, -9, 1, 0, 3, 3, 3, 1, -44}, |
| // 14 ---------------------------------------------------------------------- |
| { 2, 13, 1, -5, 0, -5, -1, 1, 0, 1, 0, 1, -16}, |
| // 15 ---------------------------------------------------------------------- |
| { 25, 21, -8, -5, -1, -1, -1, -1, -2, -2, 2, 2, -58}, |
| // 16 ---------------------------------------------------------------------- |
| { 8, 8, -3, -5, -3, -4, 0, 0, 1, 2, 1, 1, -12}, |
| // 17 ---------------------------------------------------------------------- |
| { 15, 16, -6, -6, -8, -5, 2, 1, 1, 0, 1, 2, -26}, |
| // 18 ---------------------------------------------------------------------- |
| { 33, 14, -7, 0, -1, -12, -2, 0, -2, 2, 2, 0, -54}, |
| // 19 ---------------------------------------------------------------------- |
| { -2, 16, 3, -3, -4, 13, 1, -4, -1, -5, 0, 2, -32}, |
| // 20 ---------------------------------------------------------------------- |
| { 31, 21, -6, -9, -5, -6, -3, -2, 2, 2, 2, 2, -58}, |
| // 21 ---------------------------------------------------------------------- |
| { 24, 22, 5, 4, 4, 5, -5, -7, -4, -7, -1, 0, -80}, |
| // 22 ---------------------------------------------------------------------- |
| { 23, 22, 1, 1, -5, 19, -3, -7, -4, -6, 0, 1, -84}, |
| // 23 ---------------------------------------------------------------------- |
| { 76, 103, -23, -32, -40, -48, 9, 12, 5, 7, 1, 6, -152}, |
| // 24 ---------------------------------------------------------------------- |
| { 29, 2, -2, 8, 15, 18, -8, -7, -5, -7, 1, -1, -86}, |
| // 25 ---------------------------------------------------------------------- |
| { 9, 10, -4, -5, -8, -7, 3, 2, 2, 2, 0, 1, -10}, |
| // 26 ---------------------------------------------------------------------- |
| { 33, 19, -5, -3, -9, -9, -2, -2, 2, 2, 2, 0, -56}, |
| // 27 ---------------------------------------------------------------------- |
| { 19, 19, -7, -7, -7, -5, 1, 1, 1, 0, 1, 2, -36}, |
| // 28 ---------------------------------------------------------------------- |
| { 8, 33, 4, -8, -10, 21, 1, -11, 0, -2, 1, 2, -78}, |
| // 29 ---------------------------------------------------------------------- |
| { 27, 14, 3, 10, 16, 15, -6, -5, -5, -6, -4, -3, -112}, |
| // 30 ---------------------------------------------------------------------- |
| { 37, 33, 2, 3, -15, -18, -1, 1, -3, 0, 1, 0, -80}, |
| // 31 ---------------------------------------------------------------------- |
| { 18, 20, -4, -4, -10, 16, 0, -6, 2, -6, 2, 1, -58}, |
| // 32 ---------------------------------------------------------------------- |
| { 21, -1, -5, 5, -8, 12, 0, -5, 0, -4, 3, 0, -36}, |
| // 33 ---------------------------------------------------------------------- |
| { -3, 8, 3, -3, -2, 4, 0, -2, 0, -1, 0, 1, -10}, |
| // 34 ---------------------------------------------------------------------- |
| { 21, 38, -7, -2, -5, -3, 4, 1, -8, -5, 1, 4, -78}, |
| // 35 ---------------------------------------------------------------------- |
| { 2, 13, 6, -6, -4, 32, -1, -10, 2, -2, 0, 1, -66}, |
| // 36 ---------------------------------------------------------------------- |
| { 31, 5, -10, 3, 9, -9, -1, 2, -5, 1, 1, 0, -54}, |
| // 37 ---------------------------------------------------------------------- |
| { 7, 17, 3, -2, 19, -6, -10, 0, 3, -1, 2, 0, -64}, |
| // 38 ---------------------------------------------------------------------- |
| { 53, 80, -16, -4, -13, -2, 4, 0, -10, -11, 3, 5, -178}, |
| // 39 ---------------------------------------------------------------------- |
| { 25, 11, -9, -2, -9, -1, 1, 0, 2, -2, 2, 1, -38}, |
| // 40 ---------------------------------------------------------------------- |
| { 40, 9, 3, 7, 7, -10, -4, -3, -7, 1, -1, 0, -84}, |
| // 41 ---------------------------------------------------------------------- |
| { 22, 20, -8, -7, 0, -9, -1, 1, -2, 2, 2, 2, -44}, |
| // 42 ---------------------------------------------------------------------- |
| { 16, 32, -4, -1, 3, -10, -3, 5, -3, -5, 1, 3, -68}, |
| // 43 ---------------------------------------------------------------------- |
| { 36, 7, -8, 10, 12, 17, -6, -8, -9, -10, 4, 1, -92}, |
| // 44 ---------------------------------------------------------------------- |
| { 38, 23, 5, -6, -7, 1, -10, -7, 6, -1, 2, 1, -90}, |
| // 45 ---------------------------------------------------------------------- |
| { 15, 21, -6, -5, -8, -10, 3, 4, 0, 0, 0, 1, -30}, |
| // 46 ---------------------------------------------------------------------- |
| { 1, 18, 2, -4, 6, -8, -2, 3, -3, 0, -1, 2, -28}, |
| // 47 ---------------------------------------------------------------------- |
| { -2, -2, 1, 1, 1, 0, 0, 0, -1, 0, 0, 0, 4}, |
| // 48 ---------------------------------------------------------------------- |
| { -1, 3, 0, -2, -1, -1, 0, 1, 1, 0, 0, 0, 0}, |
| // 49 ---------------------------------------------------------------------- |
| { 0, 3, 0, -2, 0, -2, 0, 1, 0, 0, 0, 1, -2}, |
| // 50 ---------------------------------------------------------------------- |
| { 24, 7, -10, 0, -1, -9, 0, 3, -1, 1, 2, 0, -32}, |
| // 51 ---------------------------------------------------------------------- |
| { 35, 7, -13, 2, -9, 13, 1, -2, 1, -7, 3, 1, -64}, |
| // 52 ---------------------------------------------------------------------- |
| { 8, 5, -2, -5, -3, 39, 0, -5, 3, -4, 1, 1, -76}, |
| // 53 ---------------------------------------------------------------------- |
| { 16, 12, -8, -2, 0, -7, 0, 4, -1, -1, 1, 1, -30}, |
| // 54 ---------------------------------------------------------------------- |
| { 31, 31, -10, -4, 8, -9, -3, 2, -5, -3, 2, 2, -84}, |
| // 55 ---------------------------------------------------------------------- |
| { 18, 31, -7, -8, -10, -8, 5, 3, -2, -1, 0, 3, -48}, |
| // 56 ---------------------------------------------------------------------- |
| { 16, 13, -5, -4, -8, -9, 1, 1, 2, 3, 1, 0, -22}, |
| // 57 ---------------------------------------------------------------------- |
| { 15, 15, -6, -6, -6, 7, 1, -3, 1, -3, 2, 2, -38}, |
| // 58 ---------------------------------------------------------------------- |
| { 22, 21, -9, -7, 17, -6, -4, 0, -3, 1, 3, 1, -72}, |
| // 59 ---------------------------------------------------------------------- |
| { 15, 13, -7, -3, 12, -5, -3, 1, -5, 1, 2, 1, -44}, |
| // 60 ---------------------------------------------------------------------- |
| { 24, 10, -13, -3, 22, -5, 5, 3, -5, 0, 2, 2, -84}, |
| // 61 ---------------------------------------------------------------------- |
| { 36, 10, -5, 0, 15, -5, 6, 0, -10, 1, -2, 2, -96}, |
| // 62 ---------------------------------------------------------------------- |
| { 5, 14, 2, -2, 11, -7, -5, 2, -2, -1, 0, 2, -38}, |
| // 63 ---------------------------------------------------------------------- |
| { 14, 14, -7, -6, -4, -6, 1, 1, 0, 2, 2, 1, -24}, |
| }; |
| |
| static const int16_t |
| pcwiener_filters_luma_3[NUM_PC_WIENER_FILTERS][NUM_PC_WIENER_TAPS_LUMA] = |
| { |
| // 0 ---------------------------------------------------------------------- |
| { 21, 15, -11, 0, -6, -5, 5, 3, -5, -3, 2, 3, -38}, |
| // 1 ---------------------------------------------------------------------- |
| { 18, 12, -7, -4, 0, -10, 0, 3, -1, 2, 1, 1, -30}, |
| // 2 ---------------------------------------------------------------------- |
| { 16, 18, -7, -5, -10, -7, 4, 3, 0, -1, 1, 2, -28}, |
| // 3 ---------------------------------------------------------------------- |
| { 23, 29, 2, -5, 5, 10, -4, -7, -3, -5, -2, 9, -104}, |
| // 4 ---------------------------------------------------------------------- |
| { 10, 17, -6, -7, -9, -4, 4, 2, 1, 0, 1, 2, -22}, |
| // 5 ---------------------------------------------------------------------- |
| { -3, 18, 2, -6, -3, 13, 0, -3, 0, -4, 1, 3, -36}, |
| // 6 ---------------------------------------------------------------------- |
| { 13, 23, -2, -5, -9, 6, 2, -4, 0, -1, 1, 1, -50}, |
| // 7 ---------------------------------------------------------------------- |
| { 18, 17, -8, -8, -6, 5, 2, -2, 1, -1, 2, 2, -44}, |
| // 8 ---------------------------------------------------------------------- |
| { 30, 13, 6, 4, 6, 14, -10, -14, -4, -8, 11, 2, -100}, |
| // 9 ---------------------------------------------------------------------- |
| { 23, 18, -9, -4, -5, 1, 1, 0, 0, -2, 2, 1, -52}, |
| // 10 ---------------------------------------------------------------------- |
| { 15, 18, -6, -4, -8, -2, 3, 1, -1, -2, 1, 2, -34}, |
| // 11 ---------------------------------------------------------------------- |
| { 20, 14, -10, -8, 20, -7, 0, 2, 2, 2, 3, 1, -78}, |
| // 12 ---------------------------------------------------------------------- |
| { 21, 16, -6, -2, 3, -1, -1, 0, 2, -4, 1, 2, -62}, |
| // 13 ---------------------------------------------------------------------- |
| { 19, 17, -6, -7, -8, -9, 1, 1, 2, 3, 1, 1, -30}, |
| // 14 ---------------------------------------------------------------------- |
| { 2, 21, 5, -6, -4, 12, 1, -6, -6, 10, 0, 5, -68}, |
| // 15 ---------------------------------------------------------------------- |
| { 10, 13, -5, -3, -3, -7, 2, 4, -2, -1, 0, 2, -20}, |
| // 16 ---------------------------------------------------------------------- |
| { 36, 8, -6, 10, 13, 17, -7, -8, -9, -10, 3, 1, -96}, |
| // 17 ---------------------------------------------------------------------- |
| { 13, 9, -9, -2, -3, 24, 1, -3, 1, -7, 3, 1, -56}, |
| // 18 ---------------------------------------------------------------------- |
| { 21, 23, -1, -2, 22, -1, -1, -4, 2, -2, -1, -2, -108}, |
| // 19 ---------------------------------------------------------------------- |
| { 11, 17, -3, -4, 17, -9, -2, 3, 0, -5, 1, 7, -66}, |
| // 20 ---------------------------------------------------------------------- |
| { 39, 6, 1, 13, 9, -11, 3, -3, -12, -2, 1, 1, -90}, |
| // 21 ---------------------------------------------------------------------- |
| { 28, 17, -5, -4, -5, -9, -2, -1, 1, 3, 2, 0, -50}, |
| // 22 ---------------------------------------------------------------------- |
| { 60, 1, -47, 11, -7, 38, 16, 18, -16, -22, 9, 0, -122}, |
| // 23 ---------------------------------------------------------------------- |
| { 23, 6, -3, -5, 2, 11, -4, 23, 3, -7, -3, 3, -98}, |
| // 24 ---------------------------------------------------------------------- |
| { 10, 26, 3, -5, 5, 11, -7, -8, -12, 5, 4, 18, -100}, |
| // 25 ---------------------------------------------------------------------- |
| { 11, 13, -3, -2, 1, -8, -1, 2, -1, 0, 1, 1, -28}, |
| // 26 ---------------------------------------------------------------------- |
| { 19, 21, 14, 13, 19, 14, -10, -9, -10, -11, -3, -2, -110}, |
| // 27 ---------------------------------------------------------------------- |
| { 14, 6, -10, -9, -2, 29, 0, 8, 5, 2, 1, 0, -88}, |
| // 28 ---------------------------------------------------------------------- |
| { 20, 17, 4, -3, -6, 5, -6, -8, 0, 0, 3, 1, -54}, |
| // 29 ---------------------------------------------------------------------- |
| { 18, 27, -2, -3, 4, -3, -4, -1, -6, -8, 3, 10, -70}, |
| // 30 ---------------------------------------------------------------------- |
| { 6, 5, 1, -3, 24, -6, -1, 4, 3, -8, 0, 8, -66}, |
| // 31 ---------------------------------------------------------------------- |
| { 31, 9, -12, 1, -9, 12, 0, -1, 2, -7, 3, 1, -60}, |
| // 32 ---------------------------------------------------------------------- |
| { 23, 18, -8, -1, 16, -6, -3, 1, -4, -3, 1, 2, -72}, |
| // 33 ---------------------------------------------------------------------- |
| { -1, 8, -8, -9, -2, 12, 23, -3, -9, 28, -13, 16, -84}, |
| // 34 ---------------------------------------------------------------------- |
| { 38, 12, -3, 6, 8, -7, -2, -8, -10, 5, 7, -2, -88}, |
| // 35 ---------------------------------------------------------------------- |
| { 9, 4, 7, 6, 14, 10, 5, 6, 6, 3, -13, -9, -96}, |
| // 36 ---------------------------------------------------------------------- |
| { 20, 17, -7, -2, 1, -9, -1, 2, -3, 0, 2, 1, -42}, |
| // 37 ---------------------------------------------------------------------- |
| { 25, 22, -2, -7, -8, -3, -4, -3, 4, 0, 2, 1, -54}, |
| // 38 ---------------------------------------------------------------------- |
| { 34, 11, 5, 7, 15, 6, -6, -7, -7, -13, 6, 3, -108}, |
| // 39 ---------------------------------------------------------------------- |
| { 29, 9, -9, -1, 11, -12, -3, 3, -3, 1, 2, 1, -56}, |
| // 40 ---------------------------------------------------------------------- |
| { 14, 0, 9, 6, 9, 10, 2, 0, 1, -1, -10, -6, -68}, |
| // 41 ---------------------------------------------------------------------- |
| { -26, 24, -15, 12, -20, 25, -12, 38, 28, 4, 0, -15, -86}, |
| // 42 ---------------------------------------------------------------------- |
| { 30, 6, -2, 4, 1, 15, -7, 7, -2, -4, 1, 0, -98}, |
| // 43 ---------------------------------------------------------------------- |
| { 20, 19, 5, 5, 5, 10, -6, -8, -5, -8, 1, 0, -76}, |
| // 44 ---------------------------------------------------------------------- |
| { 20, 21, -7, -8, -8, -3, 1, 0, 2, -1, 1, 2, -40}, |
| // 45 ---------------------------------------------------------------------- |
| { 16, 25, 2, -4, 7, 1, -7, -7, 3, -9, 4, 9, -80}, |
| // 46 ---------------------------------------------------------------------- |
| { 19, 26, -7, -8, -1, 1, -1, -1, -6, -1, 3, 10, -68}, |
| // 47 ---------------------------------------------------------------------- |
| { 5, 3, -1, -1, -3, -4, 0, 1, 1, 1, 0, 0, -4}, |
| // 48 ---------------------------------------------------------------------- |
| { 27, 12, -11, -4, -8, -2, 1, 1, 2, -1, 3, 1, -42}, |
| // 49 ---------------------------------------------------------------------- |
| { 2, 0, 0, -3, 0, 35, -4, -7, 3, 0, 3, 1, -60}, |
| // 50 ---------------------------------------------------------------------- |
| { 10, 16, -4, -5, 0, -8, 1, 3, -1, 0, 0, 2, -28}, |
| // 51 ---------------------------------------------------------------------- |
| { 19, 17, 0, 1, 0, 13, -4, -4, -6, -1, 1, 1, -74}, |
| // 52 ---------------------------------------------------------------------- |
| { 18, 7, -10, -9, 0, 24, 0, -1, 1, 10, 3, -1, -84}, |
| // 53 ---------------------------------------------------------------------- |
| { 23, 16, -4, 2, -12, -3, -1, 4, 3, -8, 1, 1, -44}, |
| // 54 ---------------------------------------------------------------------- |
| { 12, 23, -1, 5, 13, 24, -19, 9, -8, -24, -1, 14, -94}, |
| // 55 ---------------------------------------------------------------------- |
| { 14, 15, -7, -6, -6, -6, 1, 2, 1, 0, 2, 2, -24}, |
| // 56 ---------------------------------------------------------------------- |
| { 15, 22, -5, -2, -1, -1, 0, 2, -7, -6, 2, 7, -52}, |
| // 57 ---------------------------------------------------------------------- |
| { 19, 14, -8, -5, -6, -9, 1, 3, 1, 2, 1, 1, -28}, |
| // 58 ---------------------------------------------------------------------- |
| { 14, 19, -4, -1, 1, -6, -2, 4, -3, -5, 1, 3, -42}, |
| // 59 ---------------------------------------------------------------------- |
| { 17, 17, -1, 2, -3, 4, 0, -4, -5, -4, 2, 0, -50}, |
| // 60 ---------------------------------------------------------------------- |
| { 30, 5, -6, -5, 17, -5, 10, 0, -4, 1, 2, 3, -96}, |
| // 61 ---------------------------------------------------------------------- |
| { 15, 12, -7, -5, -5, -6, 1, 1, 0, 1, 2, 2, -22}, |
| // 62 ---------------------------------------------------------------------- |
| { 34, 11, 5, 2, -3, 12, -11, -9, 3, -7, 6, 1, -88}, |
| // 63 ---------------------------------------------------------------------- |
| { 8, 6, -4, 0, -5, -3, 3, 2, -1, -2, 0, 1, -10}, |
| }; |
| |
| 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_12_0[NUM_PC_WIENER_LUT_CLASSES] = { |
| 9, 2, 6, 5, 9, 9, 11, 9, 5, 9, 5, 5, 10, 1, 5, 5, 7, 4, 1, |
| 9, 10, 9, 8, 9, 3, 5, 9, 9, 10, 3, 3, 9, 10, 10, 5, 9, 4, 5, |
| 2, 9, 5, 10, 10, 5, 9, 7, 5, 5, 0, 9, 3, 9, 7, 5, 4, 9, 8, |
| 5, 5, 4, 0, 5, 1, 1, 3, 9, 1, 9, 6, 3, 7, 7, 4, 5, 2, 2, |
| 5, 9, 8, 6, 3, 1, 10, 2, 9, 7, 7, 8, 6, 8, 2, 2, 11, 4, 2, |
| 11, 1, 5, 5, 9, 1, 1, 1, 7, 6, 4, 10, 4, 11, 9, 8, 8, 0, 0, |
| 0, 9, 8, 7, 7, 9, 4, 0, 2, 2, 3, 3, 11, 7, 9, 8, 8, 10, 11, |
| 10, 7, 8, 8, 8, 8, 2, 8, 10, 0, 8, 2, 5, 4, 11, 1, 10, 1, 2, |
| 8, 0, 11, 7, 6, 7, 8, 3, 9, 8, 4, 10, 4, 9, 7, 3, 5, 5, 6, |
| 5, 9, 9, 8, 5, 5, 11, 8, 6, 7, 5, 11, 9, 4, 0, 3, 0, 2, 10, |
| 10, 2, 8, 4, 8, 1, 8, 1, 8, 5, 7, 4, 1, 0, 0, 4, 8, 7, 6, |
| 7, 11, 2, 11, 11, 6, 3, 3, 11, 3, 11, 3, 4, 11, 11, 6, 1, 10, 1, |
| 1, 8, 1, 8, 6, 4, 6, 3, 8, 8, 6, 3, 0, 0, 4, 2, 3, 11, 7, |
| 1, 1, 4, 3, 9, 3, 3, 3, 3, |
| }; |
| 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_6_0[NUM_PC_WIENER_LUT_CLASSES] = { |
| 4, 2, 3, 1, 4, 4, 1, 4, 1, 4, 1, 1, 5, 5, 1, 1, 1, 3, 5, 4, 5, 4, 0, 4, |
| 0, 1, 4, 4, 5, 0, 0, 4, 5, 5, 1, 4, 3, 1, 2, 4, 1, 5, 5, 1, 4, 1, 1, 1, |
| 4, 4, 0, 4, 1, 1, 3, 4, 0, 1, 1, 3, 4, 1, 5, 5, 0, 4, 5, 4, 3, 0, 1, 1, |
| 3, 1, 2, 2, 1, 4, 0, 3, 0, 5, 5, 2, 4, 1, 1, 0, 3, 0, 2, 2, 1, 3, 2, 1, |
| 5, 1, 1, 4, 5, 5, 5, 1, 3, 3, 5, 3, 1, 4, 0, 0, 4, 4, 4, 4, 0, 1, 1, 4, |
| 3, 4, 2, 2, 0, 0, 1, 1, 4, 0, 0, 5, 1, 5, 1, 0, 0, 0, 0, 2, 0, 5, 4, 0, |
| 2, 1, 3, 1, 5, 5, 5, 2, 0, 4, 1, 1, 3, 1, 0, 0, 4, 0, 3, 5, 3, 4, 1, 0, |
| 1, 1, 3, 1, 4, 4, 0, 1, 1, 1, 0, 3, 1, 1, 1, 4, 3, 4, 0, 4, 2, 5, 5, 2, |
| 0, 3, 0, 5, 0, 5, 0, 1, 1, 3, 5, 4, 4, 3, 0, 1, 3, 1, 1, 2, 1, 1, 3, 0, |
| 0, 1, 0, 1, 0, 3, 1, 1, 3, 5, 5, 5, 5, 0, 5, 0, 3, 3, 3, 0, 0, 0, 3, 0, |
| 4, 4, 3, 2, 0, 1, 1, 5, 5, 3, 0, 4, 0, 0, 0, 0, |
| }; |
| 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_3_0[NUM_PC_WIENER_LUT_CLASSES] = { |
| 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 0, 2, 0, 2, |
| 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, 0, 2, 1, 2, 2, 0, 0, 2, 2, 2, 2, 2, |
| 2, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 0, 0, 2, 2, |
| 0, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 1, 2, 2, 2, 0, 0, 0, 1, 1, 2, 0, 1, 2, |
| 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, |
| 0, 2, 1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, |
| 1, 2, 0, 2, 0, 0, 0, 1, 0, 2, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, |
| 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 1, 0, 0, 1, |
| 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 1, 2, 2, 0, 0, |
| 0, 2, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 2, 2, 0, 1, 0, 2, 2, 0, 0, 0, 0, 2, 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_12_1[NUM_PC_WIENER_LUT_CLASSES] = { |
| 8, 2, 2, 9, 1, 11, 5, 1, 11, 11, 9, 9, 2, 11, 9, 9, 5, 10, 2, |
| 1, 11, 11, 6, 1, 7, 11, 8, 1, 11, 7, 3, 1, 6, 11, 9, 1, 10, 11, |
| 5, 11, 6, 11, 6, 9, 1, 1, 11, 11, 0, 11, 7, 1, 5, 11, 2, 1, 10, |
| 9, 0, 2, 8, 0, 6, 9, 7, 1, 10, 1, 2, 7, 3, 5, 10, 9, 4, 5, |
| 9, 8, 3, 2, 7, 6, 6, 4, 11, 3, 5, 3, 2, 3, 4, 4, 7, 7, 5, |
| 5, 6, 9, 9, 8, 10, 6, 9, 3, 2, 2, 6, 2, 5, 0, 3, 7, 0, 3, |
| 5, 8, 6, 5, 5, 8, 3, 8, 4, 5, 3, 7, 5, 3, 1, 6, 7, 11, 5, |
| 11, 5, 10, 7, 7, 7, 7, 6, 6, 0, 6, 1, 9, 2, 7, 6, 0, 6, 4, |
| 7, 8, 5, 4, 2, 3, 3, 7, 1, 3, 3, 6, 6, 11, 3, 3, 0, 11, 2, |
| 0, 1, 11, 3, 11, 0, 5, 10, 2, 3, 11, 7, 8, 2, 0, 7, 0, 4, 0, |
| 6, 10, 6, 6, 7, 5, 6, 10, 6, 9, 3, 3, 6, 2, 11, 10, 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, 10, 2, 10, 2, 7, 10, 10, 10, 10, 3, 5, 10, 5, 7, 5, 3, |
| 3, 7, 3, 5, 5, 7, 3, 7, 7, |
| }; |
| 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_6_1[NUM_PC_WIENER_LUT_CLASSES] = { |
| 5, 2, 2, 5, 1, 5, 1, 1, 5, 5, 5, 5, 2, 5, 5, 5, 1, 4, 2, 1, 5, 5, 0, 1, |
| 0, 5, 5, 1, 5, 0, 4, 1, 0, 5, 5, 1, 4, 5, 1, 5, 0, 5, 0, 5, 1, 1, 5, 5, |
| 5, 5, 0, 1, 1, 5, 2, 1, 4, 5, 5, 2, 5, 5, 0, 5, 0, 1, 4, 1, 2, 0, 4, 1, |
| 4, 5, 3, 1, 5, 5, 4, 2, 0, 0, 0, 3, 5, 4, 1, 4, 2, 4, 3, 3, 0, 0, 1, 1, |
| 0, 5, 5, 5, 4, 0, 5, 4, 2, 2, 0, 2, 1, 5, 4, 0, 5, 4, 1, 5, 0, 1, 1, 5, |
| 4, 5, 3, 1, 4, 0, 1, 4, 1, 0, 0, 5, 1, 5, 1, 4, 0, 0, 0, 0, 0, 0, 5, 0, |
| 1, 5, 2, 0, 0, 5, 0, 3, 0, 5, 1, 3, 2, 4, 4, 0, 1, 4, 4, 0, 0, 5, 4, 4, |
| 5, 5, 2, 5, 1, 5, 4, 5, 5, 1, 4, 2, 4, 5, 0, 5, 2, 5, 0, 5, 3, 5, 0, 4, |
| 0, 0, 0, 1, 0, 4, 0, 5, 4, 4, 0, 2, 5, 4, 0, 4, 4, 1, 0, 3, 4, 0, 4, 0, |
| 0, 1, 1, 1, 0, 1, 1, 4, 2, 4, 0, 0, 0, 0, 0, 4, 2, 4, 2, 0, 4, 4, 4, 4, |
| 4, 1, 4, 1, 0, 1, 4, 4, 0, 4, 1, 1, 0, 4, 0, 0, |
| }; |
| 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_3_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, 1, 1, 1, 1, 0, 2, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 1, 1, 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, 1, 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, 1, 0, 1, 1, 1, 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, 1, 1, 0, 0, |
| 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 0, 1, 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_12_2[NUM_PC_WIENER_LUT_CLASSES] = { |
| 10, 3, 8, 7, 3, 3, 11, 3, 3, 3, 10, 10, 8, 3, 10, 10, 1, 9, 9, |
| 7, 3, 3, 8, 3, 4, 3, 7, 7, 3, 6, 11, 3, 6, 6, 1, 7, 9, 3, |
| 2, 10, 9, 6, 8, 1, 7, 3, 3, 6, 0, 3, 4, 7, 1, 3, 9, 7, 11, |
| 1, 10, 10, 7, 10, 6, 7, 11, 7, 6, 3, 8, 4, 2, 1, 9, 9, 7, 7, |
| 1, 7, 1, 9, 11, 6, 6, 7, 3, 11, 1, 6, 8, 2, 7, 5, 4, 6, 7, |
| 11, 8, 1, 9, 1, 6, 6, 9, 1, 8, 8, 9, 9, 2, 3, 11, 4, 0, 9, |
| 1, 7, 6, 7, 1, 1, 9, 7, 5, 7, 2, 11, 7, 11, 7, 10, 10, 10, 11, |
| 3, 11, 11, 4, 3, 4, 7, 6, 10, 0, 6, 10, 1, 8, 4, 6, 8, 6, 3, |
| 4, 7, 11, 7, 8, 11, 8, 11, 7, 1, 11, 6, 8, 3, 2, 11, 10, 3, 8, |
| 10, 3, 3, 1, 3, 10, 7, 11, 8, 6, 3, 4, 1, 8, 10, 4, 10, 5, 9, |
| 6, 5, 6, 8, 6, 1, 6, 6, 6, 10, 1, 11, 6, 0, 5, 11, 6, 11, 11, |
| 7, 6, 7, 6, 4, 11, 11, 4, 0, 3, 0, 4, 7, 11, 11, 8, 6, 6, 1, |
| 8, 6, 8, 8, 8, 9, 8, 4, 8, 8, 8, 8, 9, 1, 9, 5, 6, 11, 11, |
| 6, 4, 0, 11, 7, 4, 8, 11, 6, |
| }; |
| 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_6_2[NUM_PC_WIENER_LUT_CLASSES] = { |
| 2, 2, 4, 5, 2, 2, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 1, 4, 4, 5, 2, 2, 4, 2, |
| 3, 2, 5, 5, 2, 4, 1, 2, 4, 4, 1, 5, 4, 2, 1, 2, 4, 4, 4, 1, 5, 2, 2, 4, |
| 1, 2, 3, 5, 1, 2, 4, 5, 1, 1, 2, 2, 5, 2, 4, 5, 1, 5, 4, 2, 4, 3, 1, 1, |
| 4, 4, 5, 5, 1, 5, 1, 4, 1, 4, 4, 5, 2, 1, 1, 4, 4, 1, 5, 0, 3, 4, 5, 1, |
| 4, 1, 4, 1, 4, 4, 4, 1, 4, 4, 4, 4, 1, 2, 1, 3, 1, 4, 1, 5, 4, 5, 1, 1, |
| 4, 5, 0, 5, 1, 1, 5, 1, 5, 2, 2, 2, 1, 2, 1, 1, 3, 2, 3, 5, 4, 2, 1, 4, |
| 2, 1, 4, 3, 4, 4, 4, 2, 3, 5, 1, 5, 4, 1, 4, 1, 5, 1, 1, 4, 4, 2, 1, 1, |
| 2, 2, 4, 2, 2, 2, 1, 2, 2, 5, 1, 4, 4, 2, 3, 1, 4, 2, 3, 2, 0, 4, 4, 0, |
| 4, 4, 4, 1, 4, 4, 4, 2, 1, 1, 4, 1, 0, 1, 4, 1, 1, 5, 4, 5, 4, 3, 1, 1, |
| 3, 1, 2, 1, 3, 5, 1, 1, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, |
| 4, 1, 4, 0, 4, 1, 1, 4, 3, 1, 1, 5, 3, 4, 1, 4, |
| }; |
| 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_3_2[NUM_PC_WIENER_LUT_CLASSES] = { |
| 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, |
| 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, |
| 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, |
| 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, |
| 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 0, 1, 1, 0, |
| 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 2, 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_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_12_3[NUM_PC_WIENER_LUT_CLASSES] = { |
| 10, 5, 8, 9, 6, 9, 1, 10, 9, 2, 9, 9, 9, 5, 9, 9, 10, 11, |
| 9, 1, 9, 5, 8, 1, 7, 5, 10, 1, 9, 7, 7, 1, 9, 9, 10, 10, |
| 11, 9, 3, 10, 9, 9, 9, 9, 10, 9, 10, 9, 5, 5, 3, 10, 10, 9, |
| 9, 10, 1, 10, 9, 9, 9, 9, 9, 9, 7, 10, 11, 5, 11, 7, 3, 10, |
| 11, 10, 6, 4, 10, 10, 7, 11, 7, 9, 8, 6, 9, 1, 10, 8, 8, 1, |
| 6, 6, 6, 8, 3, 7, 8, 11, 8, 10, 8, 8, 9, 10, 8, 8, 8, 9, |
| 3, 5, 1, 2, 1, 9, 10, 10, 9, 7, 10, 10, 8, 10, 4, 6, 3, 7, |
| 3, 7, 10, 7, 10, 9, 10, 9, 6, 11, 2, 2, 2, 3, 8, 7, 1, 7, |
| 0, 10, 8, 7, 11, 9, 8, 6, 2, 5, 7, 10, 8, 8, 1, 7, 10, 9, |
| 11, 9, 8, 5, 3, 1, 11, 9, 9, 9, 1, 1, 7, 1, 8, 10, 11, 8, |
| 10, 5, 7, 10, 8, 9, 6, 1, 0, 10, 9, 3, 9, 8, 7, 11, 8, 11, |
| 8, 9, 10, 11, 8, 0, 5, 11, 7, 11, 8, 6, 7, 6, 7, 7, 7, 7, |
| 7, 3, 6, 0, 7, 0, 7, 1, 8, 8, 8, 11, 8, 8, 8, 8, 8, 8, |
| 8, 3, 8, 8, 8, 8, 10, 9, 8, 6, 7, 10, 7, 8, 7, 1, 7, 6, |
| 7, 8, 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_6_3[NUM_PC_WIENER_LUT_CLASSES] = { |
| 4, 5, 1, 1, 3, 1, 4, 4, 1, 2, 1, 1, 1, 5, 1, 1, 4, 1, 1, 4, 1, 5, 1, 4, |
| 1, 5, 4, 4, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 0, 4, 1, 1, 1, 1, 4, 1, 4, 1, |
| 5, 5, 0, 4, 4, 1, 1, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4, 1, 5, 1, 1, 0, 4, |
| 1, 4, 3, 3, 4, 4, 1, 1, 1, 1, 1, 3, 1, 4, 4, 1, 1, 4, 3, 3, 3, 1, 0, 1, |
| 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1, 0, 5, 4, 2, 4, 1, 4, 4, 1, 1, 4, 4, |
| 1, 4, 3, 3, 0, 1, 0, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 2, 2, 0, 1, 1, 4, 1, |
| 0, 4, 1, 1, 1, 1, 1, 3, 2, 5, 1, 4, 1, 1, 4, 1, 4, 1, 1, 1, 1, 5, 0, 4, |
| 1, 1, 1, 1, 4, 4, 1, 4, 1, 4, 1, 1, 4, 5, 1, 4, 1, 1, 3, 4, 0, 4, 1, 0, |
| 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 0, 5, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, |
| 1, 0, 3, 0, 1, 0, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, |
| 4, 1, 1, 3, 1, 4, 1, 1, 1, 4, 1, 3, 1, 1, 1, 1, |
| }; |
| 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_3_3[NUM_PC_WIENER_LUT_CLASSES] = { |
| 1, 2, 1, 1, 0, 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, 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, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 0, 1, 1, 1, 1, |
| 0, 1, 1, 1, 1, 1, 1, 0, 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, 0, 1, 0, 1, 1, 0, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 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, |
| }; |
| 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[7][16] = { |
| { 11, 2, 3, 1, 1, 8, 2, 7, 4, 6, 10, 6, 5, 4, 9, 0,}, // to 12 |
| { 7, 2, 3, 1, 1, 3, 2, 7, 4, 6, 1, 6, 5, 4, 0, 0,}, // to 8 |
| { 1, 2, 0, 5, 5, 0, 2, 1, 3, 3, 5, 3, 1, 3, 4, 4,}, // to 6 |
| { 1, 2, 0, 0, 0, 0, 2, 1, 3, 3, 0, 3, 1, 3, 1, 1,}, // to 4 |
| { 2, 1, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2, 0, 2, 2,}, // to 3 |
| { 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_12_0[6][12] = { |
| { 0, 1, 2, 3, 4, 5, 6, 7, 3, 0, 1, 7,}, // to 8 |
| { 4, 5, 2, 0, 3, 1, 3, 1, 0, 4, 5, 1,}, // to 6 |
| { 1, 0, 2, 0, 3, 1, 3, 1, 0, 1, 0, 1,}, // to 4 |
| { 2, 0, 1, 0, 0, 2, 0, 2, 0, 2, 0, 2,}, // to 3 |
| { 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_8_0[5][8] = { |
| { 4, 5, 2, 0, 3, 1, 3, 1,}, // to 6 |
| { 1, 0, 2, 0, 3, 1, 3, 1,}, // to 4 |
| { 2, 0, 1, 0, 0, 2, 0, 2,}, // to 3 |
| { 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_6_0[4][6] = { |
| { 0, 1, 2, 3, 1, 0,}, // to 4 |
| { 0, 2, 1, 0, 2, 0,}, // to 3 |
| { 0, 1, 1, 0, 1, 0,}, // to 2 |
| { 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_4_0[3][4] = { |
| { 0, 2, 1, 0,}, // to 3 |
| { 0, 1, 1, 0,}, // to 2 |
| { 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_3_0[2][3] = { |
| { 0, 1, 1,}, // to 2 |
| { 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_16_1[7][16] = { |
| { 7, 3, 11, 5, 2, 5, 0, 8, 4, 3, 6, 3, 2, 9, 10, 1,}, // to 12 |
| { 7, 3, 0, 5, 2, 5, 0, 0, 4, 3, 6, 3, 2, 0, 3, 1,}, // to 8 |
| { 0, 4, 5, 1, 2, 1, 5, 5, 3, 4, 0, 4, 2, 5, 4, 1,}, // to 6 |
| { 0, 0, 1, 1, 2, 1, 1, 1, 3, 0, 0, 0, 2, 1, 0, 1,}, // to 4 |
| { 0, 0, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 0, 1,}, // to 3 |
| { 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_12_1[6][12] = { |
| { 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 3, 0,}, // to 8 |
| { 5, 1, 2, 4, 3, 1, 0, 0, 5, 5, 4, 5,}, // to 6 |
| { 1, 1, 2, 0, 3, 1, 0, 0, 1, 1, 0, 1,}, // to 4 |
| { 1, 1, 2, 0, 1, 1, 0, 0, 1, 1, 0, 1,}, // to 3 |
| { 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_8_1[5][8] = { |
| { 5, 1, 2, 4, 3, 1, 0, 0,}, // to 6 |
| { 1, 1, 2, 0, 3, 1, 0, 0,}, // to 4 |
| { 1, 1, 2, 0, 1, 1, 0, 0,}, // to 3 |
| { 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_6_1[4][6] = { |
| { 0, 1, 2, 3, 0, 1,}, // to 4 |
| { 0, 1, 2, 1, 0, 1,}, // to 3 |
| { 0, 1, 0, 1, 0, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_4_1[3][4] = { |
| { 0, 1, 2, 1,}, // to 3 |
| { 0, 1, 0, 1,}, // to 2 |
| { 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_3_1[2][3] = { |
| { 0, 1, 0,}, // to 2 |
| { 0, 0, 0,}, // to 1 |
| }; |
| |
| static const uint8_t pc_wiener_collapse_16_2[7][16] = { |
| { 3, 7, 4, 5, 5, 0, 10, 3, 2, 8, 11, 7, 1, 6, 9, 4,}, // to 12 |
| { 3, 7, 4, 5, 5, 0, 3, 3, 2, 6, 2, 7, 1, 6, 6, 4,}, // to 8 |
| { 2, 5, 3, 0, 0, 1, 2, 2, 1, 4, 1, 5, 1, 4, 4, 3,}, // to 6 |
| { 2, 1, 3, 0, 0, 1, 2, 2, 1, 3, 1, 1, 1, 3, 3, 3,}, // to 4 |
| { 2, 1, 1, 0, 0, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,}, // to 3 |
| { 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_12_2[6][12] = { |
| { 0, 1, 2, 3, 4, 5, 6, 7, 6, 6, 3, 2,}, // to 8 |
| { 1, 1, 1, 2, 3, 0, 4, 5, 4, 4, 2, 1,}, // to 6 |
| { 1, 1, 1, 2, 3, 0, 3, 1, 3, 3, 2, 1,}, // to 4 |
| { 1, 1, 1, 2, 1, 0, 1, 1, 1, 1, 2, 1,}, // to 3 |
| { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_8_2[5][8] = { |
| { 1, 1, 1, 2, 3, 0, 4, 5,}, // to 6 |
| { 1, 1, 1, 2, 3, 0, 3, 1,}, // to 4 |
| { 1, 1, 1, 2, 1, 0, 1, 1,}, // to 3 |
| { 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_6_2[4][6] = { |
| { 0, 1, 2, 3, 3, 1,}, // to 4 |
| { 0, 1, 2, 1, 1, 1,}, // to 3 |
| { 0, 1, 1, 1, 1, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_4_2[3][4] = { |
| { 0, 1, 2, 1,}, // to 3 |
| { 0, 1, 1, 1,}, // to 2 |
| { 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_3_2[2][3] = { |
| { 0, 1, 1,}, // to 2 |
| { 0, 0, 0,}, // to 1 |
| }; |
| |
| static const uint8_t pc_wiener_collapse_16_3[7][16] = { |
| { 6, 6, 5, 4, 1, 3, 2, 7, 9, 10, 1, 3, 5, 8, 11, 0,}, // to 12 |
| { 6, 6, 5, 4, 1, 3, 2, 7, 7, 1, 1, 3, 5, 7, 7, 0,}, // to 8 |
| { 3, 3, 5, 3, 4, 0, 2, 1, 1, 4, 4, 0, 5, 1, 1, 0,}, // to 6 |
| { 3, 3, 2, 3, 1, 0, 2, 1, 1, 1, 1, 0, 2, 1, 1, 0,}, // to 4 |
| { 0, 0, 2, 0, 1, 0, 2, 1, 1, 1, 1, 0, 2, 1, 1, 0,}, // to 3 |
| { 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_12_3[6][12] = { |
| { 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 1, 7,}, // to 8 |
| { 0, 4, 2, 0, 3, 5, 3, 1, 1, 1, 4, 1,}, // to 6 |
| { 0, 1, 2, 0, 3, 2, 3, 1, 1, 1, 1, 1,}, // to 4 |
| { 0, 1, 2, 0, 0, 2, 0, 1, 1, 1, 1, 1,}, // to 3 |
| { 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,}, // to 2 |
| { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_8_3[5][8] = { |
| { 0, 4, 2, 0, 3, 5, 3, 1,}, // to 6 |
| { 0, 1, 2, 0, 3, 2, 3, 1,}, // to 4 |
| { 0, 1, 2, 0, 0, 2, 0, 1,}, // to 3 |
| { 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_6_3[4][6] = { |
| { 0, 1, 2, 3, 1, 2,}, // to 4 |
| { 0, 1, 2, 0, 1, 2,}, // to 3 |
| { 0, 1, 0, 0, 1, 0,}, // to 2 |
| { 0, 0, 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_4_3[3][4] = { |
| { 0, 1, 2, 0,}, // to 3 |
| { 0, 1, 0, 0,}, // to 2 |
| { 0, 0, 0, 0,}, // to 1 |
| }; |
| static const uint8_t pc_wiener_collapse_3_3[2][3] = { |
| { 0, 1, 0,}, // to 2 |
| { 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_set_index(int base_qindex, int qindex_offset) { |
| const int qindex = base_qindex + qindex_offset; |
| if (qindex < 130) |
| return 0; |
| else if (qindex < 190) |
| return 1; |
| else if (qindex < 220) |
| return 2; |
| else |
| return 3; |
| } |
| |
| static AOM_INLINE const int16_t ( |
| *get_filter_set(int filter_set_index))[NUM_PC_WIENER_TAPS_LUMA] { |
| switch (filter_set_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_set_index) { |
| assert(NUM_PC_WIENER_FILTERS == 64); |
| switch (filter_set_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_12; |
| const uint8_t *pc_wiener_sub_classify_to_8; |
| const uint8_t *pc_wiener_sub_classify_to_6; |
| const uint8_t *pc_wiener_sub_classify_to_4; |
| const uint8_t *pc_wiener_sub_classify_to_3; |
| const uint8_t *pc_wiener_sub_classify_to_2; |
| } PcWienerSubClassifiers; |
| |
| static const PcWienerSubClassifiers subclass0 = { |
| pc_wiener_sub_classify_to_64_0, pc_wiener_sub_classify_to_16_0, |
| pc_wiener_sub_classify_to_12_0, pc_wiener_sub_classify_to_8_0, |
| pc_wiener_sub_classify_to_6_0, pc_wiener_sub_classify_to_4_0, |
| pc_wiener_sub_classify_to_3_0, pc_wiener_sub_classify_to_2_0 |
| }; |
| static const PcWienerSubClassifiers subclass1 = { |
| pc_wiener_sub_classify_to_64_1, pc_wiener_sub_classify_to_16_1, |
| pc_wiener_sub_classify_to_12_1, pc_wiener_sub_classify_to_8_1, |
| pc_wiener_sub_classify_to_6_1, pc_wiener_sub_classify_to_4_1, |
| pc_wiener_sub_classify_to_3_1, pc_wiener_sub_classify_to_2_1 |
| }; |
| static const PcWienerSubClassifiers subclass2 = { |
| pc_wiener_sub_classify_to_64_2, pc_wiener_sub_classify_to_16_2, |
| pc_wiener_sub_classify_to_12_2, pc_wiener_sub_classify_to_8_2, |
| pc_wiener_sub_classify_to_6_2, pc_wiener_sub_classify_to_4_2, |
| pc_wiener_sub_classify_to_3_2, pc_wiener_sub_classify_to_2_2 |
| }; |
| static const PcWienerSubClassifiers subclass3 = { |
| pc_wiener_sub_classify_to_64_3, pc_wiener_sub_classify_to_16_3, |
| pc_wiener_sub_classify_to_12_3, pc_wiener_sub_classify_to_8_3, |
| pc_wiener_sub_classify_to_6_3, pc_wiener_sub_classify_to_4_3, |
| pc_wiener_sub_classify_to_3_3, pc_wiener_sub_classify_to_2_3 |
| }; |
| |
| static AOM_INLINE const PcWienerSubClassifiers *get_sub_classifiers( |
| int filter_set_index) { |
| assert(NUM_PC_WIENER_FILTERS == 64); |
| switch (filter_set_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 write the number of classes. |
| #define NUM_FILTER_CLASSES_BITS 3 |
| |
| // Returns a number to encode for each possible value of num_classes. |
| static AOM_INLINE int encode_num_filter_classes(int num_classes) { |
| assert((1 << NUM_FILTER_CLASSES_BITS) > 7); |
| switch (num_classes) { |
| case 16: return 7; |
| case 12: return 6; |
| case 8: return 5; |
| case 6: return 4; |
| case 4: return 3; |
| case 3: 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) { |
| assert((1 << NUM_FILTER_CLASSES_BITS) > 7); |
| switch (encoded_num_classes) { |
| case 7: return 16; |
| case 6: return 12; |
| case 5: return 8; |
| case 4: return 6; |
| case 3: return 4; |
| case 2: return 3; |
| case 1: return 2; |
| case 0: return 1; |
| default: assert(0); return 1; |
| } |
| } |
| |
| static AOM_INLINE const uint8_t *get_converter(int filter_set_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; |
| const int allowed_classes[] = { 16, 12, 8, 6, 4, 3, 2, 1 }; |
| const int num_allowed_classes = |
| sizeof(allowed_classes) / sizeof(*allowed_classes); |
| int base_idx = -1; |
| int target_idx = -1; |
| for (int i = 0; i < num_allowed_classes; ++i) { |
| if (num_classes == allowed_classes[i]) base_idx = i; |
| if (target_classes == allowed_classes[i]) target_idx = i; |
| } |
| if (base_idx == -1 || target_idx == -1) { |
| assert(0); |
| return pc_wiener_sub_classify_to_1; |
| } |
| |
| int row = 1; |
| while (num_classes >> row > target_classes) ++row; |
| --row; |
| |
| switch (filter_set_index) { |
| case 0: |
| switch (num_classes) { |
| case 16: return pc_wiener_collapse_16_0[row]; |
| case 12: return pc_wiener_collapse_12_0[row]; |
| case 8: return pc_wiener_collapse_8_0[row]; |
| case 6: return pc_wiener_collapse_6_0[row]; |
| case 4: return pc_wiener_collapse_4_0[row]; |
| case 3: return pc_wiener_collapse_3_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 12: return pc_wiener_collapse_12_1[row]; |
| case 8: return pc_wiener_collapse_8_1[row]; |
| case 6: return pc_wiener_collapse_6_1[row]; |
| case 4: return pc_wiener_collapse_4_1[row]; |
| case 3: return pc_wiener_collapse_3_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 12: return pc_wiener_collapse_12_2[row]; |
| case 8: return pc_wiener_collapse_8_2[row]; |
| case 6: return pc_wiener_collapse_6_2[row]; |
| case 4: return pc_wiener_collapse_4_2[row]; |
| case 3: return pc_wiener_collapse_3_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 12: return pc_wiener_collapse_12_3[row]; |
| case 8: return pc_wiener_collapse_8_3[row]; |
| case 6: return pc_wiener_collapse_6_3[row]; |
| case 4: return pc_wiener_collapse_4_3[row]; |
| case 3: return pc_wiener_collapse_3_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_ |