| /* | 
 |  * Copyright (c) 2025, 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 AOM_AV1_COMMON_GDF_BLOCK_H | 
 | #define AOM_AV1_COMMON_GDF_BLOCK_H | 
 | #include "av1/common/odintrin.h" | 
 | #include "av1/common/gdf.h" | 
 |  | 
 | #if CONFIG_GDF | 
 | #define GDF_OPTS_INP_TOT (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM) | 
 |  | 
 | #define GDF_BLOCK_PADDED ((GDF_OPTS_INP_TOT + 2) * 4 + GDF_TEST_BLK_SIZE * 2) | 
 |  | 
 | #define GDF_TRAIN_GRD_SHIFT 4 | 
 |  | 
 | #define GDF_TRAIN_INP_PREC 0 | 
 | #define GDF_TRAIN_REFDST_NUM 5 | 
 | #define GDF_TRAIN_QP_NUM 6 | 
 | #define GDF_TRAIN_CLS_NUM 4 | 
 |  | 
 | #define GDF_TRAIN_PAR_SCALE_LOG2 6 | 
 | #define GDF_NET_INP_REC_NUM 18 | 
 | #define GDF_NET_INP_GRD_NUM 4 | 
 | #define GDF_NET_LUT_IDX_NUM 3 | 
 | #define GDF_NET_LUT_IDX_INTRA_MAX 16 | 
 | #define GDF_NET_LUT_IDX_INTER_MAX 10 | 
 |  | 
 | #define GDF_TEST_VIRTUAL_BOUNDARY 1 | 
 | #if GDF_TEST_VIRTUAL_BOUNDARY | 
 | #define GDF_TEST_LINE_BUFFER 0 | 
 | #endif | 
 |  | 
 | extern const int gdf_guided_sample_coordinates_fwd[GDF_NET_INP_REC_NUM][2]; | 
 | extern const int gdf_guided_sample_coordinates_bwd[GDF_NET_INP_REC_NUM][2]; | 
 | extern const int | 
 |     gdf_guided_sample_vertical_masks[GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM]; | 
 | extern const int gdf_guided_sample_horizontal_masks[GDF_NET_INP_REC_NUM + | 
 |                                                     GDF_NET_INP_GRD_NUM]; | 
 | extern const int | 
 |     gdf_guided_sample_mixed_masks[GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM]; | 
 | extern const int16_t | 
 |     gdf_intra_alpha_table[GDF_TRAIN_QP_NUM] | 
 |                          [GDF_TRAIN_CLS_NUM * | 
 |                           (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM)]; | 
 | extern const int16_t | 
 |     gdf_inter_alpha_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM] | 
 |                          [GDF_TRAIN_CLS_NUM * | 
 |                           (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM)]; | 
 | extern const int16_t | 
 |     gdf_intra_weight_table[GDF_TRAIN_QP_NUM] | 
 |                           [GDF_TRAIN_CLS_NUM * | 
 |                            (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM) * | 
 |                            GDF_NET_LUT_IDX_NUM]; | 
 | extern const int16_t | 
 |     gdf_inter_weight_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM] | 
 |                           [GDF_TRAIN_CLS_NUM * | 
 |                            (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM) * | 
 |                            GDF_NET_LUT_IDX_NUM]; | 
 | extern const int32_t | 
 |     gdf_intra_bias_table[GDF_TRAIN_QP_NUM] | 
 |                         [GDF_TRAIN_CLS_NUM * GDF_NET_LUT_IDX_NUM]; | 
 | extern const int32_t | 
 |     gdf_inter_bias_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM] | 
 |                         [GDF_TRAIN_CLS_NUM * GDF_NET_LUT_IDX_NUM]; | 
 | extern const int8_t gdf_intra_error_table | 
 |     [GDF_TRAIN_QP_NUM][GDF_NET_LUT_IDX_INTRA_MAX * GDF_NET_LUT_IDX_INTRA_MAX * | 
 |                        GDF_NET_LUT_IDX_INTRA_MAX * GDF_TRAIN_CLS_NUM]; | 
 | extern const int8_t | 
 |     gdf_inter_error_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM] | 
 |                          [GDF_NET_LUT_IDX_INTER_MAX * | 
 |                           GDF_NET_LUT_IDX_INTER_MAX * | 
 |                           GDF_NET_LUT_IDX_INTER_MAX * GDF_TRAIN_CLS_NUM]; | 
 |  | 
 | #endif  // CONFIG_GDF | 
 | #endif  // AOM_AV1_COMMON_GDF_BLOCK_H |