Mercurial > pidgin.yaz
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 } |