Pipeline implementation question

Nathanael D. Noblet nathanael at gnat.ca
Fri Jun 3 08:24:14 PDT 2011


On 06/03/2011 05:23 AM, Florian Lier wrote:
> Hello all,
>
> I have a problem which is similar to Bernhards (I guess, due to my
> limited GS knowledge) ...
> The best approach to describe my problem maybe is to create a very
> simple example pipeline
> like this one:
>
> "gst-launch-0.10 v4l2src ! queue ! xvimagesink pulsesrc ! queue ! pulsesink"
>
>
> AFAIK one would implement this like the following (*pseudo-code*)
>
> bin = gst_pipeline_new("Pipeline");
> v4l2src = gst_element_factory_make ("v4l2src", "videosrc");
> queue = gst_element_factory_make ("queue", "queue");
> xvimagesink = gst_element_factory_make ("xvimagesink", "xvimagesink");
> pulsesrc = gst_element_factory_make ("pulsesrc", "audiosrc");
> queue2 = gst_element_factory_make ("queue", "queue2");
> pulsesink = gst_element_factory_make ("pulsesink", "audiosink");
>
> Now:
>
> gst_bin_add_many(GST_BIN(bin), v4l2src, queue, xvimagesink, pulsesrc,
> queue2, pulsesink, NULL);
>
> In the next step one would link the elements and that's when I get
> confused - You don't actually "link" the
> imagesink to the pulsesrc - How do you implement this pipeline?
>
> gst_element_link_many(v4l2src, queue, xvimagesink, pulsesrc, queue2,
> pulsesink, NULL);
>
> Doesn't work and produces a SegFault...

Think about what is happening. You have one pipeline with two 'streams' 
you could say, one is audio, one is video. Even though there are two 
streams it is one pipe because you want some synchronization between 
them (audio synced to video etc).

So you are building one pipe, but the audio is one stream that links 
source to output, and video is another that links from source to output.

Also in your particular pipe, I don't think you need queue's. so you 
would do

gst_element_link_many(v4l2src,queue,xvimagesink)
gst_element_link_many(pulsesrc,queue2,pulsesink)

A few things you need to know about the above, it still may not work 
since the output from a v4l2src may not be compatible with your screens 
etc... Same for audio, So you may have to use ffmpegcolourspace, or 
caps, or audioconvert/resample etc modules in there.
-- 
Nathanael d. Noblet
t 403.875.4613


More information about the gstreamer-devel mailing list