diff options
Diffstat (limited to 'gst/alpha')
-rw-r--r-- | gst/alpha/Makefile.am | 2 | ||||
-rw-r--r-- | gst/alpha/gstalphacolor.c | 48 | ||||
-rw-r--r-- | gst/alpha/gstalphacolor.h | 57 |
3 files changed, 75 insertions, 32 deletions
diff --git a/gst/alpha/Makefile.am b/gst/alpha/Makefile.am index daf0050b..67c20b74 100644 --- a/gst/alpha/Makefile.am +++ b/gst/alpha/Makefile.am @@ -11,3 +11,5 @@ libgstalphacolor_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \ $(GST_BASE_CFLAGS) $(GST_CFLAGS) libgstalphacolor_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) libgstalphacolor_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) + +noinst_HEADERS = gstalphacolor.h diff --git a/gst/alpha/gstalphacolor.c b/gst/alpha/gstalphacolor.c index 15c26c12..118de628 100644 --- a/gst/alpha/gstalphacolor.c +++ b/gst/alpha/gstalphacolor.c @@ -17,11 +17,24 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:element-alphacolor + * + * <refsect2> + * <para> + * The alphacolor element does memory-efficient (in-place) colourspace + * conversion from RGBA to AYUV, preserving the alpha channel. + * </para> + * </refsect2> + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif + +#include "gstalphacolor.h" + #include <gst/gst.h> -#include <gst/base/gstbasetransform.h> #include <gst/video/video.h> #include <string.h> @@ -29,40 +42,11 @@ GST_DEBUG_CATEGORY_STATIC (alpha_color_debug); #define GST_CAT_DEFAULT alpha_color_debug -#define GST_TYPE_ALPHA_COLOR \ - (gst_alpha_color_get_type()) -#define GST_ALPHA_COLOR(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ALPHA_COLOR,GstAlphaColor)) -#define GST_ALPHA_COLOR_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ALPHA_COLOR,GstAlphaColorClass)) -#define GST_IS_ALPHA_COLOR(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ALPHA_COLOR)) -#define GST_IS_ALPHA_COLOR_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ALPHA_COLOR)) - -typedef struct _GstAlphaColor GstAlphaColor; -typedef struct _GstAlphaColorClass GstAlphaColorClass; - -struct _GstAlphaColor -{ - GstBaseTransform element; - - /* caps */ - gint in_width, in_height; - gboolean in_rgba; - gint out_width, out_height; -}; - -struct _GstAlphaColorClass -{ - GstBaseTransformClass parent_class; -}; - /* elementfactory information */ static const GstElementDetails gst_alpha_color_details = GST_ELEMENT_DETAILS ("Alpha color filter", "Filter/Effect/Video", - "RGB->YUV colorspace conversion preserving the alpha channels", + "RGBA to AYUV colorspace conversion preserving the alpha channel", "Wim Taymans <wim@fluendo.com>"); static GstStaticPadTemplate gst_alpha_color_sink_template = @@ -285,5 +269,5 @@ plugin_init (GstPlugin * plugin) GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, "alphacolor", - "RGB->YUV colorspace conversion preserving the alpha channels", + "RGBA to AYUV colorspace conversion preserving the alpha channel", plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) diff --git a/gst/alpha/gstalphacolor.h b/gst/alpha/gstalphacolor.h new file mode 100644 index 00000000..306cd2c6 --- /dev/null +++ b/gst/alpha/gstalphacolor.h @@ -0,0 +1,57 @@ +/* GStreamer alphacolor element + * Copyright (C) 2005 Wim Taymans <wim@fluendo.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _GST_ALPHA_COLOR_H_ +#define _GST_ALPHA_COLOR_H_ + +#include <gst/base/gstbasetransform.h> + +#define GST_TYPE_ALPHA_COLOR \ + (gst_alpha_color_get_type()) +#define GST_ALPHA_COLOR(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ALPHA_COLOR,GstAlphaColor)) +#define GST_ALPHA_COLOR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ALPHA_COLOR,GstAlphaColorClass)) +#define GST_IS_ALPHA_COLOR(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ALPHA_COLOR)) +#define GST_IS_ALPHA_COLOR_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ALPHA_COLOR)) + +typedef struct _GstAlphaColor GstAlphaColor; +typedef struct _GstAlphaColorClass GstAlphaColorClass; + +struct _GstAlphaColor +{ + GstBaseTransform element; + + /*< private >*/ + /* caps */ + gint in_width, in_height; + gboolean in_rgba; + gint out_width, out_height; +}; + +struct _GstAlphaColorClass +{ + GstBaseTransformClass parent_class; +}; + +GType gst_alpha_color_get_type (void); + +#endif /* _GST_ALPHA_COLOR_H_ */ |