From 8b9ee2a0f048ce6263efe0d0660ed04a53861adf Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Wed, 9 Nov 2011 19:00:10 +0000 Subject: Don't turn on echo cancellation on the source if it's for raw conferences https://bugzilla.gnome.org/show_bug.cgi?id=663842 --- src/empathy-call-window.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/empathy-call-window.c') diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c index 8a4a3aa29..de29f15c0 100644 --- a/src/empathy-call-window.c +++ b/src/empathy-call-window.c @@ -2690,6 +2690,23 @@ empathy_call_window_channel_closed_cb (EmpathyCallHandler *handler, empathy_call_window_restart_call (self); } +static gboolean +empathy_call_window_content_is_raw (TfContent *content) +{ + FsConference *conference; + gboolean israw; + + g_object_get (content, "fs-conference", &conference, NULL); + g_assert (conference != NULL); + + /* FIXME: Ugly hack, update when moving a packetization property into + * farstream */ + israw = g_str_has_prefix (GST_OBJECT_NAME (conference), "fsrawconf"); + gst_object_unref (conference); + + return israw; +} + static gboolean empathy_call_window_content_removed_cb (EmpathyCallHandler *handler, TfContent *content, @@ -3420,6 +3437,14 @@ empathy_call_window_content_added_cb (EmpathyCallHandler *handler, switch (media_type) { case FS_MEDIA_TYPE_AUDIO: + + /* For raw audio conferences assume that the receiver of the raw data + * wants it unprocessed, so turn off any echo cancellation and any + * other audio improvements that come with it */ + empathy_audio_src_set_echo_cancel ( + EMPATHY_GST_AUDIO_SRC (priv->audio_input), + !empathy_call_window_content_is_raw (content)); + if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input)) { g_warning ("Could not add audio source to pipeline"); -- cgit v1.2.3