<br>Matias,<br><br><div class="gmail_quote">On Mon, Mar 28, 2011 at 11:30 PM, Matias Hernandez Arellano <span dir="ltr">&lt;<a href="mailto:msdark@archlinux.cl">msdark@archlinux.cl</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">I&#39;m still trying..<br>
<br>
The project use Qt libraries, so i will use QtGstreamer to do the streaming part..<br>
<br>
I read the Tiago&#39;s code and i see how can i copy de data of OpenCV image to a Buffer to push into an appsrc pipeline..<br>
So i try to do that with QtGstreamer:<br>
<br>
I create the pipeline<br>
  QString pipeDescr = QString(&quot;appsrc name=\&quot;buffer\&quot; ! queue ! videparse format=14 &quot;<br>
                                    &quot;width=640 height=480 framerate=25/1 &quot;<br>
                                    &quot; ! videorate ! videoscale ! ffmpegcolorspace &quot;<br>
                                    &quot; video/x-raw-rgb, width=640, height=480 ! decodebin ! avimux ! &quot;<br>
                                    &quot;filesink location=\&quot;app_sink_01\&quot;&quot;);<br>
        m_pipeline = QGst::Pipeline::create();<br>
        m_pipeline = QGst::Parse::launch(pipeDescr).dynamicCast&lt;QGst::Pipeline&gt;();<br></div></blockquote><div><br>I never used QTGstreamer, but this seems a little weird, are you first creating an empty pipeline (with QGst::Pipeline:;create()) and them creating another one with QGst::Parse ? it seems that you are creating/leaking the empty pipeline for nothing here.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
        QGlib::connect(m_pipeline-&gt;bus(), &quot;message::error&quot;, this,&amp;Player::onBusMessage);<br>
        m_pipeline-&gt;bus()-&gt;addSignalWatch();<br>
        m_pipeline-&gt;setState(QGst::StatePlaying);<br>
<br>
then i try to add the data of the images every time i query a frame<br>
         IplImage* frame = capture-&gt;queryFrame();<br>
            uchar* IMdata = (uchar*)frame-&gt;imageData;<br>
        const QGst::BufferPtr buffer = QGst::Buffer::create(sizeof(data)).dynamicCast&lt;QGst::Buffer&gt;();<br>
<br>
But here i&#39;m stuck .. how can i copy de data of the image (IMdata)  into a QGst::Buffer to use the the  QGst::Utils::ApplicationSource to push data into the pipeline<br>
<br></div></blockquote><div><br><br><br>If you set the caps of the appsrc with the exact same caps of the IplImage you got from OpenCV (probably it is BGR Interleaved image) you should only copy the data from frame-&gt;imageData directly to the GstBuffer, with a memcpy. <br>
<br>Something like:<br><br>memcpy (GST_BUFFER_DATA(buffer), frame-&gt;imageData, frame-&gt;imageSize);<br><br>Hope it helps,<br><br>Best regards,<br>Katcipis<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">
<br>
Am i doing this right?????<br>
<br>
Any idea, guideline or anything will be appreciate ...<br>
<br>
Thanks in adv<br>
</div><div class="im">El 26-03-2011, a las 0:57, Tiago Katcipis escribió:<br>
<br>
</div><div><div></div><div class="h5">&gt; On Fri, Mar 25, 2011 at 9:19 PM, Matias Hernandez Arellano &lt;<br>
&gt; <a href="mailto:msdark@archlinux.cl">msdark@archlinux.cl</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; (Sorry for my english)<br>
&gt;&gt;<br>
&gt;&gt; Hi, i made some research about this, and finally i have some ideas to<br>
&gt;&gt; accomplish this.<br>
&gt;&gt;<br>
&gt;&gt; First: I have an application using OpenCV to get the camera frames then<br>
&gt;&gt; make some image processing and show this in the screen. Now i need to send<br>
&gt;&gt; this images (the result) over the network to see the result in other (or<br>
&gt;&gt; others) devices (maybe using HTML5 video tag).<br>
&gt;&gt;<br>
&gt;&gt; Reading i finally decide to use gstreamer to make the streaming part, but i<br>
&gt;&gt; don&#39;t know how can i put the OpenCV images (frames for the camera) in a<br>
&gt;&gt; buffer to stream that with gstreamer.<br>
&gt;&gt;<br>
&gt;&gt; So, finally i read about appsrc.<br>
&gt;&gt; This can be used to push data into a gstreamer pipeline right?<br>
&gt;&gt;<br>
&gt;&gt; So if i can push the OpenCV data into a pipeline i can use the streaming<br>
&gt;&gt; capabilities of gstreamer and see the result in other device.<br>
&gt;&gt;<br>
&gt;&gt; Am I correct?<br>
&gt;&gt; Any example of how can i do that?<br>
&gt;&gt;<br>
&gt;<br>
&gt; Don&#39;t know if it will help you, but i worked together with a friend of mine<br>
&gt; on a simple code that captures video using gstreamer, process the data on<br>
&gt; OpenCV (actually it detects faces and draw an rectangle around them using<br>
&gt; OpenCV Haar features)  and them pushes the processed OpenCV data on another<br>
&gt; pipeline, using appsrc. The code was just a test of how OpenCV Haar works<br>
&gt; and how to integrate it with Gstreamer, so it is a mess (lots of commented<br>
&gt; code and even some commentaries on portuguese)...but maybe it will help you<br>
&gt; :-).<br>
&gt;<br>
&gt; <a href="http://gitorious.org/ufscwork/works/blobs/master/c++/opencv-haar/opencv-test.cpp" target="_blank">http://gitorious.org/ufscwork/works/blobs/master/c++/opencv-haar/opencv-test.cpp</a><br>
&gt;<br>
&gt; The new_buffer callback should interest you, it basically process a buffer<br>
&gt; coming from a appsink (pipeline1) and them pushes it on appsrc (pipeline2).<br>
&gt;<br>
&gt; Best regards,<br>
&gt; Tiago Katcipis<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; A OpenCV image is basically a matrix containing the information of the<br>
&gt;&gt; image, so i need to push this matrix into a gstreamer and stream.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Matías Hernandez Arellano<br>
&gt;&gt; Ingeniero de Software/Proyectos en VisionLabs S.A<br>
&gt;&gt; CDA Archlinux-CL<br>
&gt;&gt; <a href="http://www.msdark.archlinux.cl" target="_blank">www.msdark.archlinux.cl</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; gstreamer-devel mailing list<br>
&gt;&gt; <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
&gt;&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
&gt;&gt;<br>
<br>
Matías Hernandez Arellano<br>
Ingeniero de Software/Proyectos en VisionLabs S.A<br>
CDA Archlinux-CL<br>
<a href="http://www.msdark.archlinux.cl" target="_blank">www.msdark.archlinux.cl</a><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br>