#ifndef VPX_VP9_COMMON_VP9_LOOPFILTER_H_
#define VPX_VP9_COMMON_VP9_LOOPFILTER_H_
#include "vpx_ports/mem.h"
#include "./vpx_config.h"
#include "vp9/common/vp9_blockd.h"
#include "vp9/common/vp9_seg_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_LOOP_FILTER …
#define MAX_SHARPNESS …
#define SIMD_WIDTH …
#define MAX_REF_LF_DELTAS …
#define MAX_MODE_LF_DELTAS …
enum lf_path { … };
loop_filter_thresh;
loop_filter_info_n;
LOOP_FILTER_MASK;
struct loopfilter { … };
struct VP9Common;
struct macroblockd;
struct VP9LfSyncData;
void vp9_setup_mask(struct VP9Common *const cm, const int mi_row,
const int mi_col, MODE_INFO **mi8x8,
const int mode_info_stride, LOOP_FILTER_MASK *lfm);
void vp9_filter_block_plane_ss00(struct VP9Common *const cm,
struct macroblockd_plane *const plane,
int mi_row, LOOP_FILTER_MASK *lfm);
void vp9_filter_block_plane_ss11(struct VP9Common *const cm,
struct macroblockd_plane *const plane,
int mi_row, LOOP_FILTER_MASK *lfm);
void vp9_filter_block_plane_non420(struct VP9Common *cm,
struct macroblockd_plane *plane,
MODE_INFO **mi_8x8, int mi_row, int mi_col);
void vp9_loop_filter_init(struct VP9Common *cm);
void vp9_loop_filter_frame_init(struct VP9Common *cm, int default_filt_lvl);
void vp9_loop_filter_frame(YV12_BUFFER_CONFIG *frame, struct VP9Common *cm,
struct macroblockd *xd, int frame_filter_level,
int y_only, int partial_frame);
static INLINE LOOP_FILTER_MASK *get_lfm(const struct loopfilter *lf,
const int mi_row, const int mi_col) { … }
void vp9_build_mask(struct VP9Common *cm, const MODE_INFO *mi, int mi_row,
int mi_col, int bw, int bh);
void vp9_adjust_mask(struct VP9Common *const cm, const int mi_row,
const int mi_col, LOOP_FILTER_MASK *lfm);
void vp9_build_mask_frame(struct VP9Common *cm, int frame_filter_level,
int partial_frame);
void vp9_reset_lfm(struct VP9Common *const cm);
LFWorkerData;
void vp9_loop_filter_data_reset(
LFWorkerData *lf_data, YV12_BUFFER_CONFIG *frame_buffer,
struct VP9Common *cm, const struct macroblockd_plane planes[MAX_MB_PLANE]);
int vp9_loop_filter_worker(void *arg1, void *unused);
#ifdef __cplusplus
}
#endif
#endif