From 458446acfa1441d283dacf9e6e545beb083b8bb0 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 14 Oct 2013 03:13:10 +0200 Subject: lavc: Edge emulation with dst/src linesize Allow supporting files for which the image stride is smaller than the maximum block size + number of subpel mc taps, e.g. a 64x64 VP9 file or a 16x16 VP8 file with -fflags +emu_edge. --- libavcodec/rv34.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'libavcodec/rv34.c') diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index 8038f8f232..c02ea740b1 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -723,12 +723,18 @@ static inline void rv34_mc(RV34DecContext *r, const int block_type, uint8_t *uvbuf = s->edge_emu_buffer + 22 * s->linesize; srcY -= 2 + 2*s->linesize; - s->vdsp.emulated_edge_mc(s->edge_emu_buffer, srcY, s->linesize, (width<<3)+6, (height<<3)+6, + s->vdsp.emulated_edge_mc(s->edge_emu_buffer, srcY, + s->linesize, s->linesize, + (width << 3) + 6, (height << 3) + 6, src_x - 2, src_y - 2, s->h_edge_pos, s->v_edge_pos); srcY = s->edge_emu_buffer + 2 + 2*s->linesize; - s->vdsp.emulated_edge_mc(uvbuf , srcU, s->uvlinesize, (width<<2)+1, (height<<2)+1, + s->vdsp.emulated_edge_mc(uvbuf, srcU, + s->uvlinesize,s->uvlinesize, + (width << 2) + 1, (height << 2) + 1, uvsrc_x, uvsrc_y, s->h_edge_pos >> 1, s->v_edge_pos >> 1); - s->vdsp.emulated_edge_mc(uvbuf + 16, srcV, s->uvlinesize, (width<<2)+1, (height<<2)+1, + s->vdsp.emulated_edge_mc(uvbuf + 16, srcV, + s->uvlinesize, s->uvlinesize, + (width << 2) + 1, (height << 2) + 1, uvsrc_x, uvsrc_y, s->h_edge_pos >> 1, s->v_edge_pos >> 1); srcU = uvbuf; srcV = uvbuf + 16; -- cgit v1.2.3