From d435148fe6b9bc2a34ddb6b3bec8bd300a072786 Mon Sep 17 00:00:00 2001 From: Jingning Han 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 b9e4408..b826ff4 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 a70669f..4696a26 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) { -- 2.7.4