[Bug 721701] New: Performance penalty for videoscale and I420 to BGRA for 1.2.0-1.2.2 and common ubuntu

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jan 7 05:13:56 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=721701
  GStreamer | gst-plugins-base | 1.2.2

           Summary: Performance penalty for videoscale and I420 to BGRA
                    for 1.2.0-1.2.2 and common ubuntu
    Classification: Platform
           Product: GStreamer
           Version: 1.2.2
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: pmaersk at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


It appear that version 1.2.0-1.2.2 and perhaps previous versions introduce a
dramatic performance penalty for video scaling and video format conversion of
I420 to BGRA when compared to version 0.10.36. This performance penalty is
present for common Ubuntu installations ranging from 12.04 until 13.10 as well
as with a newly build version of GStreamer 1.2.2 with orc-0.4.18. It is checked
that Orc is enabled when building gst-plugins-base.


The following examples are all executed on Ubuntu 13.10 with GStreamer 1.2.2
for version 1.0 and GStreamer 0.10.36 for version 0.10. The system is a dual
Xeon Quad core configuration with a total of 8 cores.

First we create two test samples of 60 seconds each (just hit ctrl-c after
running 60 seconds:

  $ gst-launch-1.0 -e -v videotestsrc pattern=18 is-live=true ! 'video/x-raw,
width=1024, height=576, format=I420' ! videoconvert ! x264enc ! 'video/x-h264,
profile=main' ! avimux ! filesink location=video1024x576.mp4

  $ gst-launch-1.0 -e -v videotestsrc pattern=18 is-live=true ! 'video/x-raw,
width=1280, height=720, format=I420' ! videoconvert ! x264enc ! 'video/x-h264,
profile=main' ! avimux ! filesink location=video1280x720.mp4

Now we start top in another window to check cpu load and try decode and convert
the latter file with 0.10 and 1.0

  $ /usr/bin/gst-launch-0.10 -v filesrc location=./video1280x720.mp4
do-timestamp=true ! decodebin2 name=decoder ! ffmpegcolorspace !
'video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321,
red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216,
width=(int)1280, height=(int)720' ! queue ! fakesink silent=true sync=true

and

  $ /usr/local/bin/gst-launch-1.0 -v filesrc location=./video1280x720.mp4
do-timestamp=true ! decodebin name=decoder ! videoconvert ! 'video/x-raw,
format=(string)BGRA, width=(int)1280, height=(int)720' ! queue ! fakesink
silent=true sync=true

On my system, the 0.10 version will happily run at roughly 24-25 % CPU load
while the 1.0 version runs at roughly 51%

Now we add videoscaling by using the first file we created and scale it before
converting it:

  $ /usr/bin/gst-launch-0.10 -v filesrc location=./video1024x576.mp4
do-timestamp=true ! decodebin2 name=decoder ! videoscale ! ffmpegcolorspace !
'video/x-raw-rgb, bpp=(int)32, depth=(int)32, endianness=(int)4321,
red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216,
width=(int)1280, height=(int)720' ! queue ! fakesink silent=true sync=true

and

  $ /usr/local/bin/gst-launch-1.0 -v filesrc location=./video1024x576.mp4
do-timestamp=true ! decodebin name=decoder ! videoscale ! videoconvert !
'video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720' ! queue !
fakesink silent=true sync=true

On my system, the 0.10 version will happily run at roughly 33-34 % CPU load
while the 1.0 version runs at roughly 101%

Here is what I see when building the plugin base:

configure: *** Plug-ins without external dependencies that will be built:
    adder
    app
    audioconvert
    audiorate
    audioresample
    audiotestsrc
    encoding
    gio
    playback
    subparse
    tcp
    typefind
    videoconvert
    videorate
    videoscale
    videotestsrc
    volume

configure: *** Plug-ins without external dependencies that will NOT be built:

configure: *** Plug-ins that have NOT been ported:

configure: *** Plug-ins with dependencies that will be built:
    alsa
    cdparanoia
    ivorbisdec
    libvisual
    ogg
    pango
    theora
    vorbis
    ximagesink
    xvimagesink

configure: *** Plug-ins with dependencies that will NOT be built:

configure: *** Orc acceleration enabled.

So I assume Orc acceleration for video scale and videoconvert is enabled.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list