diff options
Diffstat (limited to 'patches/gst-plugins-base-0.10.35/add-rgb666-support-to-videotestsrc.patch')
-rw-r--r-- | patches/gst-plugins-base-0.10.35/add-rgb666-support-to-videotestsrc.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/patches/gst-plugins-base-0.10.35/add-rgb666-support-to-videotestsrc.patch b/patches/gst-plugins-base-0.10.35/add-rgb666-support-to-videotestsrc.patch new file mode 100644 index 000000000..74fd685c3 --- /dev/null +++ b/patches/gst-plugins-base-0.10.35/add-rgb666-support-to-videotestsrc.patch @@ -0,0 +1,82 @@ +From b03b40150cb7755d3bcdb1a42883a5543779e1dc Mon Sep 17 00:00:00 2001 +From: Luotao Fu <l.fu@pengutronix.de> +Date: Thu, 11 Dec 2008 15:17:36 +0100 +Subject: [PATCH] add rgb666 support + + This one adds RGB666 support to videotestsrc. + +Signed-off-by: Luotao Fu <l.fu@pengutronix.de> +--- + gst/videotestsrc/videotestsrc.c | 28 ++++++++++++++++++++++++++++ + 1 files changed, 28 insertions(+), 0 deletions(-) + +diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c +index b9f29fb..e6fb9e5 100644 +--- gst/videotestsrc/videotestsrc.c ++++ gst/videotestsrc/videotestsrc.c +@@ -329,6 +329,7 @@ static void paint_setup_xRGB8888 (paintinfo * p, unsigned char *dest); + static void paint_setup_xBGR8888 (paintinfo * p, unsigned char *dest); + static void paint_setup_RGBx8888 (paintinfo * p, unsigned char *dest); + static void paint_setup_BGRx8888 (paintinfo * p, unsigned char *dest); ++static void paint_setup_RGB666 (paintinfo * p, unsigned char *dest); + static void paint_setup_RGB888 (paintinfo * p, unsigned char *dest); + static void paint_setup_BGR888 (paintinfo * p, unsigned char *dest); + static void paint_setup_RGB565 (paintinfo * p, unsigned char *dest); +@@ -351,6 +352,7 @@ static void paint_hline_IMC1 (paintinfo * p, int x, int y, int w); + static void paint_hline_YUV9 (paintinfo * p, int x, int y, int w); + static void paint_hline_str4 (paintinfo * p, int x, int y, int w); + static void paint_hline_str3 (paintinfo * p, int x, int y, int w); ++static void paint_hline_RGB666 (paintinfo * p, int x, int y, int w); + static void paint_hline_RGB565 (paintinfo * p, int x, int y, int w); + static void paint_hline_xRGB1555 (paintinfo * p, int x, int y, int w); + +@@ -432,6 +434,8 @@ struct fourcc_list_struct fourcc_list[] = { + 0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff}, + {VTS_RGB, "RGB ", "BGRA8888", 32, paint_setup_BGRA8888, paint_hline_str4, 32, + 0x0000ff00, 0x00ff0000, 0xff000000, 0x000000ff}, ++ {VTS_RGB, "RGB ", "RGB666", 32, paint_setup_RGB666, paint_hline_RGB666, 18, ++ 0x0003f000, 0x00000fc0, 0x0000003f}, + {VTS_RGB, "RGB ", "RGB888", 24, paint_setup_RGB888, paint_hline_str3, 24, + 0x00ff0000, 0x0000ff00, 0x000000ff}, + {VTS_RGB, "RGB ", "BGR888", 24, paint_setup_BGR888, paint_hline_str3, 24, +@@ -1700,6 +1704,16 @@ paint_setup_BGRx8888 (paintinfo * p, unsigned char *dest) + } + + static void ++paint_setup_RGB666 (paintinfo * p, unsigned char *dest) ++{ ++ p->yp = dest + 0; ++ p->up = dest + 1; ++ p->vp = dest + 2; ++ p->ystride = p->width * 4; ++ p->endptr = p->dest + p->ystride * p->height; ++} ++ ++static void + paint_setup_RGB888 (paintinfo * p, unsigned char *dest) + { + p->yp = dest + 0; +@@ -1735,6 +1749,20 @@ paint_hline_str4 (paintinfo * p, int x, int y, int w) + } + + static void ++paint_hline_RGB666 (paintinfo * p, int x, int y, int w) ++{ ++ int offset = y * p->ystride; ++ guint8 a, b, c; ++ a = (p->color->R & 0xC0) >> 6; ++ b = ((p->color->R & 0xf0) << 2) | ((p->color->G & 0xf0) >> 4); ++ c = ((p->color->G & 0x0c) << 4) | (p->color->B >> 2); ++ ++ oil_splat_u8 (p->yp + offset + x * 4, 4, &c, w); ++ oil_splat_u8 (p->up + offset + x * 4, 4, &b, w); ++ oil_splat_u8 (p->vp + offset + x * 4, 4, &a, w); ++} ++ ++static void + paint_hline_str3 (paintinfo * p, int x, int y, int w) + { + int offset = y * p->ystride; +-- +1.5.6.5 + |