shithub: libvpx

Download patch

ref: 726d1b841b8101fbfa75eb9832e9baa9e477c1d5
parent: a3d22aa2a4e9946f5dd5e0e77c351511fb5d97ec
author: Yunqing Wang <[email protected]>
date: Tue Aug 4 08:16:47 EDT 2015

Minor adjustment in diagonal sub-pixel point checking

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

--- a/vp9/encoder/vp9_mcomp.c
+++ b/vp9/encoder/vp9_mcomp.c
@@ -703,8 +703,8 @@
     }
 
     // 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};