ref: bdbf8725243c7eec4c8d0c59310a94bc002c81e2
parent: b358f9076f153835680cd3af3765c7e30474c030
author: Hui Su <huisu@google.com>
date: Thu Jul 30 18:48:09 EDT 2020
Assign correct values for zcoeff_blk in sub8x8 RDO This fixes a lossless encoding bug as reported in the issue tracker. Coding performance change is neutral. BUG=webm:1700 Change-Id: I0f034b16b57e917e722709a7e9addef864b83d27
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -4443,6 +4443,7 @@
tmp_best_sse = total_sse;
tmp_best_skippable = skippable;
tmp_best_mbmode = *mi;
+ x->sum_y_eobs[TX_4X4] = 0;
for (i = 0; i < 4; i++) {
tmp_best_bmodes[i] = xd->mi[0]->bmi[i];
x->zcoeff_blk[TX_4X4][i] = !x->plane[0].eobs[i];
@@ -4476,6 +4477,11 @@
&rate, &rate_y, &distortion, &skippable, &total_sse,
(int)this_rd_thresh, seg_mvs, bsi, 0, mi_row, mi_col);
if (tmp_rd == INT64_MAX) continue;
+ x->sum_y_eobs[TX_4X4] = 0;
+ for (i = 0; i < 4; i++) {
+ x->zcoeff_blk[TX_4X4][i] = !x->plane[0].eobs[i];
+ x->sum_y_eobs[TX_4X4] += x->plane[0].eobs[i];
+ }
} else {
total_sse = tmp_best_sse;
rate = tmp_best_rate;