]> granicus.if.org Git - libvpx/commitdiff
Minor adjustment in diagonal sub-pixel point checking
authorYunqing Wang <yunqingwang@google.com>
Tue, 4 Aug 2015 19:16:47 +0000 (12:16 -0700)
committerYunqing Wang <yunqingwang@google.com>
Tue, 4 Aug 2015 19:16:47 +0000 (12:16 -0700)
Choose a different diagonal point to check when the two costs are
the same, making it consistent with the way we choose the best mv.
This slightly changes the encoding result, and the derflr set borg
test at speed 0 shows 0.027% Overall PSNR gain, 0.024% Avg PSNR
gain, and 0.043% SSIM gain.

Change-Id: Ic8ee3a6767394866d159e4f9e1c777604dd73c17

vp9/encoder/vp9_mcomp.c

index 6e0c561c3ed8dbe912bfb6cf90c0b443303496b1..63a35526b9fa131c1481cf4d97c77ab3d8dad665 100644 (file)
@@ -703,8 +703,8 @@ int vp9_find_best_sub_pixel_tree(const MACROBLOCK *x,
     }
 
     // Check diagonal sub-pixel position
-    tc = bc + (cost_array[0] < cost_array[1] ? -hstep : hstep);
-    tr = br + (cost_array[2] < cost_array[3] ? -hstep : hstep);
+    tc = bc + (cost_array[0] <= cost_array[1] ? -hstep : hstep);
+    tr = br + (cost_array[2] <= cost_array[3] ? -hstep : hstep);
     if (tc >= minc && tc <= maxc && tr >= minr && tr <= maxr) {
       const uint8_t *const pre_address = y + (tr >> 3) * y_stride + (tc >> 3);
       MV this_mv = {tr, tc};