Commit 7523a7ec authored by Brennan Shacklett's avatar Brennan Shacklett Committed by hui su
Browse files

Temporary fix for 4X8 block intra prediction.

Currently the RD loop traverses 4X8 blocks in inverted N order while
the bitstream stores blocks smaller than 8x8 in Z order. This causes a
discrepancy where the RD loop reads uninitialized data while
performing intra prediction.  As a temporary fix simply disable the
use of the extended right edge for 4X8 blocks, until the bitstream can
be changed to match the logical structure of the blocks.

Change-Id: I44a9e4fc1a15cd551a7b38c3c1227bc5dac77e9a
parent 40f1d487
......@@ -233,6 +233,14 @@ static int av1_has_right(BLOCK_SIZE bsize, int mi_row, int mi_col,
const int w = AOMMAX(num_4x4_blocks_wide_lookup[bsize] >> ss_x, 1);
const int step = 1 << txsz;
// TODO(bshacklett, huisu): Currently the RD loop traverses 4X8 blocks in
// inverted N order while in the bitstream the subblocks are stored in Z
// order. This discrepancy makes this function incorrect when considering 4X8
// blocks in the RD loop, so we disable the extended right edge for these
// blocks. The correct solution is to change the bitstream to store these
// blocks in inverted N order, and then update this function appropriately.
if (bsize == BLOCK_4X8 && y == 1) return 0;
if (!right_available) {
return 0;
} else {
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment