Commit 1e2fb103 authored by David Barker's avatar David Barker

Harmonize OBMC prediction at tile edges

When we have an OBMC block at the top of a tile, we don't generate
an 'above' prediction, in order to preserve tile independence.
However, the conditions for when to *generate* the above prediction
and when to *use* it were different when dependent-horztiles is
enabled.

Since dependent-horztiles allows each tile to depend on the tile
above, it seems reasonable to unify the conditions to use
xd->above_available (and similar for left preds, for the sake
of consistency). This allows OBMC across horizontal tile boundaries,
but not across tile group boundaries, in line with the rest of the
dependent-horztiles experiment.

Change-Id: I86d5de132c4429106a6025e7a7a2baec974e618c
parent 27e90295
......@@ -2302,7 +2302,7 @@ void av1_build_prediction_by_above_preds(const AV1_COMMON *cm, MACROBLOCKD *xd,
int tmp_width[MAX_MB_PLANE],
int tmp_height[MAX_MB_PLANE],
int tmp_stride[MAX_MB_PLANE]) {
if (mi_row <= xd->tile.mi_row_start) return;
if (!xd->up_available) return;
// Adjust mb_to_bottom_edge to have the correct value for the OBMC
// prediction block. This is half the height of the original block,
......@@ -2402,7 +2402,7 @@ void av1_build_prediction_by_left_preds(const AV1_COMMON *cm, MACROBLOCKD *xd,
int tmp_width[MAX_MB_PLANE],
int tmp_height[MAX_MB_PLANE],
int tmp_stride[MAX_MB_PLANE]) {
if (mi_col <= xd->tile.mi_col_start) return;
if (!xd->left_available) return;
// Adjust mb_to_right_edge to have the correct value for the OBMC
// prediction block. This is half the width of the original block,
......
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