#ifndef VPX_VP9_COMMON_VP9_BLOCKD_H_
#define VPX_VP9_COMMON_VP9_BLOCKD_H_
#include "./vpx_config.h"
#include "vpx_dsp/vpx_dsp_common.h"
#include "vpx_ports/mem.h"
#include "vpx_scale/yv12config.h"
#include "vp9/common/vp9_common_data.h"
#include "vp9/common/vp9_entropy.h"
#include "vp9/common/vp9_entropymode.h"
#include "vp9/common/vp9_mv.h"
#include "vp9/common/vp9_scale.h"
#include "vp9/common/vp9_seg_common.h"
#include "vp9/common/vp9_tile_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_MB_PLANE …
FRAME_TYPE;
static INLINE int is_inter_mode(PREDICTION_MODE mode) { … }
b_mode_info;
#define NO_REF_FRAME …
#define INTRA_FRAME …
#define LAST_FRAME …
#define GOLDEN_FRAME …
#define ALTREF_FRAME …
#define MAX_REF_FRAMES …
#define MAX_INTER_REF_FRAMES …
MV_REFERENCE_FRAME;
static INLINE int mv_ref_frame_to_inter_ref_idx(
MV_REFERENCE_FRAME mv_ref_frame) { … }
MODE_INFO;
static INLINE PREDICTION_MODE get_y_mode(const MODE_INFO *mi, int block) { … }
static INLINE int is_inter_block(const MODE_INFO *mi) { … }
static INLINE int has_second_ref(const MODE_INFO *mi) { … }
PREDICTION_MODE vp9_left_block_mode(const MODE_INFO *cur_mi,
const MODE_INFO *left_mi, int b);
PREDICTION_MODE vp9_above_block_mode(const MODE_INFO *cur_mi,
const MODE_INFO *above_mi, int b);
enum mv_precision { … };
struct buf_2d { … };
struct macroblockd_plane { … };
#define BLOCK_OFFSET(x, i) …
RefBuffer;
MACROBLOCKD;
static INLINE PLANE_TYPE get_plane_type(int plane) { … }
static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize,
PARTITION_TYPE partition) { … }
extern const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES];
static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
const MACROBLOCKD *xd) { … }
static INLINE TX_TYPE get_tx_type_4x4(PLANE_TYPE plane_type,
const MACROBLOCKD *xd, int ib) { … }
void vp9_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y);
static INLINE TX_SIZE get_uv_tx_size(const MODE_INFO *mi,
const struct macroblockd_plane *pd) { … }
static INLINE BLOCK_SIZE
get_plane_block_size(BLOCK_SIZE bsize, const struct macroblockd_plane *pd) { … }
static INLINE void reset_skip_context(MACROBLOCKD *xd, BLOCK_SIZE bsize) { … }
static INLINE const vpx_prob *get_y_mode_probs(const MODE_INFO *mi,
const MODE_INFO *above_mi,
const MODE_INFO *left_mi,
int block) { … }
foreach_transformed_block_visitor;
void vp9_foreach_transformed_block_in_plane(
const MACROBLOCKD *const xd, BLOCK_SIZE bsize, int plane,
foreach_transformed_block_visitor visit, void *arg);
void vp9_foreach_transformed_block(const MACROBLOCKD *const xd,
BLOCK_SIZE bsize,
foreach_transformed_block_visitor visit,
void *arg);
void vp9_set_contexts(const MACROBLOCKD *xd, struct macroblockd_plane *pd,
BLOCK_SIZE plane_bsize, TX_SIZE tx_size, int has_eob,
int aoff, int loff);
#if CONFIG_MISMATCH_DEBUG
#define TX_UNIT_SIZE_LOG2 …
static INLINE void mi_to_pixel_loc(int *pixel_c, int *pixel_r, int mi_col,
int mi_row, int tx_blk_col, int tx_blk_row,
int subsampling_x, int subsampling_y) {
*pixel_c = ((mi_col << MI_SIZE_LOG2) >> subsampling_x) +
(tx_blk_col << TX_UNIT_SIZE_LOG2);
*pixel_r = ((mi_row << MI_SIZE_LOG2) >> subsampling_y) +
(tx_blk_row << TX_UNIT_SIZE_LOG2);
}
static INLINE int get_block_width(BLOCK_SIZE bsize) {
const int num_4x4_w = num_4x4_blocks_wide_lookup[bsize];
return 4 * num_4x4_w;
}
static INLINE int get_block_height(BLOCK_SIZE bsize) {
const int num_4x4_h = num_4x4_blocks_high_lookup[bsize];
return 4 * num_4x4_h;
}
#endif
#ifdef __cplusplus
}
#endif
#endif