#include "./vpx_config.h"
#include "./vpx_dsp_rtcd.h"
#include "vp9/common/vp9_loopfilter.h"
#include "vp9/common/vp9_onyxc_int.h"
#include "vp9/common/vp9_reconinter.h"
#include "vpx_dsp/vpx_dsp_common.h"
#include "vpx_mem/vpx_mem.h"
#include "vpx_ports/mem.h"
#include "vp9/common/vp9_seg_common.h"
static const uint64_t left_64x64_txform_mask[TX_SIZES] = …;
static const uint64_t above_64x64_txform_mask[TX_SIZES] = …;
static const uint64_t left_prediction_mask[BLOCK_SIZES] = …;
static const uint64_t above_prediction_mask[BLOCK_SIZES] = …;
static const uint64_t size_mask[BLOCK_SIZES] = …;
static const uint64_t left_border = …;
static const uint64_t above_border = …;
static const uint16_t left_64x64_txform_mask_uv[TX_SIZES] = …;
static const uint16_t above_64x64_txform_mask_uv[TX_SIZES] = …;
static const uint16_t left_prediction_mask_uv[BLOCK_SIZES] = …;
static const uint16_t above_prediction_mask_uv[BLOCK_SIZES] = …;
static const uint16_t size_mask_uv[BLOCK_SIZES] = …;
static const uint16_t left_border_uv = …;
static const uint16_t above_border_uv = …;
static const int mode_lf_lut[MB_MODE_COUNT] = …;
static void update_sharpness(loop_filter_info_n *lfi, int sharpness_lvl) { … }
static uint8_t get_filter_level(const loop_filter_info_n *lfi_n,
const MODE_INFO *mi) { … }
void vp9_loop_filter_init(VP9_COMMON *cm) { … }
void vp9_loop_filter_frame_init(VP9_COMMON *cm, int default_filt_lvl) { … }
static void filter_selectively_vert_row2(
int subsampling_factor, uint8_t *s, int pitch, unsigned int mask_16x16,
unsigned int mask_8x8, unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl) { … }
#if CONFIG_VP9_HIGHBITDEPTH
static void highbd_filter_selectively_vert_row2(
int subsampling_factor, uint16_t *s, int pitch, unsigned int mask_16x16,
unsigned int mask_8x8, unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl, int bd) { … }
#endif
static void filter_selectively_horiz(
uint8_t *s, int pitch, unsigned int mask_16x16, unsigned int mask_8x8,
unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl) { … }
#if CONFIG_VP9_HIGHBITDEPTH
static void highbd_filter_selectively_horiz(
uint16_t *s, int pitch, unsigned int mask_16x16, unsigned int mask_8x8,
unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl, int bd) { … }
#endif
static void build_masks(const loop_filter_info_n *const lfi_n,
const MODE_INFO *mi, const int shift_y,
const int shift_uv, LOOP_FILTER_MASK *lfm) { … }
static void build_y_mask(const loop_filter_info_n *const lfi_n,
const MODE_INFO *mi, const int shift_y,
LOOP_FILTER_MASK *lfm) { … }
void vp9_adjust_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
LOOP_FILTER_MASK *lfm) { … }
void vp9_setup_mask(VP9_COMMON *const cm, const int mi_row, const int mi_col,
MODE_INFO **mi8x8, const int mode_info_stride,
LOOP_FILTER_MASK *lfm) { … }
static void filter_selectively_vert(
uint8_t *s, int pitch, unsigned int mask_16x16, unsigned int mask_8x8,
unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl) { … }
#if CONFIG_VP9_HIGHBITDEPTH
static void highbd_filter_selectively_vert(
uint16_t *s, int pitch, unsigned int mask_16x16, unsigned int mask_8x8,
unsigned int mask_4x4, unsigned int mask_4x4_int,
const loop_filter_thresh *lfthr, const uint8_t *lfl, int bd) { … }
#endif
void vp9_filter_block_plane_non420(VP9_COMMON *cm,
struct macroblockd_plane *plane,
MODE_INFO **mi_8x8, int mi_row, int mi_col) { … }
void vp9_filter_block_plane_ss00(VP9_COMMON *const cm,
struct macroblockd_plane *const plane,
int mi_row, LOOP_FILTER_MASK *lfm) { … }
void vp9_filter_block_plane_ss11(VP9_COMMON *const cm,
struct macroblockd_plane *const plane,
int mi_row, LOOP_FILTER_MASK *lfm) { … }
static void loop_filter_rows(YV12_BUFFER_CONFIG *frame_buffer, VP9_COMMON *cm,
struct macroblockd_plane planes[MAX_MB_PLANE],
int start, int stop, int y_only) { … }
void vp9_loop_filter_frame(YV12_BUFFER_CONFIG *frame, VP9_COMMON *cm,
MACROBLOCKD *xd, int frame_filter_level, int y_only,
int partial_frame) { … }
void vp9_build_mask_frame(VP9_COMMON *cm, int frame_filter_level,
int partial_frame) { … }
static const uint8_t first_block_in_16x16[8][8] = …;
void vp9_build_mask(VP9_COMMON *cm, const MODE_INFO *mi, int mi_row, int mi_col,
int bw, int bh) { … }
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]) { … }
void vp9_reset_lfm(VP9_COMMON *const cm) { … }
int vp9_loop_filter_worker(void *arg1, void *unused) { … }