From 92e94e644937590a6832f1321b1ce285cae38f86 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Wed, 9 Nov 2011 19:25:17 +0000 Subject: Don't turn on echo cancellation on the sink if it's for raw conferences https://bugzilla.gnome.org/show_bug.cgi?id=663842 --- src/empathy-audio-sink.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/empathy-audio-sink.c') diff --git a/src/empathy-audio-sink.c b/src/empathy-audio-sink.c index 7a8d42bfc..b35edb331 100644 --- a/src/empathy-audio-sink.c +++ b/src/empathy-audio-sink.c @@ -61,6 +61,7 @@ enum { struct _EmpathyGstAudioSinkPrivate { GstElement *sink; + gboolean echo_cancel; }; #define EMPATHY_GST_AUDIO_SINK_GET_PRIVATE(o) \ @@ -71,6 +72,7 @@ static void empathy_audio_sink_init (EmpathyGstAudioSink *self) { self->priv = EMPATHY_GST_AUDIO_SINK_GET_PRIVATE (self); + self->priv->echo_cancel = TRUE; } static GstPad * empathy_audio_sink_request_new_pad (GstElement *self, @@ -191,7 +193,7 @@ empathy_audio_sink_get_volume (EmpathyGstAudioSink *sink) } static GstElement * -create_sink (void) +create_sink (EmpathyGstAudioSink *self) { GstElement *sink; const gchar *description; @@ -217,7 +219,7 @@ create_sink (void) if (sink == NULL) return NULL; - empathy_call_set_stream_properties (sink, TRUE); + empathy_call_set_stream_properties (sink, self->priv->echo_cancel); return sink; } @@ -258,7 +260,7 @@ empathy_audio_sink_request_new_pad (GstElement *element, gst_bin_add (GST_BIN (bin), volume); - self->priv->sink = create_sink (); + self->priv->sink = create_sink (self); if (self->priv->sink == NULL) goto error; @@ -311,3 +313,14 @@ empathy_audio_sink_release_pad (GstElement *element, gst_pad_set_active (pad, FALSE); gst_element_remove_pad (element, pad); } + +void +empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink, + gboolean echo_cancel) +{ + DEBUG ("Sink echo cancellation setting: %s", echo_cancel ? "on" : "off"); + sink->priv->echo_cancel = echo_cancel; + if (sink->priv->sink != NULL) + empathy_call_set_stream_properties (sink->priv->sink, + sink->priv->echo_cancel); +} -- cgit v1.2.3