#include <assert.h>
#include "vp9/common/vp9_common.h"
#include "vp9/common/vp9_entropy.h"
#include "vp9/common/vp9_entropymode.h"
#include "vp9/common/vp9_entropymv.h"
#include "vp9/common/vp9_mvref_common.h"
#include "vp9/common/vp9_pred_common.h"
#include "vp9/common/vp9_reconinter.h"
#include "vp9/common/vp9_seg_common.h"
#include "vp9/decoder/vp9_decodemv.h"
#include "vp9/decoder/vp9_decodeframe.h"
#include "vpx_dsp/vpx_dsp_common.h"
static PREDICTION_MODE read_intra_mode(vpx_reader *r, const vpx_prob *p) { … }
static PREDICTION_MODE read_intra_mode_y(VP9_COMMON *cm, MACROBLOCKD *xd,
vpx_reader *r, int size_group) { … }
static PREDICTION_MODE read_intra_mode_uv(VP9_COMMON *cm, MACROBLOCKD *xd,
vpx_reader *r,
PREDICTION_MODE y_mode) { … }
static PREDICTION_MODE read_inter_mode(VP9_COMMON *cm, MACROBLOCKD *xd,
vpx_reader *r, int ctx) { … }
static int read_segment_id(vpx_reader *r, const struct segmentation *seg) { … }
static TX_SIZE read_selected_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd,
TX_SIZE max_tx_size, vpx_reader *r) { … }
static INLINE TX_SIZE read_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd,
int allow_select, vpx_reader *r) { … }
static int dec_get_segment_id(const VP9_COMMON *cm, const uint8_t *segment_ids,
int mi_offset, int x_mis, int y_mis) { … }
static void set_segment_id(VP9_COMMON *cm, int mi_offset, int x_mis, int y_mis,
int segment_id) { … }
static void copy_segment_id(const VP9_COMMON *cm,
const uint8_t *last_segment_ids,
uint8_t *current_segment_ids, int mi_offset,
int x_mis, int y_mis) { … }
static int read_intra_segment_id(VP9_COMMON *const cm, int mi_offset, int x_mis,
int y_mis, vpx_reader *r) { … }
static int read_inter_segment_id(VP9_COMMON *const cm, MACROBLOCKD *const xd,
int mi_row, int mi_col, vpx_reader *r,
int x_mis, int y_mis) { … }
static int read_skip(VP9_COMMON *cm, const MACROBLOCKD *xd, int segment_id,
vpx_reader *r) { … }
static void read_intra_frame_mode_info(VP9_COMMON *const cm,
MACROBLOCKD *const xd, int mi_row,
int mi_col, vpx_reader *r, int x_mis,
int y_mis) { … }
static int read_mv_component(vpx_reader *r, const nmv_component *mvcomp,
int usehp) { … }
static INLINE void read_mv(vpx_reader *r, MV *mv, const MV *ref,
const nmv_context *ctx, nmv_context_counts *counts,
int allow_hp) { … }
static REFERENCE_MODE read_block_reference_mode(VP9_COMMON *cm,
const MACROBLOCKD *xd,
vpx_reader *r) { … }
static void read_ref_frames(VP9_COMMON *const cm, MACROBLOCKD *const xd,
vpx_reader *r, int segment_id,
MV_REFERENCE_FRAME ref_frame[2]) { … }
static INLINE INTERP_FILTER read_switchable_interp_filter(VP9_COMMON *const cm,
MACROBLOCKD *const xd,
vpx_reader *r) { … }
static void read_intra_block_mode_info(VP9_COMMON *const cm,
MACROBLOCKD *const xd, MODE_INFO *mi,
vpx_reader *r) { … }
static INLINE int is_mv_valid(const MV *mv) { … }
static INLINE void copy_mv_pair(int_mv *dst, const int_mv *src) { … }
static INLINE void zero_mv_pair(int_mv *dst) { … }
static INLINE int assign_mv(VP9_COMMON *cm, MACROBLOCKD *xd,
PREDICTION_MODE mode, int_mv mv[2],
int_mv ref_mv[2], int_mv near_nearest_mv[2],
int is_compound, int allow_hp, vpx_reader *r) { … }
static int read_is_inter_block(VP9_COMMON *const cm, MACROBLOCKD *const xd,
int segment_id, vpx_reader *r) { … }
#define ADD_MV_REF_LIST_EB(mv, refmv_count, mv_ref_list, Done) …
#define IF_DIFF_REF_FRAME_ADD_MV_EB(mbmi, ref_frame, ref_sign_bias, \
refmv_count, mv_ref_list, Done) …
static int dec_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
PREDICTION_MODE mode, MV_REFERENCE_FRAME ref_frame,
const POSITION *const mv_ref_search,
int_mv *mv_ref_list, int mi_row, int mi_col,
int block) { … }
static void append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
const POSITION *const mv_ref_search,
PREDICTION_MODE b_mode, int block,
int ref, int mi_row, int mi_col,
int_mv *best_sub8x8) { … }
static uint8_t get_mode_context(const VP9_COMMON *cm, const MACROBLOCKD *xd,
const POSITION *const mv_ref_search, int mi_row,
int mi_col) { … }
static void read_inter_block_mode_info(VP9Decoder *const pbi,
MACROBLOCKD *const xd,
MODE_INFO *const mi, int mi_row,
int mi_col, vpx_reader *r) { … }
static void read_inter_frame_mode_info(VP9Decoder *const pbi,
MACROBLOCKD *const xd, int mi_row,
int mi_col, vpx_reader *r, int x_mis,
int y_mis) { … }
static INLINE void copy_ref_frame_pair(MV_REFERENCE_FRAME *dst,
const MV_REFERENCE_FRAME *src) { … }
void vp9_read_mode_info(TileWorkerData *twd, VP9Decoder *const pbi, int mi_row,
int mi_col, int x_mis, int y_mis) { … }