From d435148fe6b9bc2a34ddb6b3bec8bd300a072786 Mon Sep 17 00:00:00 2001 From: Jingning Han <jingning@google.com> Date: Thu, 4 Sep 2014 16:09:14 -0700 Subject: [PATCH] Enable adaptive motion search for ARF coding This commit turns on adaptive motion search for ARF coding, in addition to other normal inter frame coding. It improves the average compression efficiency: stdhd 0.1% derf 0.04% For the test sequences, the speed 3 runtime is reduced: pedestrian 1080p 2000 kbps, 149932 ms -> 144580 ms, (3.3% speed-up) bus CIF 1000 kbps, 8050 ms -> 7895 ms, (1.9%) highway CIF 100 bkps, 45033 ms -> 44078 ms, (2.2%) Change-Id: I5228565b609f99e8ae04f6140a2bf2b64a831d21 --- vp9/encoder/vp9_rd.c | 1 - vp9/encoder/vp9_rdopt.c | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/vp9/encoder/vp9_rd.c b/vp9/encoder/vp9_rd.c index b9e44088da..b826ff4275 100644 --- a/vp9/encoder/vp9_rd.c +++ b/vp9/encoder/vp9_rd.c @@ -374,7 +374,6 @@ void vp9_mv_pred(VP9_COMP *cpi, MACROBLOCK *x, uint8_t *ref_y_ptr; const int num_mv_refs = MAX_MV_REF_CANDIDATES + (cpi->sf.adaptive_motion_search && - cpi->common.show_frame && block_size < cpi->sf.max_partition_size); MV pred_mv[3]; diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index a70669f84e..4696a26335 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -1398,7 +1398,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP9_COMP *cpi, MACROBLOCK *x, mvp_full.row = bsi->mvp.as_mv.row >> 3; mvp_full.col = bsi->mvp.as_mv.col >> 3; - if (cpi->sf.adaptive_motion_search && cm->show_frame) { + if (cpi->sf.adaptive_motion_search) { mvp_full.row = x->pred_mv[mbmi->ref_frame[0]].row >> 3; mvp_full.col = x->pred_mv[mbmi->ref_frame[0]].col >> 3; step_param = MAX(step_param, 8); @@ -1815,8 +1815,7 @@ static void single_motion_search(VP9_COMP *cpi, MACROBLOCK *x, step_param = cpi->mv_step_param; } - if (cpi->sf.adaptive_motion_search && bsize < BLOCK_64X64 && - cm->show_frame) { + if (cpi->sf.adaptive_motion_search && bsize < BLOCK_64X64) { int boffset = 2 * (b_width_log2(BLOCK_64X64) - MIN(b_height_log2(bsize), b_width_log2(bsize))); step_param = MAX(step_param, boffset); @@ -1876,7 +1875,7 @@ static void single_motion_search(VP9_COMP *cpi, MACROBLOCK *x, *rate_mv = vp9_mv_bit_cost(&tmp_mv->as_mv, &ref_mv, x->nmvjointcost, x->mvcost, MV_COST_WEIGHT); - if (cpi->sf.adaptive_motion_search && cm->show_frame) + if (cpi->sf.adaptive_motion_search) x->pred_mv[ref] = tmp_mv->as_mv; if (scaled_ref_frame) { -- GitLab