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

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 {
Markdown is supported
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