From 6e3ea627e70266d8c3739300e900a5b7bc0763bc Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Sun, 26 Aug 2012 16:20:56 +0200 Subject: Remove libempathy-gtk dependency on gstreamer libempathy-gtk uses gstreamer directly only for one utility function used by empathy-call. Split this one out into a call specific utility file. --- src/Makefile.am | 2 ++ src/empathy-audio-sink.c | 6 ++--- src/empathy-audio-src.c | 6 ++--- src/empathy-audio-utils.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++ src/empathy-audio-utils.h | 33 ++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 src/empathy-audio-utils.c create mode 100644 src/empathy-audio-utils.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 80b4d58c0..ed3d8d0db 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -101,6 +101,8 @@ empathy_call_SOURCES = \ empathy-audio-sink.h \ empathy-audio-src.c \ empathy-audio-src.h \ + empathy-audio-utils.c \ + empathy-audio-utils.h \ empathy-video-src.c \ empathy-video-src.h \ empathy-preferences.c \ diff --git a/src/empathy-audio-sink.c b/src/empathy-audio-sink.c index d48e6af20..ba5cab77d 100644 --- a/src/empathy-audio-sink.c +++ b/src/empathy-audio-sink.c @@ -28,7 +28,7 @@ #include -#include +#include "empathy-audio-utils.h" #include "empathy-audio-sink.h" @@ -219,7 +219,7 @@ create_sink (EmpathyGstAudioSink *self) if (sink == NULL) return NULL; - empathy_call_set_stream_properties (sink, self->priv->echo_cancel); + empathy_audio_set_stream_properties (sink, self->priv->echo_cancel); /* Set latency (buffering on the PulseAudio side) of 40ms and transfer data * in 10ms chunks */ @@ -402,6 +402,6 @@ empathy_audio_sink_set_echo_cancel (EmpathyGstAudioSink *sink, 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, + empathy_audio_set_stream_properties (sink->priv->sink, sink->priv->echo_cancel); } diff --git a/src/empathy-audio-src.c b/src/empathy-audio-src.c index 9369c7783..a3784f13f 100644 --- a/src/empathy-audio-src.c +++ b/src/empathy-audio-src.c @@ -26,7 +26,7 @@ #include #include -#include +#include "empathy-audio-utils.h" #include "empathy-audio-src.h" @@ -267,7 +267,7 @@ create_src (void) if (src == NULL) return NULL; - empathy_call_set_stream_properties (src, TRUE); + empathy_audio_set_stream_properties (src, TRUE); /* Set latency (buffering on the PulseAudio side) of 20ms */ g_object_set (src, "buffer-time", (gint64) 20000, NULL); @@ -679,7 +679,7 @@ empathy_audio_src_set_echo_cancel (EmpathyGstAudioSrc *src, gboolean enable) { DEBUG ("Src echo cancellation setting: %s", enable ? "on" : "off"); - empathy_call_set_stream_properties (src->priv->src, enable); + empathy_audio_set_stream_properties (src->priv->src, enable); } void diff --git a/src/empathy-audio-utils.c b/src/empathy-audio-utils.c new file mode 100644 index 000000000..323ef8edf --- /dev/null +++ b/src/empathy-audio-utils.c @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2011 Collabora Ltd. + * + * The code contained in this file is free software; you can redistribute + * it and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version + * 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this code; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: Emilio Pozuelo Monfort + */ + +#include "config.h" + +#include + +#include "empathy-audio-utils.h" + +#include + +#define DEBUG_FLAG EMPATHY_DEBUG_OTHER +#include + +void +empathy_audio_set_stream_properties (GstElement *element, + gboolean echo_cancellation) +{ + GstStructure *props; + GSettings *gsettings_call; + gboolean echo_cancellation_setting; + + gsettings_call = g_settings_new (EMPATHY_PREFS_CALL_SCHEMA); + + echo_cancellation_setting = g_settings_get_boolean (gsettings_call, + EMPATHY_PREFS_CALL_ECHO_CANCELLATION); + + DEBUG ("Echo cancellation: element allowed: %s, user enabled: %s", + echo_cancellation ? " yes" : "no", + echo_cancellation_setting ? " yes" : "no"); + + + props = gst_structure_new ("props", + PA_PROP_MEDIA_ROLE, G_TYPE_STRING, "phone", + NULL); + + if (echo_cancellation && echo_cancellation_setting) + { + gst_structure_set (props, + "filter.want", G_TYPE_STRING, "echo-cancel", + NULL); + } + + g_object_set (element, "stream-properties", props, NULL); + gst_structure_free (props); + + g_object_unref (gsettings_call); +} diff --git a/src/empathy-audio-utils.h b/src/empathy-audio-utils.h new file mode 100644 index 000000000..f9f7cb897 --- /dev/null +++ b/src/empathy-audio-utils.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2011 Collabora Ltd. + * + * The code contained in this file is free software; you can redistribute + * it and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either version + * 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this code; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: Emilio Pozuelo Monfort + */ + +#ifndef __EMPATHY_AUDIO_UTILS_H__ +#define __EMPATHY_AUDIO_UTILS_H__ + +#include + +G_BEGIN_DECLS + +void empathy_audio_set_stream_properties (GstElement *element, + gboolean echo_cancellation); + +G_END_DECLS + +#endif -- cgit v1.2.3