v4l2: Fix type compatibility issue with glibc 2.30
[platform/upstream/gst-plugins-good.git] / sys / v4l2 / gstv4l2colorbalance.h
index 487b348..90ba7ab 100644 (file)
@@ -1,5 +1,7 @@
-/* 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
 
@@ -32,10 +35,10 @@ 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) \
@@ -44,15 +47,65 @@ G_BEGIN_DECLS
 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__ */