From 1e20129686dd0fa3e5241f430658621cfeade532 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 11 Mar 2001 21:12:28 +0000 Subject: [PATCH] Added an rgb24 to rgb32 converter (untested) Original commit message from CVS: Added an rgb24 to rgb32 converter (untested) --- libs/colorspace/rgb2rgb.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libs/colorspace/rgb2rgb.c b/libs/colorspace/rgb2rgb.c index d5e788f090..27bf9a3ab0 100644 --- a/libs/colorspace/rgb2rgb.c +++ b/libs/colorspace/rgb2rgb.c @@ -24,6 +24,7 @@ static void gst_colorspace_rgb_to_rgb_identity(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); static void gst_colorspace_rgb24_to_bgr24(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); +static void gst_colorspace_rgb24_to_rgb32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); static void gst_colorspace_rgb32_to_bgr32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); static void gst_colorspace_rgb555_to_rgb565(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); static void gst_colorspace_bgr565_to_rgb32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest); @@ -39,6 +40,9 @@ GstColorSpaceConvertFunction gst_colorspace_rgb2rgb_get_converter(GstColorSpaceC case GST_COLORSPACE_BGR24: space->outsize = space->width*space->height*3; return gst_colorspace_rgb24_to_bgr24; + case GST_COLORSPACE_RGB32: + space->outsize = space->width*space->height*4; + return gst_colorspace_rgb24_to_rgb32; default: break; } @@ -145,6 +149,22 @@ static void gst_colorspace_rgb24_to_bgr24(GstColorSpaceConverter *space, unsigne GST_DEBUG (0,"gst_colorspace_rgb24_to_bgr24 end\n"); } +static void gst_colorspace_rgb24_to_rgb32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest) +{ + gint size; + guint32 *destptr = (guint32 *)dest; + + GST_DEBUG (0,"gst_colorspace_rgb24_to_rgb32 %p %p %d\n", src, dest, space->outsize); + + size = space->outsize/4; + + while (size--) { + *destptr++ = (src[0]<<16)|(src[1]<<8)|src[2]; + src+=3; + } + GST_DEBUG (0,"gst_colorspace_rgb24_to_rgb32 end\n"); +} + static void gst_colorspace_rgb32_to_bgr32(GstColorSpaceConverter *space, unsigned char *src, unsigned char *dest) { gint size;