diff options
author | Benjamin Otte <otte@gnome.org> | 2009-09-10 10:43:37 +0200 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2009-09-10 10:45:06 +0200 |
commit | 7ed2531b2781d74055bda5823a296bda2b2dd439 (patch) | |
tree | 0e75678900b8412ea3cdf0bd6d3fe21de4a31136 /gst/videotestsrc/videotestsrc.c | |
parent | 35fdfcc6258c66ba462a4330a35deffb0f2b501d (diff) |
videotestsrc: Fix YVU9 and YUV9
- Buffer sizes were computed different from ffmpegcolorspace
- Green bar on right size for widths not divisable by 4
Diffstat (limited to 'gst/videotestsrc/videotestsrc.c')
-rw-r--r-- | gst/videotestsrc/videotestsrc.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c index 88b49f2de..81a82777a 100644 --- a/gst/videotestsrc/videotestsrc.c +++ b/gst/videotestsrc/videotestsrc.c @@ -1865,11 +1865,11 @@ paint_setup_YVU9 (paintinfo * p, unsigned char *dest) p->yp = dest; p->ystride = GST_ROUND_UP_4 (p->width); - p->vp = p->yp + p->ystride * GST_ROUND_UP_4 (p->height); + p->vp = p->yp + p->ystride * h; p->vstride = GST_ROUND_UP_4 (p->ystride / 4); - p->up = p->vp + p->vstride * GST_ROUND_UP_4 (h / 4); + p->up = p->vp + p->vstride * h / 4; p->ustride = GST_ROUND_UP_4 (p->ystride / 4); - p->endptr = p->up + p->ustride * GST_ROUND_UP_4 (h / 4); + p->endptr = p->up + p->ustride * h / 4; } static void @@ -1882,22 +1882,24 @@ paint_setup_YUV9 (paintinfo * p, unsigned char *dest) p->ystride = GST_ROUND_UP_4 (p->width); p->up = p->yp + p->ystride * h; p->ustride = GST_ROUND_UP_4 (p->ystride / 4); - p->vp = p->up + p->ustride * GST_ROUND_UP_4 (h / 4); + p->vp = p->up + p->ustride * h / 4; p->vstride = GST_ROUND_UP_4 (p->ystride / 4); - p->endptr = p->vp + p->vstride * GST_ROUND_UP_4 (h / 4); + p->endptr = p->vp + p->vstride * h / 4; } static void paint_hline_YUV9 (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 / 4) * p->ustride; + if (x + w == p->width) + 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 |