Commit c7084182 authored by Phil Barrett's avatar Phil Barrett Committed by Kostya Shishkov

proresenc: correct edge emulation

Signed-off-by: 's avatarKostya Shishkov <kostya.shishkov@gmail.com>
parent 235d6932
...@@ -189,24 +189,24 @@ static void get_slice_data(ProresContext *ctx, const uint16_t *src, ...@@ -189,24 +189,24 @@ static void get_slice_data(ProresContext *ctx, const uint16_t *src,
elinesize = linesize; elinesize = linesize;
} else { } else {
int bw, bh, pix; int bw, bh, pix;
const int estride = 16 / sizeof(*ctx->emu_buf);
esrc = ctx->emu_buf; esrc = ctx->emu_buf;
elinesize = 16; elinesize = 16 * sizeof(*ctx->emu_buf);
bw = FFMIN(w - x, mb_width); bw = FFMIN(w - x, mb_width);
bh = FFMIN(h - y, 16); bh = FFMIN(h - y, 16);
for (j = 0; j < bh; j++) { for (j = 0; j < bh; j++) {
memcpy(ctx->emu_buf + j * estride, src + j * linesize, memcpy(ctx->emu_buf + j * 16,
(const uint8_t*)src + j * linesize,
bw * sizeof(*src)); bw * sizeof(*src));
pix = ctx->emu_buf[j * estride + bw - 1]; pix = ctx->emu_buf[j * 16 + bw - 1];
for (k = bw; k < mb_width; k++) for (k = bw; k < mb_width; k++)
ctx->emu_buf[j * estride + k] = pix; ctx->emu_buf[j * 16 + k] = pix;
} }
for (; j < 16; j++) for (; j < 16; j++)
memcpy(ctx->emu_buf + j * estride, memcpy(ctx->emu_buf + j * 16,
ctx->emu_buf + (bh - 1) * estride, ctx->emu_buf + (bh - 1) * 16,
mb_width * sizeof(*ctx->emu_buf)); mb_width * sizeof(*ctx->emu_buf));
} }
if (!is_chroma) { if (!is_chroma) {
......
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