blob: 0f2d0d00c6447806fd0736c38de3f18513adc117 [file] [log] [blame] [edit]
/*
* 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