Mercurial > pidgin.yaz
comparison finch/gntmedia.c @ 28349:901476dc70b9
propagate from branch 'im.pidgin.pidgin' (head dd712fa84e46b2d78adf28e914d3e1a5c18a5154)
to branch 'im.pidgin.cpw.darkrain42.2.6.1' (head bbfae195c9c51fc001abbf89a084b54d4ec4b549)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Wed, 19 Aug 2009 00:37:01 +0000 |
parents | 23dda7e57bcf c8ff0a9cf8cc |
children | 259bbfb423d4 |
comparison
equal
deleted
inserted
replaced
28341:2253903841a6 | 28349:901476dc70b9 |
---|---|
415 | 415 |
416 static GstElement * | 416 static GstElement * |
417 create_default_audio_src(PurpleMedia *media, | 417 create_default_audio_src(PurpleMedia *media, |
418 const gchar *session_id, const gchar *participant) | 418 const gchar *session_id, const gchar *participant) |
419 { | 419 { |
420 GstElement *bin, *src, *volume; | 420 GstElement *src; |
421 GstPad *pad, *ghost; | |
422 double input_volume = purple_prefs_get_int( | |
423 "/finch/media/audio/volume/input")/10.0; | |
424 | |
425 src = gst_element_factory_make("gconfaudiosrc", NULL); | 421 src = gst_element_factory_make("gconfaudiosrc", NULL); |
426 if (src == NULL) | 422 if (src == NULL) |
427 src = gst_element_factory_make("autoaudiosrc", NULL); | 423 src = gst_element_factory_make("autoaudiosrc", NULL); |
428 if (src == NULL) | 424 if (src == NULL) |
429 src = gst_element_factory_make("alsasrc", NULL); | 425 src = gst_element_factory_make("alsasrc", NULL); |
434 if (src == NULL) { | 430 if (src == NULL) { |
435 purple_debug_error("gntmedia", "Unable to find a suitable " | 431 purple_debug_error("gntmedia", "Unable to find a suitable " |
436 "element for the default audio source.\n"); | 432 "element for the default audio source.\n"); |
437 return NULL; | 433 return NULL; |
438 } | 434 } |
439 | 435 gst_element_set_name(src, "finchdefaultaudiosrc"); |
440 bin = gst_bin_new("finchdefaultaudiosrc"); | 436 return src; |
441 volume = gst_element_factory_make("volume", "purpleaudioinputvolume"); | |
442 g_object_set(volume, "volume", input_volume, NULL); | |
443 gst_bin_add_many(GST_BIN(bin), src, volume, NULL); | |
444 gst_element_link(src, volume); | |
445 pad = gst_element_get_pad(volume, "src"); | |
446 ghost = gst_ghost_pad_new("ghostsrc", pad); | |
447 gst_element_add_pad(bin, ghost); | |
448 | |
449 return bin; | |
450 } | 437 } |
451 | 438 |
452 static GstElement * | 439 static GstElement * |
453 create_default_audio_sink(PurpleMedia *media, | 440 create_default_audio_sink(PurpleMedia *media, |
454 const gchar *session_id, const gchar *participant) | 441 const gchar *session_id, const gchar *participant) |
455 { | 442 { |
456 GstElement *bin, *sink, *volume, *queue; | 443 GstElement *sink; |
457 GstPad *pad, *ghost; | |
458 double output_volume = purple_prefs_get_int( | |
459 "/finch/media/audio/volume/output")/10.0; | |
460 | |
461 sink = gst_element_factory_make("gconfaudiosink", NULL); | 444 sink = gst_element_factory_make("gconfaudiosink", NULL); |
462 if (sink == NULL) | 445 if (sink == NULL) |
463 sink = gst_element_factory_make("autoaudiosink",NULL); | 446 sink = gst_element_factory_make("autoaudiosink",NULL); |
464 if (sink == NULL) { | 447 if (sink == NULL) { |
465 purple_debug_error("gntmedia", "Unable to find a suitable " | 448 purple_debug_error("gntmedia", "Unable to find a suitable " |
466 "element for the default audio sink.\n"); | 449 "element for the default audio sink.\n"); |
467 return NULL; | 450 return NULL; |
468 } | 451 } |
469 | 452 return sink; |
470 bin = gst_bin_new("finchdefaultaudiosink"); | |
471 volume = gst_element_factory_make("volume", "purpleaudiooutputvolume"); | |
472 g_object_set(volume, "volume", output_volume, NULL); | |
473 queue = gst_element_factory_make("queue", NULL); | |
474 gst_bin_add_many(GST_BIN(bin), sink, volume, queue, NULL); | |
475 gst_element_link(volume, sink); | |
476 gst_element_link(queue, volume); | |
477 pad = gst_element_get_pad(queue, "sink"); | |
478 ghost = gst_ghost_pad_new("ghostsink", pad); | |
479 gst_element_add_pad(bin, ghost); | |
480 | |
481 return bin; | |
482 } | 453 } |
483 #endif /* USE_VV */ | 454 #endif /* USE_VV */ |
484 | 455 |
485 void finch_media_manager_init(void) | 456 void finch_media_manager_init(void) |
486 { | 457 { |
514 PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION); | 485 PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION); |
515 | 486 |
516 purple_debug_info("gntmedia", "Registering media element types\n"); | 487 purple_debug_info("gntmedia", "Registering media element types\n"); |
517 purple_media_manager_set_active_element(manager, default_audio_src); | 488 purple_media_manager_set_active_element(manager, default_audio_src); |
518 purple_media_manager_set_active_element(manager, default_audio_sink); | 489 purple_media_manager_set_active_element(manager, default_audio_sink); |
519 | |
520 purple_prefs_add_none("/finch/media"); | |
521 purple_prefs_add_none("/finch/media/audio"); | |
522 purple_prefs_add_none("/finch/media/audio/volume"); | |
523 purple_prefs_add_int("/finch/media/audio/volume/input", 10); | |
524 purple_prefs_add_int("/finch/media/audio/volume/output", 10); | |
525 #endif | 490 #endif |
526 } | 491 } |
527 | 492 |
528 void finch_media_manager_uninit(void) | 493 void finch_media_manager_uninit(void) |
529 { | 494 { |