diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c index 2969912b04..2ab1ecdfb7 100644 --- a/gst/videotestsrc/videotestsrc.c +++ b/gst/videotestsrc/videotestsrc.c @@ -1817,9 +1817,9 @@ paint_setup_Y41B (paintinfo * p, unsigned char *dest) p->yp = dest; p->ystride = GST_ROUND_UP_4 (p->width); p->up = p->yp + p->ystride * p->height; - p->ustride = GST_ROUND_UP_8 (p->width) / 4; + p->ustride = GST_ROUND_UP_16 (p->width) / 4; p->vp = p->up + p->ustride * p->height; - p->vstride = GST_ROUND_UP_8 (p->width) / 4; + p->vstride = GST_ROUND_UP_16 (p->width) / 4; p->endptr = p->vp + p->vstride * p->height; } @@ -1827,13 +1827,15 @@ static void paint_hline_Y41B (paintinfo * p, int x, int y, int w) { int x1 = x / 4; - int x2 = (x + w) / 4; + int w1 = (x + w) / 4 - x1; int offset = y * p->ystride; int offset1 = y * p->ustride; + 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, x2 - x1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, x2 - x1); + oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1); + oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, w1); } static void