Merge branch 'upstream/1.16' into tizen_gst_1.16.2
[platform/upstream/gst-plugins-good.git] / ext / pulse / pulseutil.c
index aa90ce9..6f00f75 100644 (file)
@@ -358,6 +358,11 @@ make_proplist_item (GQuark field_id, const GValue * value, gpointer user_data)
     case G_TYPE_STRING:
       pa_proplist_sets (p, prop_id, g_value_get_string (value));
       break;
+#ifdef __TIZEN__
+    case G_TYPE_INT:
+      pa_proplist_setf (p, prop_id, "%d", g_value_get_int (value));
+      break;
+#endif
     default:
       GST_WARNING ("unmapped property type %s", G_VALUE_TYPE_NAME (value));
       break;
@@ -508,6 +513,56 @@ out:
   return ret;
 }
 
+#ifdef __TIZEN__
+#include <gio/gio.h>
+#define PA_BUS_NAME                                    "org.pulseaudio.Server"
+#define PA_STREAM_MANAGER_OBJECT_PATH                  "/org/pulseaudio/StreamManager"
+#define PA_STREAM_MANAGER_INTERFACE                    "org.pulseaudio.StreamManager"
+#define PA_STREAM_MANAGER_METHOD_NAME_SET_VOLUME_RATIO          "SetVolumeRatio"
+void
+gst_pulse_set_volume_ratio (uint32_t stream_index, const char *direction, double ratio)
+{
+  GDBusConnection *conn = NULL;
+  GError *err = NULL;
+  GVariant *result = NULL;
+  const gchar *dbus_ret = NULL;
+
+  conn = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &err);
+  if (!conn || err) {
+      GST_ERROR ("g_bus_get_sync() error (%s)", err ? err->message : NULL);
+    if (err)
+      g_error_free (err);
+    return;
+  }
+
+  result = g_dbus_connection_call_sync (conn,
+        PA_BUS_NAME,
+        PA_STREAM_MANAGER_OBJECT_PATH,
+        PA_STREAM_MANAGER_INTERFACE,
+        PA_STREAM_MANAGER_METHOD_NAME_SET_VOLUME_RATIO,
+        g_variant_new("(sud)", direction, stream_index, ratio),
+        G_VARIANT_TYPE("(s)"),
+        G_DBUS_CALL_FLAGS_NONE,
+        1000,
+        NULL,
+        &err);
+  if (!result || err) {
+    GST_ERROR ("g_dbus_connection_call_sync() for SET_VOLUME_RATIO error (%s)", err ? err->message : NULL);
+    if (err)
+      g_error_free (err);
+    goto finish;
+  }
+  g_variant_get (result, "(&s)", &dbus_ret);
+  GST_DEBUG ("SET_VOLUME_RATIO returns value(%s) for stream index(%u), ratio(%f)", dbus_ret, stream_index, ratio);
+
+finish:
+  g_variant_unref(result);
+  g_object_unref(conn);
+
+  return;
+}
+#endif
+
 GstCaps *
 gst_pulse_fix_pcm_caps (GstCaps * incaps)
 {