Mercurial > pidgin
comparison libpurple/media.c @ 24971:1ce297c8923b
Added media functions to set input and output volume.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Sat, 13 Dec 2008 08:37:57 +0000 |
parents | ca0c9cc50e35 |
children | 93cc8982d4e5 |
comparison
equal
deleted
inserted
replaced
24970:99055b8db16b | 24971:1ce297c8923b |
---|---|
447 !strcmp(stream->participant, participant)) | 447 !strcmp(stream->participant, participant)) |
448 return stream; | 448 return stream; |
449 } | 449 } |
450 | 450 |
451 return NULL; | 451 return NULL; |
452 } | |
453 | |
454 static GList * | |
455 purple_media_get_streams(PurpleMedia *media, const gchar *session, | |
456 const gchar *participant) | |
457 { | |
458 GList *streams = media->priv->streams; | |
459 GList *ret = NULL; | |
460 | |
461 for (; streams; streams = g_list_next(streams)) { | |
462 PurpleMediaStream *stream = streams->data; | |
463 if ((session == NULL || | |
464 !strcmp(stream->session->id, session)) && | |
465 (participant == NULL || | |
466 !strcmp(stream->participant, participant))) | |
467 ret = g_list_append(ret, stream); | |
468 } | |
469 | |
470 return ret; | |
452 } | 471 } |
453 | 472 |
454 static void | 473 static void |
455 purple_media_add_session(PurpleMedia *media, PurpleMediaSession *session) | 474 purple_media_add_session(PurpleMedia *media, PurpleMediaSession *session) |
456 { | 475 { |
1376 g_object_set(volume, "mute", active, NULL); | 1395 g_object_set(volume, "mute", active, NULL); |
1377 } | 1396 } |
1378 } | 1397 } |
1379 } | 1398 } |
1380 | 1399 |
1400 void purple_media_set_input_volume(PurpleMedia *media, | |
1401 const gchar *session_id, double level) | |
1402 { | |
1403 GList *sessions; | |
1404 | |
1405 if (session_id == NULL) | |
1406 sessions = g_hash_table_get_values(media->priv->sessions); | |
1407 else | |
1408 sessions = g_list_append(NULL, | |
1409 purple_media_get_session(media, session_id)); | |
1410 | |
1411 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { | |
1412 PurpleMediaSession *session = sessions->data; | |
1413 | |
1414 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { | |
1415 GstElement *volume = gst_bin_get_by_name( | |
1416 GST_BIN(session->src), | |
1417 "purpleaudioinputvolume"); | |
1418 g_object_set(volume, "volume", level, NULL); | |
1419 } | |
1420 } | |
1421 } | |
1422 | |
1423 void purple_media_set_output_volume(PurpleMedia *media, | |
1424 const gchar *session_id, const gchar *participant, | |
1425 double level) | |
1426 { | |
1427 GList *streams = purple_media_get_streams(media, | |
1428 session_id, participant); | |
1429 | |
1430 for (; streams; streams = g_list_delete_link(streams, streams)) { | |
1431 PurpleMediaStream *stream = streams->data; | |
1432 | |
1433 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO) { | |
1434 GstElement *volume = gst_bin_get_by_name( | |
1435 GST_BIN(stream->session->sink), | |
1436 "purpleaudiooutputvolume"); | |
1437 g_object_set(volume, "volume", level, NULL); | |
1438 } | |
1439 } | |
1440 } | |
1441 | |
1381 #endif /* USE_VV */ | 1442 #endif /* USE_VV */ |