From 5b5f3d5097508fa53d00e5d8587f1dc1a245a158 Mon Sep 17 00:00:00 2001 From: Cheng Chen <chengchen@google.com> Date: Wed, 17 Jan 2018 15:47:00 -0800 Subject: [PATCH] Fix a bug in jnt_comp (1). index may go out side of range (2). when d0 <= d1, comparison is invalid. Performance impact on Google lowres testset: Turn on jnt_comp vs baseline, Without fix: -0.211% gain With fix: -0.357% gain BUG=aomedia:1239 Change-Id: I761522bba8396bba0d4108d710030b472939cf32 --- av1/common/reconinter.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index b709793653..0a033f1a3a 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c @@ -905,10 +905,12 @@ void av1_jnt_comp_weight_assign(const AV1_COMMON *cm, const MB_MODE_INFO *mbmi, } int i; - for (i = 0; i < 4; ++i) { + for (i = 0; i < 3; ++i) { int c0 = quant_dist_weight[i][order]; int c1 = quant_dist_weight[i][!order]; - if (d0 * c0 < d1 * c1) break; + int d0_c0 = d0 * c0; + int d1_c1 = d1 * c1; + if ((d0 > d1 && d0_c0 < d1_c1) || (d0 <= d1 && d0_c0 > d1_c1)) break; } *fwd_offset = quant_dist_lookup_table[order_idx][i][order]; -- GitLab