comparison libpurple/media/backend-fs2.c @ 31824:4f2aac5967bb

Make the simple silence suppression stuff optional per-account. Fixes #13180. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author jakub.adam@ktknet.cz
date Sun, 13 Mar 2011 18:17:14 +0000
parents 017b7ff5a894
children 3fb443b6460c
comparison
equal deleted inserted replaced
31823:d72d728226dc 31824:4f2aac5967bb
153 PROP_MEDIA, 153 PROP_MEDIA,
154 }; 154 };
155 155
156 static void 156 static void
157 purple_media_backend_fs2_init(PurpleMediaBackendFs2 *self) 157 purple_media_backend_fs2_init(PurpleMediaBackendFs2 *self)
158 { 158 {}
159 PurpleMediaBackendFs2Private *priv =
160 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
161
162 priv->silence_threshold = purple_prefs_get_int(
163 "/purple/media/audio/silence_threshold") / 100.0;
164 }
165 159
166 static gboolean 160 static gboolean
167 event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad) 161 event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad)
168 { 162 {
169 if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM 163 if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM
815 809
816 name = gst_element_get_name(src); 810 name = gst_element_get_name(src);
817 811
818 if (!strncmp(name, "sendlevel_", 10)) { 812 if (!strncmp(name, "sendlevel_", 10)) {
819 session = get_session(self, name+10); 813 session = get_session(self, name+10);
820 percent = gst_msg_db_to_percent(msg, "decay"); 814 if (priv->silence_threshold > 0) {
821 g_object_set(session->srcvalve, 815 percent = gst_msg_db_to_percent(msg, "decay");
822 "drop", (percent < priv->silence_threshold), NULL); 816 g_object_set(session->srcvalve,
817 "drop", (percent < priv->silence_threshold), NULL);
818 }
823 } 819 }
824 820
825 g_free(name); 821 g_free(name);
826 822
827 if (!g_signal_has_handler_pending(priv->media, level_id, 0, FALSE)) 823 if (!g_signal_has_handler_pending(priv->media, level_id, 0, FALSE))
1252 1248
1253 if (priv->conference == NULL) { 1249 if (priv->conference == NULL) {
1254 purple_debug_error("backend-fs2", "Conference == NULL\n"); 1250 purple_debug_error("backend-fs2", "Conference == NULL\n");
1255 return FALSE; 1251 return FALSE;
1256 } 1252 }
1253
1254 if (purple_account_get_silence_suppression(
1255 purple_media_get_account(priv->media)))
1256 priv->silence_threshold = purple_prefs_get_int(
1257 "/purple/media/audio/silence_threshold") / 100.0;
1258 else
1259 priv->silence_threshold = 0;
1257 1260
1258 pipeline = purple_media_manager_get_pipeline( 1261 pipeline = purple_media_manager_get_pipeline(
1259 purple_media_get_manager(priv->media)); 1262 purple_media_get_manager(priv->media));
1260 1263
1261 if (pipeline == NULL) { 1264 if (pipeline == NULL) {