-/* G-Streamer generic V4L2 element - Color Balance interface implementation
+/* GStreamer
+ *
* Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ * 2006 Edgard Lima <edgard.lima@gmail.com>
*
* gstv4l2colorbalance.h: color balance interface implementation for V4L2
*
*
* 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.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef __GST_V4L2_COLOR_BALANCE_H__
#define __GST_V4L2_COLOR_BALANCE_H__
#include <gst/gst.h>
-#include <gst/interfaces/colorbalance.h>
-#include "v4l2_calls.h"
+#include <gst/video/colorbalance.h>
+
+#include "gstv4l2object.h"
G_BEGIN_DECLS
(gst_v4l2_color_balance_channel_get_type ())
#define GST_V4L2_COLOR_BALANCE_CHANNEL(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, \
- GstV4l2ColorBalanceChannel))
+ GstV4l2ColorBalanceChannel))
#define GST_V4L2_COLOR_BALANCE_CHANNEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, \
- GstV4l2ColorBalanceChannelClass))
+ GstV4l2ColorBalanceChannelClass))
#define GST_IS_V4L2_COLOR_BALANCE_CHANNEL(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL))
#define GST_IS_V4L2_COLOR_BALANCE_CHANNEL_CLASS(klass) \
typedef struct _GstV4l2ColorBalanceChannel {
GstColorBalanceChannel parent;
- guint32 index;
+ guint32 id;
} GstV4l2ColorBalanceChannel;
typedef struct _GstV4l2ColorBalanceChannelClass {
GstColorBalanceChannelClass parent;
} GstV4l2ColorBalanceChannelClass;
-GType gst_v4l2_color_balance_channel_get_type (void);
+GType gst_v4l2_color_balance_channel_get_type (void);
+
+const GList * gst_v4l2_color_balance_list_channels (GstV4l2Object * v4l2object);
+
+void gst_v4l2_color_balance_set_value (GstV4l2Object * v4l2object,
+ GstColorBalanceChannel * channel,
+ gint value);
+
+gint gst_v4l2_color_balance_get_value (GstV4l2Object * v4l2object,
+ GstColorBalanceChannel * channel);
-void gst_v4l2_color_balance_interface_init (GstColorBalanceClass *klass);
+#define GST_IMPLEMENT_V4L2_COLOR_BALANCE_METHODS(Type, interface_as_function) \
+ \
+static const GList * \
+interface_as_function ## _color_balance_list_channels (GstColorBalance * balance) \
+{ \
+ Type *this = (Type*) balance; \
+ return gst_v4l2_color_balance_list_channels(this->v4l2object); \
+} \
+ \
+static void \
+interface_as_function ## _color_balance_set_value (GstColorBalance * balance, \
+ GstColorBalanceChannel * channel, \
+ gint value) \
+{ \
+ Type *this = (Type*) balance; \
+ gst_v4l2_color_balance_set_value(this->v4l2object, channel, value); \
+} \
+ \
+static gint \
+interface_as_function ## _color_balance_get_value (GstColorBalance * balance, \
+ GstColorBalanceChannel * channel) \
+{ \
+ Type *this = (Type*) balance; \
+ return gst_v4l2_color_balance_get_value(this->v4l2object, channel); \
+} \
+ \
+static GstColorBalanceType \
+interface_as_function ## _color_balance_get_balance_type (GstColorBalance * balance) \
+{ \
+ return GST_COLOR_BALANCE_HARDWARE; \
+} \
+ \
+static void \
+interface_as_function ## _color_balance_interface_init (GstColorBalanceInterface * iface) \
+{ \
+ /* default virtual functions */ \
+ iface->list_channels = interface_as_function ## _color_balance_list_channels; \
+ iface->set_value = interface_as_function ## _color_balance_set_value; \
+ iface->get_value = interface_as_function ## _color_balance_get_value; \
+ iface->get_balance_type = interface_as_function ## _color_balance_get_balance_type; \
+} \
+G_END_DECLS
#endif /* __GST_V4L2_COLOR_BALANCE_H__ */