Merge branch 'master' into 0.11
[platform/upstream/gst-plugins-base.git] / gst-libs / gst / audio / mixer.c
similarity index 86%
rename from gst-libs/gst/interfaces/mixer.c
rename to gst-libs/gst/audio/mixer.c
index 5b8aeed..4c52b25 100644 (file)
@@ -24,7 +24,7 @@
 #endif
 
 #include "mixer.h"
-#include "interfaces-marshal.h"
+#include "audio-marshal.h"
 
 #define GST_MIXER_MESSAGE_NAME "gst-mixer-message"
 
  * macro (in C) and the mixer API can be used.
  */
 
-#ifndef GST_DISABLE_DEPRECATED
-enum
-{
-  SIGNAL_MUTE_TOGGLED,
-  SIGNAL_RECORD_TOGGLED,
-  SIGNAL_VOLUME_CHANGED,
-  SIGNAL_OPTION_CHANGED,
-  LAST_SIGNAL
-};
-
-static guint gst_mixer_signals[LAST_SIGNAL] = { 0 };
-
-#endif
+/* FIXME 0.11: check if we need to add API for sometimes-supportedness
+ * (aka making up for GstImplementsInterface removal) */
 
-static void gst_mixer_class_init (GstMixerClass * klass);
+static void gst_mixer_class_init (GstMixerInterface * iface);
 
 GType
 gst_mixer_get_type (void)
@@ -73,7 +62,7 @@ gst_mixer_get_type (void)
 
   if (!gst_mixer_type) {
     static const GTypeInfo gst_mixer_info = {
-      sizeof (GstMixerClass),
+      sizeof (GstMixerInterface),
       (GBaseInitFunc) gst_mixer_class_init,
       NULL,
       NULL,
@@ -86,66 +75,23 @@ gst_mixer_get_type (void)
 
     gst_mixer_type = g_type_register_static (G_TYPE_INTERFACE,
         "GstMixer", &gst_mixer_info, 0);
-    g_type_interface_add_prerequisite (gst_mixer_type,
-        GST_TYPE_IMPLEMENTS_INTERFACE);
   }
 
   return gst_mixer_type;
 }
 
 static void
