summaryrefslogtreecommitdiff
path: root/vp8/encoder/firstpass.c
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2011-05-13 00:05:14 -0400
committerJohn Koleszar <jkoleszar@google.com>2011-05-13 00:05:14 -0400
commit71a0eaf33ccd7437c129a91d4e3ff829551bef1f (patch)
treef0c10ddca4e53ce68f3d969a34fb850f75a79fcd /vp8/encoder/firstpass.c
parent5c849a64d97dd30b2d7e472bd75412dd1897bafd (diff)
parent71a7501bcf6ada5068d102c03ae597023e986538 (diff)
downloadlibvpx-71a0eaf33ccd7437c129a91d4e3ff829551bef1f.tar
libvpx-71a0eaf33ccd7437c129a91d4e3ff829551bef1f.tar.gz
libvpx-71a0eaf33ccd7437c129a91d4e3ff829551bef1f.tar.bz2
libvpx-71a0eaf33ccd7437c129a91d4e3ff829551bef1f.zip
Merge remote branch 'origin/master' into experimental
Change-Id: Idf2dead51d2936984eb9827dd6d2cb704817f4c8
Diffstat (limited to 'vp8/encoder/firstpass.c')
-rw-r--r--vp8/encoder/firstpass.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c
index 2537b9e31..90fac3529 100644
--- a/vp8/encoder/firstpass.c
+++ b/vp8/encoder/firstpass.c
@@ -39,7 +39,7 @@
extern void vp8_build_block_offsets(MACROBLOCK *x);
extern void vp8_setup_block_ptrs(MACROBLOCK *x);
extern void vp8cx_frame_init_quantizer(VP8_COMP *cpi);
-extern void vp8_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, MV *mv);
+extern void vp8_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, int_mv *mv);
extern void vp8_alloc_compressor_data(VP8_COMP *cpi);
//#define GFQ_ADJUSTMENT (40 + ((15*Q)/10))
@@ -423,14 +423,17 @@ static void zz_motion_search( VP8_COMP *cpi, MACROBLOCK * x, YV12_BUFFER_CONFIG
VARIANCE_INVOKE(IF_RTCD(&cpi->rtcd.variance), mse16x16) ( src_ptr, src_stride, ref_ptr, ref_stride, (unsigned int *)(best_motion_err));
}
-static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, MV *ref_mv, MV *best_mv, YV12_BUFFER_CONFIG *recon_buffer, int *best_motion_err, int recon_yoffset )
+static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x,
+ int_mv *ref_mv, MV *best_mv,
+ YV12_BUFFER_CONFIG *recon_buffer,
+ int *best_motion_err, int recon_yoffset )
{
MACROBLOCKD *const xd = & x->e_mbd;
BLOCK *b = &x->block[0];
BLOCKD *d = &x->e_mbd.block[0];
int num00;
- MV tmp_mv = {0, 0};
+ int_mv tmp_mv;
int tmp_err;
int step_param = 3; //3; // Dont search over full range for first pass
@@ -446,6 +449,7 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, MV *ref_mv, M
xd->pre.y_buffer = recon_buffer->y_buffer + recon_yoffset;
// Initial step/diamond search centred on best mv
+ tmp_mv.as_int = 0;
tmp_err = cpi->diamond_search_sad(x, b, d, ref_mv, &tmp_mv, step_param, x->errorperbit, &num00, &v_fn_ptr, x->mvcost, ref_mv);
if ( tmp_err < INT_MAX-new_mv_mode_penalty )
tmp_err += new_mv_mode_penalty;
@@ -453,8 +457,8 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, MV *ref_mv, M
if (tmp_err < *best_motion_err)
{
*best_motion_err = tmp_err;
- best_mv->row = tmp_mv.row;
- best_mv->col = tmp_mv.col;
+ best_mv->row = tmp_mv.as_mv.row;
+ best_mv->col = tmp_mv.as_mv.col;
}
// Further step/diamond searches as necessary
@@ -476,8 +480,8 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, MV *ref_mv, M
if (tmp_err < *best_motion_err)
{
*best_motion_err = tmp_err;
- best_mv->row = tmp_mv.row;
- best_mv->col = tmp_mv.col;
+ best_mv->row = tmp_mv.as_mv.row;
+ best_mv->col = tmp_mv.as_mv.col;
}
}
}
@@ -510,7 +514,9 @@ void vp8_first_pass(VP8_COMP *cpi)
int sum_in_vectors = 0;
- MV zero_ref_mv = {0, 0};
+ int_mv zero_ref_mv;
+
+ zero_ref_mv.as_int = 0;
vp8_clear_system_state(); //__asm emms;
@@ -602,7 +608,7 @@ void vp8_first_pass(VP8_COMP *cpi)
// Test last reference frame using the previous best mv as the
// starting point (best reference) for the search
- first_pass_motion_search(cpi, x, &best_ref_mv.as_mv,
+ first_pass_motion_search(cpi, x, &best_ref_mv,
&d->bmi.mv.as_mv, lst_yv12,
&motion_error, recon_yoffset);
@@ -666,7 +672,7 @@ void vp8_first_pass(VP8_COMP *cpi)
d->bmi.mv.as_mv.row <<= 3;
d->bmi.mv.as_mv.col <<= 3;
this_error = motion_error;
- vp8_set_mbmode_and_mvs(x, NEWMV, &d->bmi.mv.as_mv);
+ vp8_set_mbmode_and_mvs(x, NEWMV, &d->bmi.mv);
vp8_encode_inter16x16y(IF_RTCD(&cpi->rtcd), x);
sum_mvr += d->bmi.mv.as_mv.row;
sum_mvr_abs += abs(d->bmi.mv.as_mv.row);