Hi Rob, <br><br>Thanks for your input. I enabled the share_input_buffer and share_output_buffer and could see the CPU usage coming down. <br>I was still wondering if Gstreamer is zerocopy considering elements like videobalance/ffmpegcolorspace/videoscale and the queues elements ?<br>
<br><br>Thanks,<br>Nitin <br><br><br><br><br><br><div class="gmail_quote">On Fri, Apr 9, 2010 at 3:37 PM, Rob Clark <span dir="ltr">&lt;<a href="mailto:rob@ti.com">rob@ti.com</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">On 04/09/2010 03:50 AM, Nitin PAI wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Rob,<br>
<br>
I see that there are variables like share_input_buffer,share_output_buffer which avoid copying within the gst-openmax wrapper.<br>
<br>
My question was for the entire gstreamer stack. Considering an application that uses Phonon over Gstreamer (over may be openmax). Are there any optimizations possbile there?<br>
Running QT over Phonon, Gstreamer on Embedded devices can kill the cpu for D1 resolutions.<br>
</blockquote>
<br></div>
I&#39;m not too familiar w/ phonon but GStreamer itself is generally zero copy.. I&#39;m not sure how phonon would introduce a memcpy (assuming it is still using normal gst video sink elements)<br>
<br>
Take your typical video playback scenario..  gst-openmax will use pad_alloc to allocate a buffer from the display.  If share_output_buffer is enabled, this buffer will be passed in to decoder element to decode frame.  Zero copies.  (Well, assuming you aren&#39;t going through xv which introduces a copy no matter what framework you are..  but, for example, omapfbsink or v4l2sink will be zero copy all the way to the display.)  I can play 1080p quite nicely through gst-openmax+v4l2sink with low CPU and no memcpy on my little dev board here.<br>

<br>
<br>
BR,<br>
-R<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
<br>
Thanks,<br>
Nitin<div class="im"><br>
<br>
On Fri, Apr 9, 2010 at 1:29 PM, Rob Clark &lt;<a href="mailto:rob@ti.com" target="_blank">rob@ti.com</a> &lt;mailto:<a href="mailto:rob@ti.com" target="_blank">rob@ti.com</a>&gt;&gt; wrote:<br>
<br>
    On 04/09/2010 01:52 AM, Nitin PAI wrote:<br>
<br>
<br>
        Hi,<br>
<br>
        Currently, a typical gstreamer pipeline looks like<br>
<br>
        &gt;gst-launch  filesrc location=XYZ ! demuxer !  decodebin !<br>
        ffmpegcolorspace ! videobalance ! videoscale ! ximagesink.<br>
<br>
        The movement of data accross is enormous for a D1 or HD<br>
        resolution as the pipeline passes YUV/RGB data which is very huge.<br>
<br>
        Is there any optimization possible or used which uses<br>
        *pointers* to pass rather than the huge mem-copies involved?<br>
<br>
<br>
<br>
    Hi Nitin,<br>
<br>
    search for share_buffer<br>
<br>
    For this to work, it depends on your OpenMAX implementation to<br>
    support &#39;non-pre-announced&#39; buffers (which was a recent proposal<br>
    from Nokia to Khronos standards group)<br>
<br>
    BR,<br>
    -R<br>
<br>
<br>
<br>
<br>
-- <br>
“Karmanya vadhikaraste ma phaleshu kadachana Ma karma-phala-hetur bhu ma te sango stav karmani”           -  Krishna<br>
</div></blockquote>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>“Karmanya vadhikaraste ma phaleshu kadachana Ma karma-phala-hetur bhu ma te sango stav karmani”           -  Krishna<br>