summaryrefslogtreecommitdiffstats
path: root/gst/colorspace/yuv2rgb.h
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2004-01-15 08:58:22 +0000
committerDavid Schleef <ds@schleef.org>2004-01-15 08:58:22 +0000
commit4910efb9b7baced502f3f78cf54ba580603d4415 (patch)
tree7c0ca8f3bca493926990f9f12b97970b3294051d /gst/colorspace/yuv2rgb.h
parent4506b4c38b4a74556e1134b2989334a118dcb3ca (diff)
downloadgst-plugins-bad-4910efb9b7baced502f3f78cf54ba580603d4415.tar.gz
gst-plugins-bad-4910efb9b7baced502f3f78cf54ba580603d4415.tar.bz2
gst-plugins-bad-4910efb9b7baced502f3f78cf54ba580603d4415.zip
Duplicate the ext/hermes colorspace plugin, and remove Hermes code and GPL code. Fix for new caps negotiation. Rewr...
Original commit message from CVS: * configure.ac: * gst/colorspace/Makefile.am: * gst/colorspace/gstcolorspace.c: * gst/colorspace/gstcolorspace.h: * gst/colorspace/yuv2rgb.c: * gst/colorspace/yuv2rgb.h: Duplicate the ext/hermes colorspace plugin, and remove Hermes code and GPL code. Fix for new caps negotiation. Rewrite much of the format handling code, and some of the conversion code. Basically, rewrote almost everything. This element handles I420, YV12 to RGB conversions. * ext/hermes/Makefile.am: * ext/hermes/gsthermescolorspace.c: Rename colorspace to hermescolorspace. Fix negotiation issues. Remove non-Hermes related code. This element handles lots of RGB to RGB conversions, but no YUV. * ext/hermes/gstcolorspace.c: * ext/hermes/gstcolorspace.h: * ext/hermes/rgb2yuv.c: * ext/hermes/yuv2rgb.c: * ext/hermes/yuv2rgb.h: * ext/hermes/yuv2rgb_mmx16.s: * ext/hermes/yuv2yuv.c: * ext/hermes/yuv2yuv.h: Remove old code.
Diffstat (limited to 'gst/colorspace/yuv2rgb.h')
-rw-r--r--gst/colorspace/yuv2rgb.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/gst/colorspace/yuv2rgb.h b/gst/colorspace/yuv2rgb.h
new file mode 100644
index 00000000..be173bca
--- /dev/null
+++ b/gst/colorspace/yuv2rgb.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 1995 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+#ifndef __YUV2RGB_H__
+#define __YUV2RGB_H__
+
+#include <gst/gst.h>
+#include <gstcolorspace.h>
+
+G_BEGIN_DECLS
+
+#if 0
+typedef struct _GstColorspaceYUVTables GstColorspaceYUVTables;
+
+struct _GstColorspaceYUVTables {
+ int gammaCorrectFlag;
+ double gammaCorrect;
+ int chromaCorrectFlag;
+ double chromaCorrect;
+
+ int *L_tab, *Cr_r_tab, *Cr_g_tab, *Cb_g_tab, *Cb_b_tab;
+
+ /*
+ * We define tables that convert a color value between -256 and 512
+ * into the R, G and B parts of the pixel. The normal range is 0-255.
+ **/
+
+ long *r_2_pix;
+ long *g_2_pix;
+ long *b_2_pix;
+};
+
+
+typedef struct _GstColorspaceConverter GstColorspaceConverter;
+typedef void (*GstColorspaceConvertFunction) (GstColorspaceConverter *space, guchar *src, guchar *dest);
+
+struct _GstColorspaceConverter {
+ guint width;
+ guint height;
+ guint insize;
+ guint outsize;
+ /* private */
+ GstColorspaceYUVTables *color_tables;
+ GstColorspaceConvertFunction convert;
+};
+#endif
+
+void gst_colorspace_table_init (GstColorspace *space);
+
+void gst_colorspace_I420_to_rgb32(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+void gst_colorspace_I420_to_rgb24(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+void gst_colorspace_I420_to_rgb16(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+void gst_colorspace_YV12_to_rgb32(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+void gst_colorspace_YV12_to_rgb24(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+void gst_colorspace_YV12_to_rgb16(GstColorspace *space,
+ unsigned char *src, unsigned char *dest);
+
+#if 0
+GstColorspaceYUVTables * gst_colorspace_init_yuv(long depth,
+ long red_mask, long green_mask, long blue_mask);
+#endif
+
+
+#if 0
+GstColorspaceConverter* gst_colorspace_yuv2rgb_get_converter (const GstCaps *from, const GstCaps *to);
+#define gst_colorspace_convert(converter, src, dest) \
+ (converter)->convert((converter), (src), (dest))
+void gst_colorspace_converter_destroy (GstColorspaceConverter *space);
+#endif
+
+G_END_DECLS
+
+#endif
+