[gst-devel] GStreamer performance On the embedded platform

David Schleef ds at schleef.org
Tue Jan 31 23:12:00 CET 2006

On Wed, Feb 01, 2006 at 01:33:11PM +0800, ye nan wrote:
> The application uses a video sink "xiamgesink" to dispaly only the video 
> stream in a mpeg2 stream with the libmpeg2 decoder plugin in 
> gst-plugin-ugly package. But I think its performance is not good as I 
> thought. It is slower than the applications which use the libmpeg directly, 
> such as mpeg2dec or mplayer.
> The nokida 770 used the Gstreamer, and it's basic configuration is OMAP 
> 192HMz cpu with 64M memory. Our demo platform is 200MHz cpu with 64M 
> memory. The run-time performance of GStreamer on our platform can not make 
> our satisfied.So we want to know is that the limition of GStreamer itself 
> or just the limitaton of codec plugins?
> Our test is basing on the Gstreamer 0.10.0 and corresponding plugins 
> packages. We test the performance both our own application and the 
> gst-launch command line:
> gst-launch filesrc location=<test.mpg> ! mpegdemux name=demuxer 
> demuxer.video_00 ! mpeg2dec ! ffmpegcolorspace ! ximagesink

The very first thing you want to do when examining the performace or
size of GStreamer for an embedded system is turn off the internal
debugging code using ./configure --disable-gst-debug.  There's other
stuff you might want to turn off, but they're less important.

The overhead of GStreamer is going to be very minor compared to the
CPU requirements of decoding a video stream in software.  A few
percent for a lightweight stream (mp3 decoding, for example), and
less for anything heavier like decoding video.  If you notice anything
significantly larger, it's probably a bug.

Two notable problems that relate to embedded systems currently:

 - GStreamer often exposes a bug in glibc's memory allocator that
   can cause repeated mmap()/munmap()s of large chunks of memory,
   causing lots of unnecessary page faults and page clearing in
   the kernel.

 - For unknown reasons, flex generates a 2 MB source file to parse
   GStreamer launch lines, which compiles into a ~650 kB .o file
   on i386.  This is insane.


David Schleef
Big Kitten LLC (http://www.bigkitten.com/) -- data acquisition on Linux

More information about the gstreamer-devel mailing list