videotestsrc: Fix crashes with even widths

The fix for green lines introduced by commit
35fdfcc625 caused invalid memory accesses
for even widths. This patch fixes it.
This commit is contained in:
Benjamin Otte 2009-09-11 22:09:06 +02:00
parent 91c3a23963
commit 26c068e9e5

View file

@ -1475,7 +1475,7 @@ paint_hline_I420 (paintinfo * p, int x, int y, int w)
int offset = y * p->ystride;
int offset1 = (y / 2) * p->ustride;
if (x + w == p->width)
if (x + w == p->width && p->width % 2 != 0)
w1++;
oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w);
oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1);
@ -1693,7 +1693,7 @@ paint_hline_YUY2 (paintinfo * p, int x, int y, int w)
int w1 = (x + w) / 2 - x1;
int offset = y * p->ystride;
if (x + w == p->width)
if (x + w == p->width && p->width % 2 != 0)
w1++;
oil_splat_u8 (p->yp + offset + x * 2, 2, &p->yuv_color->Y, w);
oil_splat_u8 (p->up + offset + x1 * 4, 4, &p->yuv_color->U, w1);
@ -1767,7 +1767,7 @@ paint_hline_Y42B (paintinfo * p, int x, int y, int w)
int offset = y * p->ystride;
int offset1 = y * p->ustride;
if (x + w == p->width)
if (x + w == p->width && p->width % 2 != 0)
w1++;
oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w);
oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1);
@ -1895,7 +1895,7 @@ paint_hline_YUV9 (paintinfo * p, int x, int y, int w)
int offset = y * p->ystride;
int offset1 = (y / 4) * p->ustride;
if (x + w == p->width)
if (x + w == p->width && p->width % 4 != 0)
w1++;
oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w);
oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1);