From: Stefano Sabatini Date: Sun, 19 Dec 2010 19:08:30 +0000 (+0000) Subject: Fix avfilter_draw_slice() copy code with alpha planes. X-Git-Tag: v0.7b2~1607 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fee0deb61fa6e306009ad8d32967e6c66a5c3b2e;p=coroid%2Flibav_saccubus.git Fix avfilter_draw_slice() copy code with alpha planes. Originally committed as revision 26060 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index db254d655..362d53701 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -416,9 +416,9 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) for (i = 0; i < 4; i++) { if (link->src_buf->data[i]) { src[i] = link->src_buf-> data[i] + - (y >> (i==0 ? 0 : vsub)) * link->src_buf-> linesize[i]; + (y >> (i==1 || i==2 ? vsub : 0)) * link->src_buf-> linesize[i]; dst[i] = link->cur_buf->data[i] + - (y >> (i==0 ? 0 : vsub)) * link->cur_buf->linesize[i]; + (y >> (i==1 || i==2 ? vsub : 0)) * link->cur_buf->linesize[i]; } else src[i] = dst[i] = NULL; } @@ -429,7 +429,7 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) if (!src[i]) continue; - for (j = 0; j < h >> (i==0 ? 0 : vsub); j++) { + for (j = 0; j < h >> (i==1 || i==2 ? vsub : 0); j++) { memcpy(dst[i], src[i], planew); src[i] += link->src_buf->linesize[i]; dst[i] += link->cur_buf->linesize[i];