617
612
g_object_set (G_OBJECT (vid->sink), "location", vid->filename->str, "buffer-mode", 2, /* non buffered io */
620
/* Add user set or default audio source element */
621
if (!(vid->aud_src = gst_camerabin_setup_default_element (vidbin,
622
vid->user_aud_src, "autoaudiosrc", DEFAULT_AUDIOSRC))) {
626
if (!gst_camerabin_add_element (vidbin, vid->aud_src))
630
/* Add queue element for audio */
631
if (!(gst_camerabin_create_and_add_element (vidbin, "queue"))) {
635
/* Add optional audio conversion and volume elements and
636
raise no errors if adding them fails */
637
#ifdef USE_AUDIO_CONVERSION
638
if (!gst_camerabin_try_add_element (vidbin,
639
gst_element_factory_make ("audioconvert", NULL))) {
640
GST_WARNING_OBJECT (vid, "unable to add audio conversion element");
641
/* gst_camerabin_try_add_element() destroyed the element */
644
vid->volume = gst_element_factory_make ("volume", NULL);
645
if (!gst_camerabin_try_add_element (vidbin, vid->volume)) {
646
GST_WARNING_OBJECT (vid, "unable to add volume element");
647
/* gst_camerabin_try_add_element() destroyed the element */
650
g_object_set (vid->volume, "mute", vid->mute, NULL);
653
/* Add user set or default audio encoder element */
654
if (vid->user_aud_enc) {
655
vid->aud_enc = vid->user_aud_enc;
656
if (!gst_camerabin_add_element (vidbin, vid->aud_enc)) {
659
} else if (!(vid->aud_enc =
660
gst_camerabin_create_and_add_element (vidbin, DEFAULT_AUD_ENC))) {
664
/* Link audio part to the muxer */
665
if (!gst_element_link (vid->aud_enc, vid->muxer)) {
666
GST_ELEMENT_ERROR (vid, CORE, NEGOTIATION, (NULL),
667
("linking audio encoder and muxer failed"));
615
if (!(vid->flags & GST_CAMERABIN_FLAG_DISABLE_AUDIO)) {
616
/* Add user set or default audio source element */
617
if (!(vid->aud_src = gst_camerabin_setup_default_element (vidbin,
618
vid->user_aud_src, "autoaudiosrc", DEFAULT_AUDIOSRC))) {
622
if (!gst_camerabin_add_element (vidbin, vid->aud_src))
626
/* Add queue element for audio */
627
if (!(gst_camerabin_create_and_add_element (vidbin, "queue"))) {
631
/* Add optional audio conversion and volume elements and
632
raise no errors if adding them fails */
633
if (vid->flags & GST_CAMERABIN_FLAG_AUDIO_CONVERSION) {
634
if (!gst_camerabin_try_add_element (vidbin,
635
gst_element_factory_make ("audioconvert", NULL))) {
636
GST_WARNING_OBJECT (vid, "unable to add audio conversion element");
637
/* gst_camerabin_try_add_element() destroyed the element */
641
vid->volume = gst_element_factory_make ("volume", NULL);
642
if (!gst_camerabin_try_add_element (vidbin, vid->volume)) {
643
GST_WARNING_OBJECT (vid, "unable to add volume element");
644
/* gst_camerabin_try_add_element() destroyed the element */
647
g_object_set (vid->volume, "mute", vid->mute, NULL);
650
/* Add user set or default audio encoder element */
651
if (vid->user_aud_enc) {
652
vid->aud_enc = vid->user_aud_enc;
653
if (!gst_camerabin_add_element (vidbin, vid->aud_enc)) {
656
} else if (!(vid->aud_enc =
657
gst_camerabin_create_and_add_element (vidbin, DEFAULT_AUD_ENC))) {
661
/* Link audio part to the muxer */
662
if (!gst_element_link (vid->aud_enc, vid->muxer)) {
663
GST_ELEMENT_ERROR (vid, CORE, NEGOTIATION, (NULL),
664
("linking audio encoder and muxer failed"));
671
668
/* Add queue leading out of the video bin and to view finder */
672
669
vid->tee_vf_srcpad = gst_element_get_request_pad (vid->tee, "src%d");
673
670
if (!(queue = gst_camerabin_create_and_add_element (vidbin, "queue"))) {
685
682
G_CALLBACK (gst_camerabin_drop_eos_probe), vid);
686
683
gst_object_unref (vid_srcpad);
688
pad = gst_element_get_static_pad (vid->aud_src, "src");
689
vid->aud_src_probe_id = gst_pad_add_buffer_probe (pad,
690
G_CALLBACK (camerabin_video_pad_aud_src_have_buffer), vid);
691
gst_object_unref (pad);
685
if (!(vid->flags & GST_CAMERABIN_FLAG_DISABLE_AUDIO)) {
686
pad = gst_element_get_static_pad (vid->aud_src, "src");
687
vid->aud_src_probe_id = gst_pad_add_buffer_probe (pad,
688
G_CALLBACK (camerabin_video_pad_aud_src_have_buffer), vid);
689
gst_object_unref (pad);
693
691
GST_DEBUG ("created video elements");