-gst_mixer_class_init (GstMixerClass * klass)
+gst_mixer_class_init (GstMixerInterface * iface)
 {
-#ifndef GST_DISABLE_DEPRECATED
-  static gboolean initialized = FALSE;
-
-  /* signals (deprecated) */
-  if (!initialized) {
-    gst_mixer_signals[SIGNAL_RECORD_TOGGLED] =
-        g_signal_new ("record-toggled",
-        GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
-        G_STRUCT_OFFSET (GstMixerClass, record_toggled),
-        NULL, NULL,
-        gst_interfaces_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2,
-        GST_TYPE_MIXER_TRACK, G_TYPE_BOOLEAN);
-    gst_mixer_signals[SIGNAL_MUTE_TOGGLED] =
-        g_signal_new ("mute-toggled",
-        GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
-        G_STRUCT_OFFSET (GstMixerClass, mute_toggled),
-        NULL, NULL,
-        gst_interfaces_marshal_VOID__OBJECT_BOOLEAN, G_TYPE_NONE, 2,
-        GST_TYPE_MIXER_TRACK, G_TYPE_BOOLEAN);
-    gst_mixer_signals[SIGNAL_VOLUME_CHANGED] =
-        g_signal_new ("volume-changed",
-        GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
-        G_STRUCT_OFFSET (GstMixerClass, volume_changed),
-        NULL, NULL,
-        gst_interfaces_marshal_VOID__OBJECT_POINTER, G_TYPE_NONE, 2,
-        GST_TYPE_MIXER_TRACK, G_TYPE_POINTER);
-    gst_mixer_signals[SIGNAL_OPTION_CHANGED] =
-        g_signal_new ("option-changed",
-        GST_TYPE_MIXER, G_SIGNAL_RUN_LAST,
-        G_STRUCT_OFFSET (GstMixerClass, option_changed),
-        NULL, NULL,
-        gst_interfaces_marshal_VOID__OBJECT_STRING, G_TYPE_NONE, 2,
-        GST_TYPE_MIXER_OPTIONS, G_TYPE_STRING);
-
-    initialized = TRUE;
-  }
-#endif
-
-#ifndef GST_REMOVE_DEPRECATED
-  klass->mixer_type = GST_MIXER_SOFTWARE;
-#endif
-
   /* default virtual functions */
-  klass->list_tracks = NULL;
-  klass->set_volume = NULL;
-  klass->get_volume = NULL;
-  klass->set_mute = NULL;
-  klass->set_record = NULL;
-  klass->set_option = NULL;
-  klass->get_option = NULL;
+  iface->get_mixer_type = NULL;
+  iface->list_tracks = NULL;
+  iface->set_volume = NULL;
+  iface->get_volume = NULL;
+  iface->set_mute = NULL;
+  iface->set_record = NULL;
+  iface->set_option = NULL;
+  iface->get_option = NULL;
 }
 
 /**
@@ -165,14 +111,14 @@ gst_mixer_class_init (GstMixerClass * klass)
 const GList *
 gst_mixer_list_tracks (GstMixer * mixer)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_val_if_fail (mixer != NULL, NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->list_tracks) {
-    return klass->list_tracks (mixer);
+  if (iface->list_tracks) {
+    return iface->list_tracks (mixer);
   }
 
   return NULL;
@@ -196,16 +142,16 @@ gst_mixer_list_tracks (GstMixer * mixer)
 void
 gst_mixer_set_volume (GstMixer * mixer, GstMixerTrack * track, gint * volumes)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_if_fail (mixer != NULL);
   g_return_if_fail (track != NULL);
   g_return_if_fail (volumes != NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->set_volume) {
-    klass->set_volume (mixer, track, volumes);
+  if (iface->set_volume) {
+    iface->set_volume (mixer, track, volumes);
   }
 }
 
@@ -223,16 +169,16 @@ gst_mixer_set_volume (GstMixer * mixer, GstMixerTrack * track, gint * volumes)
 void
 gst_mixer_get_volume (GstMixer * mixer, GstMixerTrack * track, gint * volumes)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_if_fail (mixer != NULL);
   g_return_if_fail (track != NULL);
   g_return_if_fail (volumes != NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->get_volume) {
-    klass->get_volume (mixer, track, volumes);
+  if (iface->get_volume) {
+    iface->get_volume (mixer, track, volumes);
   } else {
     gint i;
 
@@ -256,15 +202,15 @@ gst_mixer_get_volume (GstMixer * mixer, GstMixerTrack * track, gint * volumes)
 void
 gst_mixer_set_mute (GstMixer * mixer, GstMixerTrack * track, gboolean mute)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_if_fail (mixer != NULL);
   g_return_if_fail (track != NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->set_mute) {
-    klass->set_mute (mixer, track, mute);
+  if (iface->set_mute) {
+    iface->set_mute (mixer, track, mute);
   }
 }
 
@@ -284,10 +230,10 @@ gst_mixer_set_mute (GstMixer * mixer, GstMixerTrack * track, gboolean mute)
 void
 gst_mixer_set_record (GstMixer * mixer, GstMixerTrack * track, gboolean record)
 {
-  GstMixerClass *klass = GST_MIXER_GET_CLASS (mixer);
+  GstMixerInterface *iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->set_record) {
-    klass->set_record (mixer, track, record);
+  if (iface->set_record) {
+    iface->set_record (mixer, track, record);
   }
 }
 
@@ -303,15 +249,15 @@ gst_mixer_set_record (GstMixer * mixer, GstMixerTrack * track, gboolean record)
 void
 gst_mixer_set_option (GstMixer * mixer, GstMixerOptions * opts, gchar * value)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_if_fail (mixer != NULL);
   g_return_if_fail (opts != NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->set_option) {
-    klass->set_option (mixer, opts, value);
+  if (iface->set_option) {
+    iface->set_option (mixer, opts, value);
   }
 }
 
@@ -328,15 +274,15 @@ gst_mixer_set_option (GstMixer * mixer, GstMixerOptions * opts, gchar * value)
 const gchar *
 gst_mixer_get_option (GstMixer * mixer, GstMixerOptions * opts)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_val_if_fail (mixer != NULL, NULL);
   g_return_val_if_fail (opts != NULL, NULL);
 
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->get_option) {
-    return klass->get_option (mixer, opts);
+  if (iface->get_option) {
+    return iface->get_option (mixer, opts);
   }
 
   return NULL;
@@ -355,16 +301,10 @@ gst_mixer_get_option (GstMixer * mixer, GstMixerOptions * opts)
 GstMixerType
 gst_mixer_get_mixer_type (GstMixer * mixer)
 {
-  GstMixerClass *klass = GST_MIXER_GET_CLASS (mixer);
+  GstMixerInterface *iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->get_mixer_type)
-    return klass->get_mixer_type (mixer);
-
-#ifndef GST_REMOVE_DEPRECATED
-  return klass->mixer_type;
-#else
-  g_return_if_reached (GST_MIXER_TYPE_SOFTWARE);
-#endif
+  g_return_val_if_fail (iface->get_mixer_type != NULL, GST_MIXER_SOFTWARE);
+  return iface->get_mixer_type (mixer);
 }
 
 /**
@@ -378,13 +318,13 @@ gst_mixer_get_mixer_type (GstMixer * mixer)
 GstMixerFlags
 gst_mixer_get_mixer_flags (GstMixer * mixer)
 {
-  GstMixerClass *klass;
+  GstMixerInterface *iface;
 
   g_return_val_if_fail (mixer != NULL, FALSE);
-  klass = GST_MIXER_GET_CLASS (mixer);
+  iface = GST_MIXER_GET_INTERFACE (mixer);
 
-  if (klass->get_mixer_flags) {
-    return klass->get_mixer_flags (mixer);
+  if (iface->get_mixer_flags) {
+    return iface->get_mixer_flags (mixer);
   }
   return GST_MIXER_FLAG_NONE;
 }