AV1 RT: Fix thread sanitizer issue while accessing pred buffer
dst pointer in av1_predict_intra_block_facade() function is
updated based on blk_row and blk_col using pd->dst.buf. But
pd->dst.buf is already updated before calling the function in
estimate_block_intra() function.
This CL fixes the issue by moving pd->dst.buf update after
av1_predict_intra_block_facade() call.
STATS_CHANGED for RT encoding path.
Change-Id: Ia06238be2e7632d02337fdc2e33206f83e6a3809
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index bc7ee02..0b9bc6b 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -1251,12 +1251,12 @@
(void)block;
- p->src.buf = &src_buf_base[4 * (row * src_stride + col)];
- pd->dst.buf = &dst_buf_base[4 * (row * dst_stride + col)];
-
av1_predict_intra_block_facade(cm, xd, plane, col, row, tx_size);
av1_invalid_rd_stats(&this_rdc);
+ p->src.buf = &src_buf_base[4 * (row * src_stride + col)];
+ pd->dst.buf = &dst_buf_base[4 * (row * dst_stride + col)];
+
if (plane == 0) {
block_yrd(cpi, x, 0, 0, &this_rdc, &args->skippable, bsize_tx,
AOMMIN(tx_size, TX_16X16));