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 {