Commit 16e83cbb authored by Philip Gladstone's avatar Philip Gladstone

Fix a bug in the conversion of rgba32->yuv420p. This resulted in garbage images

when this conversion was used. I suspect that the same bug may be lurking in
other conversions. [The assumption was that the linesize was equal to the width
for both the source and destination images. This turns out not to be true
in some cases.]

Originally committed as revision 1556 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 04bbd31b
...@@ -574,8 +574,8 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \ ...@@ -574,8 +574,8 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \
cb = dst->data[1]; \ cb = dst->data[1]; \
cr = dst->data[2]; \ cr = dst->data[2]; \
\ \
wrap = width; \ wrap = dst->linesize[0]; \
wrap3 = width * BPP; \ wrap3 = src->linesize[0]; \
p = src->data[0]; \ p = src->data[0]; \
for(y=0;y<height;y+=2) { \ for(y=0;y<height;y+=2) { \
for(x=0;x<width;x+=2) { \ for(x=0;x<width;x+=2) { \
...@@ -620,8 +620,10 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \ ...@@ -620,8 +620,10 @@ static void rgb_name ## _to_yuv420p(AVPicture *dst, AVPicture *src, \
p += -wrap3 + 2 * BPP; \ p += -wrap3 + 2 * BPP; \
lum += -wrap + 2; \ lum += -wrap + 2; \
} \ } \
p += wrap3; \ p += wrap3 + (wrap3 - width * BPP); \
lum += wrap; \ lum += wrap + (wrap - width); \
cb += dst->linesize[1] - width / 2; \
cr += dst->linesize[2] - width / 2; \
} \ } \
} \ } \
\ \
......
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