#include <assert.h>
#include <limits.h>
#include "vpx_config.h"
#include "./vpx_dsp_rtcd.h"
#include "onyx_int.h"
#include "modecosts.h"
#include "encodeintra.h"
#include "vp8/common/common.h"
#include "vp8/common/entropymode.h"
#include "pickinter.h"
#include "vp8/common/findnearmv.h"
#include "encodemb.h"
#include "vp8/common/reconinter.h"
#include "vp8/common/reconintra.h"
#include "vp8/common/reconintra4x4.h"
#include "vpx_dsp/variance.h"
#include "mcomp.h"
#include "vp8/common/vp8_skin_detection.h"
#include "rdopt.h"
#include "vpx_dsp/vpx_dsp_common.h"
#include "vpx_mem/vpx_mem.h"
#if CONFIG_TEMPORAL_DENOISING
#include "denoising.h"
#endif
#ifdef SPEEDSTATS
extern unsigned int cnt_pm;
#endif
extern const int vp8_ref_frame_order[MAX_MODES];
extern const MB_PREDICTION_MODE vp8_mode_order[MAX_MODES];
static int macroblock_corner_grad(unsigned char *signal, int stride,
int offsetx, int offsety, int sgnx,
int sgny) { … }
static int check_dot_artifact_candidate(VP8_COMP *cpi, MACROBLOCK *x,
unsigned char *target_last, int stride,
unsigned char *last_ref, int mb_row,
int mb_col, int channel) { … }
int vp8_skip_fractional_mv_step(MACROBLOCK *mb, BLOCK *b, BLOCKD *d,
int_mv *bestmv, int_mv *ref_mv,
int error_per_bit,
const vp8_variance_fn_ptr_t *vfp,
int *mvcost[2], int *distortion,
unsigned int *sse) { … }
int vp8_get_inter_mbpred_error(MACROBLOCK *mb, const vp8_variance_fn_ptr_t *vfp,
unsigned int *sse, int_mv this_mv) { … }
static int get_prediction_error(BLOCK *be, BLOCKD *b) { … }
static int pick_intra4x4block(MACROBLOCK *x, int ib,
B_PREDICTION_MODE *best_mode,
const int *mode_costs, int *bestrate,
int *bestdistortion) { … }
static int pick_intra4x4mby_modes(MACROBLOCK *mb, int *Rate, int *best_dist) { … }
static void pick_intra_mbuv_mode(MACROBLOCK *mb) { … }
static void update_mvcount(MACROBLOCK *x, int_mv *best_ref_mv) { … }
#if CONFIG_MULTI_RES_ENCODING
static void get_lower_res_motion_info(VP8_COMP *cpi, MACROBLOCKD *xd,
int *dissim, int *parent_ref_frame,
MB_PREDICTION_MODE *parent_mode,
int_mv *parent_ref_mv, int mb_row,
int mb_col) { … }
#endif
static void check_for_encode_breakout(unsigned int sse, MACROBLOCK *x) { … }
static int evaluate_inter_mode(unsigned int *sse, int rate2, int *distortion2,
VP8_COMP *cpi, MACROBLOCK *x, int rd_adj) { … }
static void calculate_zeromv_rd_adjustment(VP8_COMP *cpi, MACROBLOCK *x,
int *rd_adjustment) { … }
void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
int recon_uvoffset, int *returnrate,
int *returndistortion, int *returnintra, int mb_row,
int mb_col) { … }
void vp8_pick_intra_mode(MACROBLOCK *x, int *rate) { … }