]> granicus.if.org Git - libvpx/commitdiff
Use diamond search to build tpl model and arf frames
authorJingning Han <jingning@google.com>
Thu, 26 Jul 2018 23:41:55 +0000 (16:41 -0700)
committerJingning Han <jingning@google.com>
Fri, 27 Jul 2018 18:16:50 +0000 (11:16 -0700)
Use diamond search for full pixel motion estimation to build
the temporal dependency model and the source arf frame. This gives
better full pixel motion estimation accuracy. It improves the
compression performance.

In speed 0,
         avg PSNR     overall PSNR     SSIM
midres    -0.32%        -0.30%        -0.65%
hdres     -0.88%        -0.91%        -1.31%
nflx2k    -0.47%        -0.48%        -0.81%

In speed 1,
        avg PSNR      overall PSNR     SSIM
midres    -0.24%        -0.28%        -0.50%
hdres     -0.82%        -0.83%        -1.18%
nflx2k    -0.58%        -0.60%        -0.89%

The encoding speed change is minor due to the fact that such motion
estimation is triggered once at the beginning of each group of
picture coding.

Change-Id: Ib25c0ff4f7450c85fd7a38d24319bd7ae1b9dac8

vp9/encoder/vp9_encoder.c
vp9/encoder/vp9_temporal_filter.c

index 2204339c898028a9e63f652f0501d69dcf6181c6..e38df29c5f23f4cc0943aa032ab0f48d7f2be2db 100644 (file)
@@ -5584,7 +5584,7 @@ uint32_t motion_compensated_prediction(VP9_COMP *cpi, ThreadData *td,
   MACROBLOCK *const x = &td->mb;
   MACROBLOCKD *const xd = &x->e_mbd;
   MV_SPEED_FEATURES *const mv_sf = &cpi->sf.mv;
-  const SEARCH_METHODS search_method = HEX;
+  const SEARCH_METHODS search_method = NSTEP;
   int step_param;
   int sadpb = x->sadperbit16;
   uint32_t bestsme = UINT_MAX;
index 4db3e6f8e19a1236f6d8cb0f8e3abbadcf0e687a..9a357c1055d6dee3d612a5bfac6e63ce54f349f4 100644 (file)
@@ -230,7 +230,7 @@ static uint32_t temporal_filter_find_matching_mb_c(VP9_COMP *cpi,
   MACROBLOCK *const x = &td->mb;
   MACROBLOCKD *const xd = &x->e_mbd;
   MV_SPEED_FEATURES *const mv_sf = &cpi->sf.mv;
-  const SEARCH_METHODS search_method = HEX;
+  const SEARCH_METHODS search_method = NSTEP;
   int step_param;
   int sadpb = x->sadperbit16;
   uint32_t bestsme = UINT_MAX;