#ifndef AOM_AV1_COMMON_AV1_LOOPFILTER_H_
#define AOM_AV1_COMMON_AV1_LOOPFILTER_H_
#include "config/aom_config.h"
#include "aom/internal/aom_codec_internal.h"
#include "aom_ports/mem.h"
#include "av1/common/blockd.h"
#include "av1/common/seg_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_LOOP_FILTER …
#define MAX_SHARPNESS …
#define SIMD_WIDTH …
enum lf_path { … };
enum { … } UENUM1BYTE(…) …;
FilterMask;
struct loopfilter { … };
loop_filter_thresh;
loop_filter_info_n;
AV1_DEBLOCKING_PARAMETERS;
LFWorkerData;
struct AV1Common;
struct macroblockd;
struct AV1LfSyncData;
void av1_loop_filter_init(struct AV1Common *cm);
void av1_loop_filter_frame_init(struct AV1Common *cm, int plane_start,
int plane_end);
void av1_filter_block_plane_vert(const struct AV1Common *const cm,
const MACROBLOCKD *const xd, const int plane,
const MACROBLOCKD_PLANE *const plane_ptr,
const uint32_t mi_row, const uint32_t mi_col);
void av1_filter_block_plane_horz(const struct AV1Common *const cm,
const MACROBLOCKD *const xd, const int plane,
const MACROBLOCKD_PLANE *const plane_ptr,
const uint32_t mi_row, const uint32_t mi_col);
void av1_filter_block_plane_vert_opt(
const struct AV1Common *const cm, const MACROBLOCKD *const xd,
const MACROBLOCKD_PLANE *const plane_ptr, const uint32_t mi_row,
const uint32_t mi_col, AV1_DEBLOCKING_PARAMETERS *params_buf,
TX_SIZE *tx_buf, int num_mis_in_lpf_unit_height_log2);
void av1_filter_block_plane_vert_opt_chroma(
const struct AV1Common *const cm, const MACROBLOCKD *const xd,
const MACROBLOCKD_PLANE *const plane_ptr, const uint32_t mi_row,
const uint32_t mi_col, AV1_DEBLOCKING_PARAMETERS *params_buf,
TX_SIZE *tx_buf, int plane, bool joint_filter_chroma,
int num_mis_in_lpf_unit_height_log2);
void av1_filter_block_plane_horz_opt(
const struct AV1Common *const cm, const MACROBLOCKD *const xd,
const MACROBLOCKD_PLANE *const plane_ptr, const uint32_t mi_row,
const uint32_t mi_col, AV1_DEBLOCKING_PARAMETERS *params_buf,
TX_SIZE *tx_buf, int num_mis_in_lpf_unit_height_log2);
void av1_filter_block_plane_horz_opt_chroma(
const struct AV1Common *const cm, const MACROBLOCKD *const xd,
const MACROBLOCKD_PLANE *const plane_ptr, const uint32_t mi_row,
const uint32_t mi_col, AV1_DEBLOCKING_PARAMETERS *params_buf,
TX_SIZE *tx_buf, int plane, bool joint_filter_chroma,
int num_mis_in_lpf_unit_height_log2);
#ifdef __cplusplus
}
#endif
#endif