Index: source/libvpx/vp9/encoder/vp9_rdopt.h |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_rdopt.h (revision 281795) |
+++ source/libvpx/vp9/encoder/vp9_rdopt.h (working copy) |
@@ -11,8 +11,6 @@ |
#ifndef VP9_ENCODER_VP9_RDOPT_H_ |
#define VP9_ENCODER_VP9_RDOPT_H_ |
-#include <limits.h> |
- |
#include "vp9/common/vp9_blockd.h" |
#include "vp9/encoder/vp9_block.h" |
@@ -22,126 +20,10 @@ |
extern "C" { |
#endif |
-#define RDDIV_BITS 7 |
- |
-#define RDCOST(RM, DM, R, D) \ |
- (((128 + ((int64_t)R) * (RM)) >> 8) + (D << DM)) |
-#define QIDX_SKIP_THRESH 115 |
- |
-#define MV_COST_WEIGHT 108 |
-#define MV_COST_WEIGHT_SUB 120 |
- |
-#define INVALID_MV 0x80008000 |
- |
-#define MAX_MODES 30 |
-#define MAX_REFS 6 |
- |
-// This enumerator type needs to be kept aligned with the mode order in |
-// const MODE_DEFINITION vp9_mode_order[MAX_MODES] used in the rd code. |
-typedef enum { |
- THR_NEARESTMV, |
- THR_NEARESTA, |
- THR_NEARESTG, |
- |
- THR_DC, |
- |
- THR_NEWMV, |
- THR_NEWA, |
- THR_NEWG, |
- |
- THR_NEARMV, |
- THR_NEARA, |
- THR_COMP_NEARESTLA, |
- THR_COMP_NEARESTGA, |
- |
- THR_TM, |
- |
- THR_COMP_NEARLA, |
- THR_COMP_NEWLA, |
- THR_NEARG, |
- THR_COMP_NEARGA, |
- THR_COMP_NEWGA, |
- |
- THR_ZEROMV, |
- THR_ZEROG, |
- THR_ZEROA, |
- THR_COMP_ZEROLA, |
- THR_COMP_ZEROGA, |
- |
- THR_H_PRED, |
- THR_V_PRED, |
- THR_D135_PRED, |
- THR_D207_PRED, |
- THR_D153_PRED, |
- THR_D63_PRED, |
- THR_D117_PRED, |
- THR_D45_PRED, |
-} THR_MODES; |
- |
-typedef enum { |
- THR_LAST, |
- THR_GOLD, |
- THR_ALTR, |
- THR_COMP_LA, |
- THR_COMP_GA, |
- THR_INTRA, |
-} THR_MODES_SUB8X8; |
- |
-typedef struct RD_OPT { |
- // Thresh_mult is used to set a threshold for the rd score. A higher value |
- // means that we will accept the best mode so far more often. This number |
- // is used in combination with the current block size, and thresh_freq_fact |
- // to pick a threshold. |
- int thresh_mult[MAX_MODES]; |
- int thresh_mult_sub8x8[MAX_REFS]; |
- |
- int threshes[MAX_SEGMENTS][BLOCK_SIZES][MAX_MODES]; |
- int thresh_freq_fact[BLOCK_SIZES][MAX_MODES]; |
- |
- int64_t comp_pred_diff[REFERENCE_MODES]; |
- int64_t prediction_type_threshes[MAX_REF_FRAMES][REFERENCE_MODES]; |
- int64_t tx_select_diff[TX_MODES]; |
- // FIXME(rbultje) can this overflow? |
- int tx_select_threshes[MAX_REF_FRAMES][TX_MODES]; |
- |
- int64_t filter_diff[SWITCHABLE_FILTER_CONTEXTS]; |
- int64_t filter_threshes[MAX_REF_FRAMES][SWITCHABLE_FILTER_CONTEXTS]; |
- int64_t filter_cache[SWITCHABLE_FILTER_CONTEXTS]; |
- int64_t mask_filter; |
- |
- int RDMULT; |
- int RDDIV; |
-} RD_OPT; |
- |
- |
struct TileInfo; |
struct VP9_COMP; |
struct macroblock; |
-int vp9_compute_rd_mult(const struct VP9_COMP *cpi, int qindex); |
- |
-void vp9_initialize_rd_consts(struct VP9_COMP *cpi); |
- |
-void vp9_initialize_me_consts(struct VP9_COMP *cpi, int qindex); |
- |
-void vp9_model_rd_from_var_lapndz(unsigned int var, unsigned int n, |
- unsigned int qstep, int *rate, |
- int64_t *dist); |
- |
-int vp9_get_switchable_rate(const struct VP9_COMP *cpi); |
- |
-void vp9_setup_buffer_inter(struct VP9_COMP *cpi, struct macroblock *x, |
- const TileInfo *const tile, |
- MV_REFERENCE_FRAME ref_frame, |
- BLOCK_SIZE block_size, |
- int mi_row, int mi_col, |
- int_mv frame_nearest_mv[MAX_REF_FRAMES], |
- int_mv frame_near_mv[MAX_REF_FRAMES], |
- struct buf_2d yv12_mb[4][MAX_MB_PLANE]); |
- |
-const YV12_BUFFER_CONFIG *vp9_get_scaled_ref_frame(const struct VP9_COMP *cpi, |
- int ref_frame); |
- |
void vp9_rd_pick_intra_mode_sb(struct VP9_COMP *cpi, struct macroblock *x, |
int *r, int64_t *d, BLOCK_SIZE bsize, |
PICK_MODE_CONTEXT *ctx, int64_t best_rd); |
@@ -155,6 +37,14 @@ |
PICK_MODE_CONTEXT *ctx, |
int64_t best_rd_so_far); |
+int64_t vp9_rd_pick_inter_mode_sb_seg_skip(struct VP9_COMP *cpi, |
+ struct macroblock *x, |
+ int *returnrate, |
+ int64_t *returndistortion, |
+ BLOCK_SIZE bsize, |
+ PICK_MODE_CONTEXT *ctx, |
+ int64_t best_rd_so_far); |
+ |
int64_t vp9_rd_pick_inter_mode_sub8x8(struct VP9_COMP *cpi, |
struct macroblock *x, |
const struct TileInfo *const tile, |
@@ -165,22 +55,6 @@ |
PICK_MODE_CONTEXT *ctx, |
int64_t best_rd_so_far); |
-void vp9_init_me_luts(); |
- |
-void vp9_get_entropy_contexts(BLOCK_SIZE bsize, TX_SIZE tx_size, |
- const struct macroblockd_plane *pd, |
- ENTROPY_CONTEXT t_above[16], |
- ENTROPY_CONTEXT t_left[16]); |
- |
-void vp9_set_rd_speed_thresholds(struct VP9_COMP *cpi); |
- |
-void vp9_set_rd_speed_thresholds_sub8x8(struct VP9_COMP *cpi); |
- |
-static INLINE int rd_less_than_thresh(int64_t best_rd, int thresh, |
- int thresh_fact) { |
- return best_rd < ((int64_t)thresh * thresh_fact >> 5) || thresh == INT_MAX; |
-} |
- |
#ifdef __cplusplus |
} // extern "C" |
#endif |