[Gstreamer-openmax] Gstreamer Pipeline Optimisations ?

Nitin PAI nitinmpai at gmail.com
Fri Apr 9 04:05:20 PDT 2010


Hi Rob,

Thanks for your input. I enabled the share_input_buffer and
share_output_buffer and could see the CPU usage coming down.
I was still wondering if Gstreamer is zerocopy considering elements like
videobalance/ffmpegcolorspace/videoscale and the queues elements ?


Thanks,
Nitin





On Fri, Apr 9, 2010 at 3:37 PM, Rob Clark <rob at ti.com> wrote:

> On 04/09/2010 03:50 AM, Nitin PAI wrote:
>
>> Hi Rob,
>>
>> I see that there are variables like share_input_buffer,share_output_buffer
>> which avoid copying within the gst-openmax wrapper.
>>
>> 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?
>> Running QT over Phonon, Gstreamer on Embedded devices can kill the cpu for
>> D1 resolutions.
>>
>
> I'm not too familiar w/ phonon but GStreamer itself is generally zero
> copy.. I'm not sure how phonon would introduce a memcpy (assuming it is
> still using normal gst video sink elements)
>
> 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'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,
> -R
>
>
>
>>
>> Thanks,
>> Nitin
>>
>>
>> On Fri, Apr 9, 2010 at 1:29 PM, Rob Clark <rob at ti.com <mailto:rob at ti.com>>
>> wrote:
>>
>>    On 04/09/2010 01:52 AM, Nitin PAI wrote:
>>
>>
>>        Hi,
>>
>>        Currently, a typical gstreamer pipeline looks like
>>
>>        >gst-launch  filesrc location=XYZ ! demuxer !  decodebin !
>>        ffmpegcolorspace ! videobalance ! videoscale ! ximagesink.
>>
>>        The movement of data accross is enormous for a D1 or HD
>>        resolution as the pipeline passes YUV/RGB data which is very huge.
>>
>>        Is there any optimization possible or used which uses
>>        *pointers* to pass rather than the huge mem-copies involved?
>>
>>
>>
>>    Hi Nitin,
>>
>>    search for share_buffer
>>
>>    For this to work, it depends on your OpenMAX implementation to
>>    support 'non-pre-announced' buffers (which was a recent proposal
>>    from Nokia to Khronos standards group)
>>
>>    BR,
>>    -R
>>
>>
>>
>>
>> --
>> “Karmanya vadhikaraste ma phaleshu kadachana Ma karma-phala-hetur bhu ma
>> te sango stav karmani”           -  Krishna
>>
>
>


-- 
“Karmanya vadhikaraste ma phaleshu kadachana Ma karma-phala-hetur bhu ma te
sango stav karmani”           -  Krishna
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-openmax/attachments/20100409/ac0ca15e/attachment.htm>


More information about the Gstreamer-openmax mailing list