vp9/extend_for_intra: avoid crossing tile boundary
Change-Id: I0d8a71778aa3c73b8b1673e14053074bb866548b
This commit is contained in:
Родитель
34d6077c93
Коммит
3c038b6c40
|
@ -439,17 +439,20 @@ static void extend_for_intra(MACROBLOCKD* const xd, BLOCK_SIZE plane_bsize,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xd->mb_to_bottom_edge < 0) {
|
if (xd->mb_to_bottom_edge < 0) {
|
||||||
|
if (xd->left_available || x >= 0) {
|
||||||
const int bh = 4 << b_height_log2(plane_bsize);
|
const int bh = 4 << b_height_log2(plane_bsize);
|
||||||
const int umv_border_start = bh + (xd->mb_to_bottom_edge >>
|
const int umv_border_start =
|
||||||
(3 + pd->subsampling_y));
|
bh + (xd->mb_to_bottom_edge >> (3 + pd->subsampling_y));
|
||||||
int i;
|
|
||||||
|
if (y + bh > umv_border_start) {
|
||||||
const uint8_t c = buf[(umv_border_start - 1) * stride + x];
|
const uint8_t c = buf[(umv_border_start - 1) * stride + x];
|
||||||
uint8_t *d = &buf[umv_border_start * stride + x];
|
uint8_t *d = &buf[umv_border_start * stride + x];
|
||||||
|
int i;
|
||||||
if (y + bh > umv_border_start)
|
|
||||||
for (i = 0; i < bh; ++i, d += stride)
|
for (i = 0; i < bh; ++i, d += stride)
|
||||||
*d = c;
|
*d = c;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
static void set_contexts_on_border(MACROBLOCKD *xd,
|
static void set_contexts_on_border(MACROBLOCKD *xd,
|
||||||
struct macroblockd_plane *pd,
|
struct macroblockd_plane *pd,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче