| /* |
| * Copyright (c) 2019, Alliance for Open Media. All rights reserved |
| * |
| * This source code is subject to the terms of the BSD 2 Clause License and |
| * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| * was not distributed with this source code in the LICENSE file, you can |
| * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| * Media Patent License 1.0 was not distributed with this source code in the |
| * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| */ |
| |
| #ifndef AOM_AV1_ENCODER_X86_TEMPORAL_FILTER_CONSTANTS_H_ |
| #define AOM_AV1_ENCODER_X86_TEMPORAL_FILTER_CONSTANTS_H_ |
| |
| // Division using multiplication and shifting. The C implementation does: |
| // modifier *= 3; |
| // modifier /= index; |
| // where 'modifier' is a set of summed values and 'index' is the number of |
| // summed values. |
| // |
| // This equation works out to (m * 3) / i which reduces to: |
| // m * 3/4 |
| // m * 1/2 |
| // m * 1/3 |
| // |
| // By pairing the multiply with a down shift by 16 (_mm_mulhi_epu16): |
| // m * C / 65536 |
| // we can create a C to replicate the division. |
| // |
| // m * 49152 / 65536 = m * 3/4 |
| // m * 32758 / 65536 = m * 1/2 |
| // m * 21846 / 65536 = m * 0.3333 |
| // |
| // These are loaded using an instruction expecting int16_t values but are used |
| // with _mm_mulhi_epu16(), which treats them as unsigned. |
| #define NEIGHBOR_CONSTANT_4 (int16_t)49152 |
| #define NEIGHBOR_CONSTANT_5 (int16_t)39322 |
| #define NEIGHBOR_CONSTANT_6 (int16_t)32768 |
| #define NEIGHBOR_CONSTANT_7 (int16_t)28087 |
| #define NEIGHBOR_CONSTANT_8 (int16_t)24576 |
| #define NEIGHBOR_CONSTANT_9 (int16_t)21846 |
| #define NEIGHBOR_CONSTANT_10 (int16_t)19661 |
| #define NEIGHBOR_CONSTANT_11 (int16_t)17874 |
| #define NEIGHBOR_CONSTANT_13 (int16_t)15124 |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_CORNER_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_5, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_CORNER_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_5 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_EDGE_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_EDGE_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_EDGE_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7, |
| NEIGHBOR_CONSTANT_7, NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_CENTER_NEIGHBORS_PLUS_1[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_CORNER_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_6, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_CORNER_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_6 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_EDGE_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_EDGE_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_EDGE_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_CENTER_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, TWO_CORNER_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_6, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_8, |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_6 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, TWO_EDGE_NEIGHBORS_PLUS_2[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_11, |
| NEIGHBOR_CONSTANT_11, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_CORNER_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_CORNER_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, LEFT_EDGE_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, RIGHT_EDGE_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_EDGE_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, MIDDLE_CENTER_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, TWO_CORNER_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_8, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_10, |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const int16_t, TWO_EDGE_NEIGHBORS_PLUS_4[8]) = { |
| NEIGHBOR_CONSTANT_10, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_13, |
| NEIGHBOR_CONSTANT_13, NEIGHBOR_CONSTANT_10 |
| }; |
| |
| static const int16_t *const LUMA_LEFT_COLUMN_NEIGHBORS[2] = { |
| LEFT_CORNER_NEIGHBORS_PLUS_2, LEFT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const LUMA_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| MIDDLE_EDGE_NEIGHBORS_PLUS_2, MIDDLE_CENTER_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const LUMA_RIGHT_COLUMN_NEIGHBORS[2] = { |
| RIGHT_CORNER_NEIGHBORS_PLUS_2, RIGHT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const CHROMA_NO_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| LEFT_CORNER_NEIGHBORS_PLUS_1, LEFT_EDGE_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const int16_t *const CHROMA_NO_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| MIDDLE_EDGE_NEIGHBORS_PLUS_1, MIDDLE_CENTER_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const int16_t *const CHROMA_NO_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| RIGHT_CORNER_NEIGHBORS_PLUS_1, RIGHT_EDGE_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const int16_t *const CHROMA_SINGLE_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| LEFT_CORNER_NEIGHBORS_PLUS_2, LEFT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const CHROMA_SINGLE_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| MIDDLE_EDGE_NEIGHBORS_PLUS_2, MIDDLE_CENTER_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const CHROMA_SINGLE_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| RIGHT_CORNER_NEIGHBORS_PLUS_2, RIGHT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const CHROMA_SINGLE_SS_SINGLE_COLUMN_NEIGHBORS[2] = { |
| TWO_CORNER_NEIGHBORS_PLUS_2, TWO_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const int16_t *const CHROMA_DOUBLE_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| LEFT_CORNER_NEIGHBORS_PLUS_4, LEFT_EDGE_NEIGHBORS_PLUS_4 |
| }; |
| |
| static const int16_t *const CHROMA_DOUBLE_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| MIDDLE_EDGE_NEIGHBORS_PLUS_4, MIDDLE_CENTER_NEIGHBORS_PLUS_4 |
| }; |
| |
| static const int16_t *const CHROMA_DOUBLE_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| RIGHT_CORNER_NEIGHBORS_PLUS_4, RIGHT_EDGE_NEIGHBORS_PLUS_4 |
| }; |
| |
| static const int16_t *const CHROMA_DOUBLE_SS_SINGLE_COLUMN_NEIGHBORS[2] = { |
| TWO_CORNER_NEIGHBORS_PLUS_4, TWO_EDGE_NEIGHBORS_PLUS_4 |
| }; |
| |
| #define HIGHBD_NEIGHBOR_CONSTANT_4 (uint32_t)3221225472U |
| #define HIGHBD_NEIGHBOR_CONSTANT_5 (uint32_t)2576980378U |
| #define HIGHBD_NEIGHBOR_CONSTANT_6 (uint32_t)2147483648U |
| #define HIGHBD_NEIGHBOR_CONSTANT_7 (uint32_t)1840700270U |
| #define HIGHBD_NEIGHBOR_CONSTANT_8 (uint32_t)1610612736U |
| #define HIGHBD_NEIGHBOR_CONSTANT_9 (uint32_t)1431655766U |
| #define HIGHBD_NEIGHBOR_CONSTANT_10 (uint32_t)1288490189U |
| #define HIGHBD_NEIGHBOR_CONSTANT_11 (uint32_t)1171354718U |
| #define HIGHBD_NEIGHBOR_CONSTANT_13 (uint32_t)991146300U |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_5, HIGHBD_NEIGHBOR_CONSTANT_7, |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_7, |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_5 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_7, |
| HIGHBD_NEIGHBOR_CONSTANT_7, HIGHBD_NEIGHBOR_CONSTANT_7 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_1[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_6, HIGHBD_NEIGHBOR_CONSTANT_8, |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_8, |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_6 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_11, |
| HIGHBD_NEIGHBOR_CONSTANT_11, HIGHBD_NEIGHBOR_CONSTANT_11 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_11, HIGHBD_NEIGHBOR_CONSTANT_11, |
| HIGHBD_NEIGHBOR_CONSTANT_11, HIGHBD_NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_8, |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_2[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_11, HIGHBD_NEIGHBOR_CONSTANT_11, |
| HIGHBD_NEIGHBOR_CONSTANT_11, HIGHBD_NEIGHBOR_CONSTANT_11 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_8, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_8 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_13, |
| HIGHBD_NEIGHBOR_CONSTANT_13, HIGHBD_NEIGHBOR_CONSTANT_13 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_13, HIGHBD_NEIGHBOR_CONSTANT_13, |
| HIGHBD_NEIGHBOR_CONSTANT_13, HIGHBD_NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10, |
| HIGHBD_NEIGHBOR_CONSTANT_10, HIGHBD_NEIGHBOR_CONSTANT_10 |
| }; |
| |
| DECLARE_ALIGNED(16, static const uint32_t, |
| HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_4[4]) = { |
| HIGHBD_NEIGHBOR_CONSTANT_13, HIGHBD_NEIGHBOR_CONSTANT_13, |
| HIGHBD_NEIGHBOR_CONSTANT_13, HIGHBD_NEIGHBOR_CONSTANT_13 |
| }; |
| |
| static const uint32_t *const HIGHBD_LUMA_LEFT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_2, HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t *const HIGHBD_LUMA_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_2, HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t *const HIGHBD_LUMA_RIGHT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_2, HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t *const HIGHBD_CHROMA_NO_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_1, HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const uint32_t *const HIGHBD_CHROMA_NO_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_1, HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const uint32_t *const HIGHBD_CHROMA_NO_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_1, HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_1 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_SINGLE_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_2, HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_SINGLE_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_2, HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_SINGLE_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_2, HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_2 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_DOUBLE_SS_LEFT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_LEFT_CORNER_NEIGHBORS_PLUS_4, HIGHBD_LEFT_EDGE_NEIGHBORS_PLUS_4 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_DOUBLE_SS_MIDDLE_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_MIDDLE_EDGE_NEIGHBORS_PLUS_4, HIGHBD_MIDDLE_CENTER_NEIGHBORS_PLUS_4 |
| }; |
| |
| static const uint32_t |
| *const HIGHBD_CHROMA_DOUBLE_SS_RIGHT_COLUMN_NEIGHBORS[2] = { |
| HIGHBD_RIGHT_CORNER_NEIGHBORS_PLUS_4, HIGHBD_RIGHT_EDGE_NEIGHBORS_PLUS_4 |
| }; |
| |
| #define DIST_STRIDE ((BW) + 2) |
| #endif // AOM_AV1_ENCODER_X86_TEMPORAL_FILTER_CONSTANTS_H_ |