From: <kak...@us...> - 2008-12-01 22:09:17
|
Revision: 10786 http://amsn.svn.sourceforge.net/amsn/?rev=10786&view=rev Author: kakaroto Date: 2008-12-01 22:09:13 +0000 (Mon, 01 Dec 2008) Log Message: ----------- Implemented the source and device and source-pipeline (that one was hard!) into tcl_farsight Modified Paths: -------------- trunk/amsn/utils/farsight/src/tcl_farsight.c Modified: trunk/amsn/utils/farsight/src/tcl_farsight.c =================================================================== --- trunk/amsn/utils/farsight/src/tcl_farsight.c 2008-12-01 18:35:59 UTC (rev 10785) +++ trunk/amsn/utils/farsight/src/tcl_farsight.c 2008-12-01 22:09:13 UTC (rev 10786) @@ -757,7 +757,7 @@ { GError *error = NULL; GstBus *bus = NULL; - GstElement *src; + GstElement *src = NULL; GstPad *sinkpad = NULL, *srcpad = NULL; GIOChannel *ioc = g_io_channel_unix_new (0); GParameter transmitter_params[6]; @@ -979,8 +979,36 @@ goto error; } - src = gst_element_factory_make ("dshowaudiosrc", NULL); + if (source_pipeline) { + GstPad *pad = NULL; + GstBin *bin; + gchar *desc; + + /* parse the pipeline to a bin */ + desc = g_strdup_printf ("bin.( %s ! queue )", source_pipeline); + bin = (GstBin *) gst_parse_launch (desc, &error); + g_free (desc); + + if (bin) { + /* find pads and ghost them if necessary */ + if ((pad = gst_bin_find_unlinked_pad (bin, GST_PAD_SRC))) { + gst_element_add_pad (GST_ELEMENT (bin), gst_ghost_pad_new ("src", pad)); + gst_object_unref (pad); + } + src = GST_ELEMENT (bin); + } + if (error) { + _notify_debug ("Error while creating source pipeline (%d): %s", + error->code, error->message); + } + } else if (source) { + src = gst_element_factory_make (source, NULL); + if (src && device) + g_object_set(src, "device", device, NULL); + } if (src == NULL) + src = gst_element_factory_make ("dshowaudiosrc", NULL); + if (src == NULL) src = gst_element_factory_make ("directsoundsrc", NULL); else g_object_set(src, "buffer-time", G_GINT64_CONSTANT(20000), NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |