summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMike Ruprecht <mike.ruprecht@collabora.co.uk>2011-08-01 08:40:58 -0500
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2011-11-14 11:40:24 +0100
commit3ccb5651b6ec0924eee4b5244ee75f07d466ae38 (patch)
tree28a233ee1bf0dde154e209efacab13e773247ba8 /examples
parent53b79e8f6360fdbc3cd52279ae00443696e41ad0 (diff)
downloadtelepathy-farstream-3ccb5651b6ec0924eee4b5244ee75f07d466ae38.tar.gz
Respect AudioControl interface's audio-input property in the example
Diffstat (limited to 'examples')
-rw-r--r--examples/call-handler.c48
1 files changed, 47 insertions, 1 deletions
diff --git a/examples/call-handler.c b/examples/call-handler.c
index 7fbabed..51b8d90 100644
--- a/examples/call-handler.c
+++ b/examples/call-handler.c
@@ -31,6 +31,9 @@ typedef struct {
TfChannel *channel;
GList *notifiers;
+ guint input_volume;
+ guint output_volume;
+
GstElement *video_input;
GstElement *video_capsfilter;
@@ -189,16 +192,59 @@ on_video_resolution_changed (TfContent *content,
update_video_parameters (context, TRUE);
}
+static void
+on_audio_input_volume_changed (TfContent *content,
+ GParamSpec *spec,
+ ChannelContext *context)
+{
+ GstElement *volume;
+ guint input_volume;
+
+ g_object_get (content, "input-volume", &input_volume, NULL);
+
+ volume = gst_bin_get_by_name (GST_BIN (context->pipeline), "input_volume");
+ g_object_set (volume, "volume", (double)input_volume / 65536.0, NULL);
+ gst_object_unref (volume);
+}
+
+static void
+on_audio_output_volume_changed (TfContent *content,
+ GParamSpec *spec,
+ ChannelContext *context)
+{
+}
+
static GstElement *
setup_audio_source (ChannelContext *context, TfContent *content)
{
GstElement *result;
+ GstElement *volume;
+ guint input_volume = 0;
+ guint output_volume = 0;
result = gst_parse_bin_from_description (
"audiotestsrc is-live=1 ! audio/x-raw-int,rate=8000 ! queue"
- " ! audioconvert ! audioresample ! audioconvert ",
+ " ! audioconvert ! audioresample"
+ " ! volume name=input_volume ! audioconvert ",
TRUE, NULL);
+ g_object_get (content,
+ "input-volume", &input_volume,
+ "output-volume", &output_volume,
+ NULL);
+
+ volume = gst_bin_get_by_name (GST_BIN (result), "input_volume");
+ g_object_set (volume, "volume", (double)input_volume / 65536.0, NULL);
+ gst_object_unref (volume);
+
+ g_signal_connect (content, "notify::input-volume",
+ G_CALLBACK (on_audio_input_volume_changed),
+ context);
+
+ g_signal_connect (content, "notify::output-volume",
+ G_CALLBACK (on_audio_output_volume_changed),
+ context);
+
return result;
}