summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_pickmode.c
diff options
context:
space:
mode:
authorMarco <marpan@google.com>2017-07-13 14:49:39 -0700
committerMarco <marpan@google.com>2017-07-17 13:15:48 -0700
commit0c9e2f4c15a6edd982cdd3fed1209c7a93b9ecd2 (patch)
tree42bb23296a1dc2619f878b6811b2e3de3d8d123e /vp9/encoder/vp9_pickmode.c
parent9223b947ca1fd4003fa7a5d6441d5171d298a903 (diff)
downloadlibvpx-0c9e2f4c15a6edd982cdd3fed1209c7a93b9ecd2.tar
libvpx-0c9e2f4c15a6edd982cdd3fed1209c7a93b9ecd2.tar.gz
libvpx-0c9e2f4c15a6edd982cdd3fed1209c7a93b9ecd2.tar.bz2
libvpx-0c9e2f4c15a6edd982cdd3fed1209c7a93b9ecd2.zip
vp9: Reuse motion from choose_partitioning in NEWMV search.
When int_pro_motion_estimation is done for superblock in choose_partitioning, use it to avoid the full_pixel_search for NEWMV mode, if bsize is >= 32X32. For speed > 7. Small/neutral change on RTC metrics. ~1-2% speedup on arm on high motion clip. Change-Id: I3cfe6833ff4bf75d4afa83eaf058ad45729de85b
Diffstat (limited to 'vp9/encoder/vp9_pickmode.c')
-rw-r--r--vp9/encoder/vp9_pickmode.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c
index f340ef208..25ae6c442 100644
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -193,9 +193,14 @@ static int combined_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
else
center_mv = tmp_mv->as_mv;
- vp9_full_pixel_search(
- cpi, x, bsize, &mvp_full, step_param, cpi->sf.mv.search_method, sadpb,
- cond_cost_list(cpi, cost_list), &center_mv, &tmp_mv->as_mv, INT_MAX, 0);
+ if (x->sb_use_mv_part) {
+ tmp_mv->as_mv.row = x->sb_mvrow_part >> 3;
+ tmp_mv->as_mv.col = x->sb_mvcol_part >> 3;
+ } else {
+ vp9_full_pixel_search(
+ cpi, x, bsize, &mvp_full, step_param, cpi->sf.mv.search_method, sadpb,
+ cond_cost_list(cpi, cost_list), &center_mv, &tmp_mv->as_mv, INT_MAX, 0);
+ }
x->mv_limits = tmp_mv_limits;
@@ -1628,6 +1633,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, TileDataEnc *tile_data,
}
}
+ if (cpi->oxcf.speed <= 7 || bsize < BLOCK_32X32) x->sb_use_mv_part = 0;
+
for (idx = 0; idx < RT_INTER_MODES; ++idx) {
int rate_mv = 0;
int mode_rd_thresh;