Hi, Can anybody help me with this:<br><br>/*!<br> Initialize the the Gstreamer pipeline. Below is a diagram<br> of the pipeline that will be created:<br><br> |Screen| |Screen| |Screen|<br>
->|queue |->|filter|->|sink |-> Display<br> |Camera| |Camera | |Tee|/<br> |src |->|CSP filter|->| |\ |Image | |Image | |Image |<br> ->|queue |->|filter|->|sink |-> JPEG file<br>
*/<br>void initPipeline( GstElement * pipeline,<br> GstElement * imageSink, GstCaps * caps )<br>{<br> // Create pipeline and attach a callback to it's message bus.<br> pipeline = gst_pipeline_new( "camera" );<br>
<br> // Create elements.<br> GstElement * cameraSrc = gst_element_factory_make(<br> "v4l2src", cameraSourceName.c_str() );<br><br> GstElement * cspFilter = gst_element_factory_make(<br> "ffmpegcolorspace", "cspFilter" );<br>
<br> GstElement * tee = gst_element_factory_make( "tee", "tee" );<br><br> GstElement * screenQueue = gst_element_factory_make(<br> "queue", "screenQueue" );<br><br> GstElement * screenFilter = gst_element_factory_make(<br>
"ffmpegcolorspace", "screenFilter" );<br><br> GstElement * screenSink = gst_element_factory_make(<br> "xvimagesink", screenSinkName.c_str() );<br><br> GstElement * imageQueue = gst_element_factory_make(<br>
"queue", "imageQueue" );<br><br> GstElement * imageFilter = gst_element_factory_make(<br> "ffmpegcolorspace", "imageFilter" );<br><br> imageSink = gst_element_factory_make(<br>
"fakesink", imageSinkName.c_str() );<br><br> // Check that elements are correctly initialized.<br> if( !( pipeline && cameraSrc && cspFilter && tee &&<br> screenQueue && screenFilter && screenSink && imageQueue &&<br>
imageFilter && imageSink ) )<br> {<br> throw std::runtime_error( "Unable to initialize pipeline's elemets." );<br> }<br><br> // Add elements to the pipeline. This has to be done prior to linking them.<br>
gst_bin_add_many( GST_BIN( pipeline ), cameraSrc, cspFilter,<br> tee, screenQueue, screenFilter, screenSink, imageQueue,<br> imageFilter, imageSink, NULL );<br><br> if( !gst_element_link_many( cameraSrc, cspFilter, tee, NULL ) )<br>
throw std::runtime_error( "Unable to link camera source, "<br> "colorspace filter and tee." );<br><br> if( !gst_element_link_many( tee, imageQueue, imageFilter, NULL ) )<br> throw std::runtime_error( "Unable to link tee, image queue "<br>
"and image filter." );<br><br> // Capabilities for preview.<br> caps = gst_caps_new_simple( "video/x-raw-rgb",<br> "width", G_TYPE_INT, cameraMAXXResolution,<br> "height", G_TYPE_INT, cameraMAXYResolution,<br>
"bpp", G_TYPE_INT, cameraBitsPerPixel,<br> "depth", G_TYPE_INT, cameraColorDepth,<br> "framerate", GST_TYPE_FRACTION, cameraVideoFramerate, 1,<br> NULL );<br><br>
if( !gst_element_link_filtered( imageFilter, imageSink, caps ) )<br> {<br> gst_caps_unref( caps );<br><br> throw std::runtime_error( "Unable to link image filter and "<br> "image sink." );<br>
}<br><br> gst_caps_unref( caps );<br><br> if( !gst_element_link_many( tee, screenQueue, screenFilter, NULL ) )<br> throw std::runtime_error( "Unable to link tee, screen queue and "<br> "screen filter." );<br>
<br> // Capabilities for image capturing.<br> caps = gst_caps_new_simple( "video/x-raw-rgb",<br> "width", G_TYPE_INT, cameraPreviewXResolution,<br> "height", G_TYPE_INT, cameraPreviewYResolution,<br>
NULL );<br><br> if( !gst_element_link_filtered( screenFilter, screenSink, caps ) )<br> {<br> gst_caps_unref( caps );<br><br> throw std::runtime_error( "Unable to link screen filter and "<br>
"screen sink." );<br> }<br><br> gst_element_set_state( pipeline, GST_STATE_READY );<br>} // initPipeline<br><br>Last gst_element_link_filtered failed and I can't understand why.<br clear="all">
<br>-- <br>Regards,<br>Igor Mironchick<br>