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};