Commit d1b65c6b authored by Dmitry Kovalev's avatar Dmitry Kovalev
Browse files

Moving allow_high_precision_mv from MACROBLOCKD to VP9_COMMON.

This value is a global frame-level flag, not a macroblock-level.

Change-Id: Ie8c5790a931150741c2167c00c3e3dd2cf26744d
parent 41ff8d7a
...@@ -222,8 +222,6 @@ typedef struct macroblockd { ...@@ -222,8 +222,6 @@ typedef struct macroblockd {
struct subpix_fn_table subpix; struct subpix_fn_table subpix;
int allow_high_precision_mv;
int corrupted; int corrupted;
unsigned char sb_index; // index of 32x32 block inside the 64x64 block unsigned char sb_index; // index of 32x32 block inside the 64x64 block
......
...@@ -22,14 +22,12 @@ static void lower_mv_precision(MV *mv, int allow_hp) { ...@@ -22,14 +22,12 @@ static void lower_mv_precision(MV *mv, int allow_hp) {
} }
void vp9_find_best_ref_mvs(MACROBLOCKD *xd, void vp9_find_best_ref_mvs(MACROBLOCKD *xd, int allow_hp,
int_mv *mvlist, int_mv *mvlist, int_mv *nearest, int_mv *near) {
int_mv *nearest,
int_mv *near) {
int i; int i;
// Make sure all the candidates are properly clamped etc // Make sure all the candidates are properly clamped etc
for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) { for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) {
lower_mv_precision(&mvlist[i].as_mv, xd->allow_high_precision_mv); lower_mv_precision(&mvlist[i].as_mv, allow_hp);
clamp_mv2(&mvlist[i].as_mv, xd); clamp_mv2(&mvlist[i].as_mv, xd);
} }
*nearest = mvlist[0]; *nearest = mvlist[0];
......
...@@ -23,10 +23,8 @@ ...@@ -23,10 +23,8 @@
// check a list of motion vectors by sad score using a number rows of pixels // check a list of motion vectors by sad score using a number rows of pixels
// above and a number cols of pixels in the left to select the one with best // above and a number cols of pixels in the left to select the one with best
// score to use as ref motion vector // score to use as ref motion vector
void vp9_find_best_ref_mvs(MACROBLOCKD *xd, void vp9_find_best_ref_mvs(MACROBLOCKD *xd, int allow_hp,
int_mv *mvlist, int_mv *mvlist, int_mv *nearest, int_mv *near);
int_mv *nearest,
int_mv *near);
// TODO(jingning): this mv clamping function should be block size dependent. // TODO(jingning): this mv clamping function should be block size dependent.
static void clamp_mv2(MV *mv, const MACROBLOCKD *xd) { static void clamp_mv2(MV *mv, const MACROBLOCKD *xd) {
......
...@@ -129,6 +129,8 @@ typedef struct VP9Common { ...@@ -129,6 +129,8 @@ typedef struct VP9Common {
// Flag signaling that the frame is encoded using only INTRA modes. // Flag signaling that the frame is encoded using only INTRA modes.
int intra_only; int intra_only;
int allow_high_precision_mv;
// Flag signaling that the frame context should be reset to default values. // Flag signaling that the frame context should be reset to default values.
// 0 or 1 implies don't reset, 2 reset just the context specified in the // 0 or 1 implies don't reset, 2 reset just the context specified in the
// frame header, 3 reset all contexts. // frame header, 3 reset all contexts.
......
...@@ -487,7 +487,7 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm, ...@@ -487,7 +487,7 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm,
int mi_row, int mi_col, vp9_reader *r) { int mi_row, int mi_col, vp9_reader *r) {
MB_MODE_INFO *const mbmi = &mi->mbmi; MB_MODE_INFO *const mbmi = &mi->mbmi;
const BLOCK_SIZE bsize = mbmi->sb_type; const BLOCK_SIZE bsize = mbmi->sb_type;
const int allow_hp = xd->allow_high_precision_mv; const int allow_hp = cm->allow_high_precision_mv;
int_mv nearest[2], nearmv[2], best[2]; int_mv nearest[2], nearmv[2], best[2];
uint8_t inter_mode_ctx; uint8_t inter_mode_ctx;
...@@ -518,7 +518,8 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm, ...@@ -518,7 +518,8 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm,
// nearest, nearby // nearest, nearby
if (bsize < BLOCK_8X8 || mbmi->mode != ZEROMV) { if (bsize < BLOCK_8X8 || mbmi->mode != ZEROMV) {
vp9_find_best_ref_mvs(xd, mbmi->ref_mvs[ref0], &nearest[0], &nearmv[0]); vp9_find_best_ref_mvs(xd, allow_hp,
mbmi->ref_mvs[ref0], &nearest[0], &nearmv[0]);
best[0].as_int = nearest[0].as_int; best[0].as_int = nearest[0].as_int;
} }
...@@ -528,7 +529,8 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm, ...@@ -528,7 +529,8 @@ static void read_inter_block_mode_info(VP9_COMMON *const cm,
ref1, mbmi->ref_mvs[ref1], mi_row, mi_col); ref1, mbmi->ref_mvs[ref1], mi_row, mi_col);
if (bsize < BLOCK_8X8 || mbmi->mode != ZEROMV) { if (bsize < BLOCK_8X8 || mbmi->mode != ZEROMV) {
vp9_find_best_ref_mvs(xd, mbmi->ref_mvs[ref1], &nearest[1], &nearmv[1]); vp9_find_best_ref_mvs(xd, allow_hp,
mbmi->ref_mvs[ref1], &nearest[1], &nearmv[1]);
best[1].as_int = nearest[1].as_int; best[1].as_int = nearest[1].as_int;
} }
} }
...@@ -630,8 +632,7 @@ static void read_comp_pred(VP9_COMMON *cm, vp9_reader *r) { ...@@ -630,8 +632,7 @@ static void read_comp_pred(VP9_COMMON *cm, vp9_reader *r) {
vp9_diff_update_prob(r, &cm->fc.comp_ref_prob[i]); vp9_diff_update_prob(r, &cm->fc.comp_ref_prob[i]);
} }
void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) { void vp9_prepare_read_mode_info(VP9_COMMON *cm, vp9_reader *r) {
VP9_COMMON *const cm = &pbi->common;
int k; int k;
// TODO(jkoleszar): does this clear more than MBSKIP_CONTEXTS? Maybe remove. // TODO(jkoleszar): does this clear more than MBSKIP_CONTEXTS? Maybe remove.
...@@ -640,8 +641,7 @@ void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) { ...@@ -640,8 +641,7 @@ void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) {
vp9_diff_update_prob(r, &cm->fc.mbskip_probs[k]); vp9_diff_update_prob(r, &cm->fc.mbskip_probs[k]);
if (!frame_is_intra_only(cm)) { if (!frame_is_intra_only(cm)) {
nmv_context *const nmvc = &pbi->common.fc.nmvc; nmv_context *const nmvc = &cm->fc.nmvc;
MACROBLOCKD *const xd = &pbi->mb;
int i, j; int i, j;
read_inter_mode_probs(&cm->fc, r); read_inter_mode_probs(&cm->fc, r);
...@@ -662,7 +662,7 @@ void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) { ...@@ -662,7 +662,7 @@ void vp9_prepare_read_mode_info(VP9D_COMP* pbi, vp9_reader *r) {
for (i = 0; i < PARTITION_TYPES - 1; ++i) for (i = 0; i < PARTITION_TYPES - 1; ++i)
vp9_diff_update_prob(r, &cm->fc.partition_prob[INTER_FRAME][j][i]); vp9_diff_update_prob(r, &cm->fc.partition_prob[INTER_FRAME][j][i]);
read_mv_probs(r, nmvc, xd->allow_high_precision_mv); read_mv_probs(r, nmvc, cm->allow_high_precision_mv);
} }
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "vp9/decoder/vp9_onyxd_int.h" #include "vp9/decoder/vp9_onyxd_int.h"
#include "vp9/decoder/vp9_dboolhuff.h" #include "vp9/decoder/vp9_dboolhuff.h"
void vp9_prepare_read_mode_info(VP9D_COMP *pbi, vp9_reader *r); void vp9_prepare_read_mode_info(VP9_COMMON* cm, vp9_reader *r);
void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd, void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd,
int mi_row, int mi_col, vp9_reader *r); int mi_row, int mi_col, vp9_reader *r);
......
...@@ -796,7 +796,6 @@ static void setup_inter_inter(VP9_COMMON *cm) { ...@@ -796,7 +796,6 @@ static void setup_inter_inter(VP9_COMMON *cm) {
static size_t read_uncompressed_header(VP9D_COMP *pbi, static size_t read_uncompressed_header(VP9D_COMP *pbi,
struct vp9_read_bit_buffer *rb) { struct vp9_read_bit_buffer *rb) {
VP9_COMMON *const cm = &pbi->common; VP9_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &pbi->mb;
size_t sz; size_t sz;
int i; int i;
...@@ -875,7 +874,7 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi, ...@@ -875,7 +874,7 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi,
setup_frame_size_with_refs(pbi, rb); setup_frame_size_with_refs(pbi, rb);
xd->allow_high_precision_mv = vp9_rb_read_bit(rb); cm->allow_high_precision_mv = vp9_rb_read_bit(rb);
cm->mcomp_filter_type = read_interp_filter_type(rb); cm->mcomp_filter_type = read_interp_filter_type(rb);
for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i)
...@@ -925,7 +924,7 @@ static int read_compressed_header(VP9D_COMP *pbi, const uint8_t *data, ...@@ -925,7 +924,7 @@ static int read_compressed_header(VP9D_COMP *pbi, const uint8_t *data,
read_tx_probs(&cm->fc.tx_probs, &r); read_tx_probs(&cm->fc.tx_probs, &r);
read_coef_probs(&cm->fc, cm->tx_mode, &r); read_coef_probs(&cm->fc, cm->tx_mode, &r);
vp9_prepare_read_mode_info(pbi, &r); vp9_prepare_read_mode_info(cm, &r);
return vp9_reader_has_error(&r); return vp9_reader_has_error(&r);
} }
...@@ -1030,7 +1029,7 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) { ...@@ -1030,7 +1029,7 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
if (!frame_is_intra_only(cm)) { if (!frame_is_intra_only(cm)) {
vp9_adapt_mode_probs(cm); vp9_adapt_mode_probs(cm);
vp9_adapt_mv_probs(cm, xd->allow_high_precision_mv); vp9_adapt_mv_probs(cm, cm->allow_high_precision_mv);
} }
} }
......
...@@ -402,7 +402,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { ...@@ -402,7 +402,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
const int segment_id = mi->segment_id; const int segment_id = mi->segment_id;
int skip_coeff; int skip_coeff;
const BLOCK_SIZE bsize = mi->sb_type; const BLOCK_SIZE bsize = mi->sb_type;
const int allow_hp = xd->allow_high_precision_mv; const int allow_hp = cm->allow_high_precision_mv;
#ifdef ENTROPY_STATS #ifdef ENTROPY_STATS
active_section = 9; active_section = 9;
...@@ -1309,7 +1309,6 @@ static void write_sync_code(struct vp9_write_bit_buffer *wb) { ...@@ -1309,7 +1309,6 @@ static void write_sync_code(struct vp9_write_bit_buffer *wb) {
static void write_uncompressed_header(VP9_COMP *cpi, static void write_uncompressed_header(VP9_COMP *cpi,
struct vp9_write_bit_buffer *wb) { struct vp9_write_bit_buffer *wb) {
VP9_COMMON *const cm = &cpi->common; VP9_COMMON *const cm = &cpi->common;
MACROBLOCKD *const xd = &cpi->mb.e_mbd;
// frame marker bits // frame marker bits
vp9_wb_write_literal(wb, 0x2, 2); vp9_wb_write_literal(wb, 0x2, 2);
...@@ -1374,7 +1373,7 @@ static void write_uncompressed_header(VP9_COMP *cpi, ...@@ -1374,7 +1373,7 @@ static void write_uncompressed_header(VP9_COMP *cpi,
write_frame_size_with_refs(cpi, wb); write_frame_size_with_refs(cpi, wb);
vp9_wb_write_bit(wb, xd->allow_high_precision_mv); vp9_wb_write_bit(wb, cm->allow_high_precision_mv);
fix_mcomp_filter_type(cpi); fix_mcomp_filter_type(cpi);
write_interp_filter_type(cm->mcomp_filter_type, wb); write_interp_filter_type(cm->mcomp_filter_type, wb);
...@@ -1472,7 +1471,7 @@ static size_t write_compressed_header(VP9_COMP *cpi, uint8_t *data) { ...@@ -1472,7 +1471,7 @@ static size_t write_compressed_header(VP9_COMP *cpi, uint8_t *data) {
(unsigned int *)cpi->partition_count[i]); (unsigned int *)cpi->partition_count[i]);
} }
vp9_write_nmv_probs(cpi, xd->allow_high_precision_mv, &header_bc); vp9_write_nmv_probs(cpi, cm->allow_high_precision_mv, &header_bc);
} }
vp9_stop_encode(&header_bc); vp9_stop_encode(&header_bc);
......
...@@ -61,7 +61,7 @@ static unsigned int do_16x16_motion_iteration(VP9_COMP *cpi, ...@@ -61,7 +61,7 @@ static unsigned int do_16x16_motion_iteration(VP9_COMP *cpi,
best_err = cpi->find_fractional_mv_step( best_err = cpi->find_fractional_mv_step(
x, x,
&dst_mv->as_mv, &ref_mv->as_mv, &dst_mv->as_mv, &ref_mv->as_mv,
xd->allow_high_precision_mv, cpi->common.allow_high_precision_mv,
x->errorperbit, &v_fn_ptr, x->errorperbit, &v_fn_ptr,
0, cpi->sf.subpel_iters_per_step, NULL, NULL, 0, cpi->sf.subpel_iters_per_step, NULL, NULL,
& distortion, &sse); & distortion, &sse);
......
...@@ -237,8 +237,9 @@ static int get_active_quality(int q, ...@@ -237,8 +237,9 @@ static int get_active_quality(int q,
return active_best_quality; return active_best_quality;
} }
static void set_mvcost(MACROBLOCK *mb) { static void set_mvcost(VP9_COMP *cpi) {
if (mb->e_mbd.allow_high_precision_mv) { MACROBLOCK *const mb = &cpi->mb;
if (cpi->common.allow_high_precision_mv) {
mb->mvcost = mb->nmvcost_hp; mb->mvcost = mb->nmvcost_hp;
mb->mvsadcost = mb->nmvsadcost_hp; mb->mvsadcost = mb->nmvsadcost_hp;
} else { } else {
...@@ -1261,8 +1262,8 @@ void vp9_change_config(VP9_PTR ptr, VP9_CONFIG *oxcf) { ...@@ -1261,8 +1262,8 @@ void vp9_change_config(VP9_PTR ptr, VP9_CONFIG *oxcf) {
cm->reset_frame_context = 0; cm->reset_frame_context = 0;
setup_features(cm); setup_features(cm);
cpi->mb.e_mbd.allow_high_precision_mv = 0; // Default mv precision cpi->common.allow_high_precision_mv = 0; // Default mv precision
set_mvcost(&cpi->mb); set_mvcost(cpi);
{ {
int i; int i;
...@@ -2818,7 +2819,6 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, ...@@ -2818,7 +2819,6 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
unsigned char *dest, unsigned char *dest,
unsigned int *frame_flags) { unsigned int *frame_flags) {
VP9_COMMON *const cm = &cpi->common; VP9_COMMON *const cm = &cpi->common;
MACROBLOCKD *const xd = &cpi->mb.e_mbd;
TX_SIZE t; TX_SIZE t;
int q; int q;
int frame_over_shoot_limit; int frame_over_shoot_limit;
...@@ -2987,8 +2987,8 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, ...@@ -2987,8 +2987,8 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
if (!frame_is_intra_only(cm)) { if (!frame_is_intra_only(cm)) {
cm->mcomp_filter_type = DEFAULT_INTERP_FILTER; cm->mcomp_filter_type = DEFAULT_INTERP_FILTER;
/* TODO: Decide this more intelligently */ /* TODO: Decide this more intelligently */
xd->allow_high_precision_mv = q < HIGH_PRECISION_MV_QTHRESH; cm->allow_high_precision_mv = q < HIGH_PRECISION_MV_QTHRESH;
set_mvcost(&cpi->mb); set_mvcost(cpi);
} }
#if CONFIG_VP9_POSTPROC #if CONFIG_VP9_POSTPROC
...@@ -3277,7 +3277,7 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi, ...@@ -3277,7 +3277,7 @@ static void encode_frame_to_data_rate(VP9_COMP *cpi,
if (!cpi->common.error_resilient_mode && if (!cpi->common.error_resilient_mode &&
!cpi->common.frame_parallel_decoding_mode) { !cpi->common.frame_parallel_decoding_mode) {
vp9_adapt_mode_probs(&cpi->common); vp9_adapt_mode_probs(&cpi->common);
vp9_adapt_mv_probs(&cpi->common, cpi->mb.e_mbd.allow_high_precision_mv); vp9_adapt_mv_probs(&cpi->common, cpi->common.allow_high_precision_mv);
} }
} }
...@@ -3601,8 +3601,8 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags, ...@@ -3601,8 +3601,8 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags,
cpi->source = NULL; cpi->source = NULL;
cpi->mb.e_mbd.allow_high_precision_mv = ALTREF_HIGH_PRECISION_MV; cpi->common.allow_high_precision_mv = ALTREF_HIGH_PRECISION_MV;
set_mvcost(&cpi->mb); set_mvcost(cpi);
// Should we code an alternate reference frame. // Should we code an alternate reference frame.
if (cpi->oxcf.play_alternate && cpi->source_alt_ref_pending) { if (cpi->oxcf.play_alternate && cpi->source_alt_ref_pending) {
......
...@@ -261,10 +261,10 @@ void vp9_initialize_rd_consts(VP9_COMP *cpi) { ...@@ -261,10 +261,10 @@ void vp9_initialize_rd_consts(VP9_COMP *cpi) {
if (!frame_is_intra_only(&cpi->common)) { if (!frame_is_intra_only(&cpi->common)) {
vp9_build_nmv_cost_table( vp9_build_nmv_cost_table(
cpi->mb.nmvjointcost, cpi->mb.nmvjointcost,
cpi->mb.e_mbd.allow_high_precision_mv ? cpi->common.allow_high_precision_mv ?
cpi->mb.nmvcost_hp : cpi->mb.nmvcost, cpi->mb.nmvcost_hp : cpi->mb.nmvcost,
&cpi->common.fc.nmvc, &cpi->common.fc.nmvc,
cpi->mb.e_mbd.allow_high_precision_mv, 1, 1); cpi->common.allow_high_precision_mv, 1, 1);
for (i = 0; i < INTER_MODE_CONTEXTS; i++) { for (i = 0; i < INTER_MODE_CONTEXTS; i++) {
MB_PREDICTION_MODE m; MB_PREDICTION_MODE m;
...@@ -1860,7 +1860,7 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -1860,7 +1860,7 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
cpi->find_fractional_mv_step(x, cpi->find_fractional_mv_step(x,
&mode_mv[NEWMV].as_mv, &mode_mv[NEWMV].as_mv,
&bsi->ref_mv->as_mv, &bsi->ref_mv->as_mv,
x->e_mbd.allow_high_precision_mv, cpi->common.allow_high_precision_mv,
x->errorperbit, v_fn_ptr, x->errorperbit, v_fn_ptr,
0, cpi->sf.subpel_iters_per_step, 0, cpi->sf.subpel_iters_per_step,
x->nmvjointcost, x->mvcost, x->nmvjointcost, x->mvcost,
...@@ -2293,7 +2293,7 @@ static void setup_buffer_inter(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2293,7 +2293,7 @@ static void setup_buffer_inter(VP9_COMP *cpi, MACROBLOCK *x,
mbmi->ref_mvs[frame_type], mi_row, mi_col); mbmi->ref_mvs[frame_type], mi_row, mi_col);
// Candidate refinement carried out at encoder and decoder // Candidate refinement carried out at encoder and decoder
vp9_find_best_ref_mvs(xd, vp9_find_best_ref_mvs(xd, cm->allow_high_precision_mv,
mbmi->ref_mvs[frame_type], mbmi->ref_mvs[frame_type],
&frame_nearest_mv[frame_type], &frame_nearest_mv[frame_type],
&frame_near_mv[frame_type]); &frame_near_mv[frame_type]);
...@@ -2441,7 +2441,7 @@ static void single_motion_search(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2441,7 +2441,7 @@ static void single_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
int dis; /* TODO: use dis in distortion calculation later. */ int dis; /* TODO: use dis in distortion calculation later. */
unsigned int sse; unsigned int sse;
cpi->find_fractional_mv_step(x, &tmp_mv->as_mv, &ref_mv.as_mv, cpi->find_fractional_mv_step(x, &tmp_mv->as_mv, &ref_mv.as_mv,
xd->allow_high_precision_mv, cm->allow_high_precision_mv,
x->errorperbit, x->errorperbit,
&cpi->fn_ptr[block_size], &cpi->fn_ptr[block_size],
0, cpi->sf.subpel_iters_per_step, 0, cpi->sf.subpel_iters_per_step,
...@@ -2577,7 +2577,7 @@ static void joint_motion_search(VP9_COMP *cpi, MACROBLOCK *x, ...@@ -2577,7 +2577,7 @@ static void joint_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
bestsme = cpi->find_fractional_mv_step_comp( bestsme = cpi->find_fractional_mv_step_comp(
x, &tmp_mv.as_mv, x, &tmp_mv.as_mv,
&ref_mv[id].as_mv, &ref_mv[id].as_mv,
xd->allow_high_precision_mv, cpi->common.allow_high_precision_mv,
x->errorperbit, x->errorperbit,
&cpi->fn_ptr[block_size], &cpi->fn_ptr[block_size],
0, cpi->sf.subpel_iters_per_step, 0, cpi->sf.subpel_iters_per_step,
......
...@@ -166,7 +166,7 @@ static int temporal_filter_find_matching_mb_c(VP9_COMP *cpi, ...@@ -166,7 +166,7 @@ static int temporal_filter_find_matching_mb_c(VP9_COMP *cpi,
// Ignore mv costing by sending NULL pointer instead of cost array // Ignore mv costing by sending NULL pointer instead of cost array
bestsme = cpi->find_fractional_mv_step(x, &ref_mv->as_mv, bestsme = cpi->find_fractional_mv_step(x, &ref_mv->as_mv,
&best_ref_mv1.as_mv, &best_ref_mv1.as_mv,
xd->allow_high_precision_mv, cpi->common.allow_high_precision_mv,
x->errorperbit, x->errorperbit,
&cpi->fn_ptr[BLOCK_16X16], &cpi->fn_ptr[BLOCK_16X16],
0, cpi->sf.subpel_iters_per_step, 0, cpi->sf.subpel_iters_per_step,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment