comparison libpurple/media/backend-fs2.c @ 29585:95f918df7f09

Move volume setting functionality to the Fs2 media backend.
author maiku@pidgin.im
date Tue, 27 Oct 2009 21:16:27 +0000
parents 97a29a311626
children bd6279df50de
comparison
equal deleted inserted replaced
29584:97a29a311626 29585:95f918df7f09
1958 return (stream != NULL) ? stream->tee : NULL; 1958 return (stream != NULL) ? stream->tee : NULL;
1959 } 1959 }
1960 1960
1961 g_return_val_if_reached(NULL); 1961 g_return_val_if_reached(NULL);
1962 } 1962 }
1963
1964 void
1965 purple_media_backend_fs2_set_input_volume(PurpleMediaBackendFs2 *self,
1966 const gchar *sess_id, double level)
1967 {
1968 PurpleMediaBackendFs2Private *priv;
1969 GList *sessions;
1970
1971 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self));
1972
1973 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
1974
1975 purple_prefs_set_int("/purple/media/audio/volume/input", level);
1976
1977 if (sess_id == NULL)
1978 sessions = g_hash_table_get_values(priv->sessions);
1979 else
1980 sessions = g_list_append(NULL, _get_session(self, sess_id));
1981
1982 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
1983 PurpleMediaBackendFs2Session *session = sessions->data;
1984
1985 if (session->type & PURPLE_MEDIA_SEND_AUDIO) {
1986 gchar *name = g_strdup_printf("volume_%s",
1987 session->id);
1988 GstElement *volume = gst_bin_get_by_name(
1989 GST_BIN(priv->confbin), name);
1990 g_free(name);
1991 g_object_set(volume, "volume", level/10.0, NULL);
1992 }
1993 }
1994 }
1995
1996 void
1997 purple_media_backend_fs2_set_output_volume(PurpleMediaBackendFs2 *self,
1998 const gchar *sess_id, const gchar *who, double level)
1999 {
2000
2001 PurpleMediaBackendFs2Private *priv;
2002 GList *streams;
2003
2004 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self));
2005
2006 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
2007
2008 purple_prefs_set_int("/purple/media/audio/volume/output", level);
2009
2010 streams = _get_streams(self, sess_id, who);
2011
2012 for (; streams; streams = g_list_delete_link(streams, streams)) {
2013 PurpleMediaBackendFs2Stream *stream = streams->data;
2014
2015 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO
2016 && GST_IS_ELEMENT(stream->volume)) {
2017 g_object_set(stream->volume, "volume",
2018 level/10.0, NULL);
2019 }
2020 }
2021 }