Non deterministic CPU load for decoding on ARM

Peter Maersk-Moller pmaersk at gmail.com
Fri Aug 8 02:32:36 PDT 2014


Hi.

I'm running a test on Odoird-U2 ARM processor with 4 cores.
See http://hardkernel.com/main/products/prdt_info.php?g_code=G135341370451

The test is decoding a well know video clip with the Big Bunny in
1280x720 at 25fps
big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4

The machine is not running anything else CPU or disk intensive.

Approximately 2/3 or 3 out of 4 times, the CPU load for reading and
decoding the clip will be in the range of 42-48% seen with top and 'ps
aux'. However 1/3 or 1/4 of the times, I see only a CPU load in the range
of 22-25%.

This behaviour also happens, if I run 2 or more identical processes. The
processes are started with a few seconds in between. When I run more
processes, chances that more than one process has a CPU load of 22-25% is
lower - normal probability distribution - but sometimes it happens. I can't
figure out why I sometimes see a lower load. Can any suggest why?

The pipeline script is shown below and the pipeline is here:

gst-launch-1.0 filesrc location=$file ! qtdemux ! h264parse ! queue !
avdec_h264 ! queue ! fakesink sync=true

If the filesrc was reading slower for some reason, this could be the
explanation for a lower CPU load, but I don't think so because I see almost
identical behaviour when running from 1 to 6 pipelines. More than 6-7
pipelines I max out the CPU usage and you can't really tell what is
contributed by what any more.

Here is the script:

#!/bin/sh

if [ $# -ne 1 ] ; then
  echo "Error. Usage : $0 <number of processes>"
  exit
fi
no=$1


decode_file()
{
  file=$1
  gst-launch-1.0         \
        filesrc location=$file !\
        qtdemux         !\
        h264parse       !\
        queue           !\
        avdec_h264      !\
        queue           !\
        fakesink sync=true
}

waitlist=''
i=$no
while [ $i -gt 0 ] ; do
  decode_file big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4 &
  waitlist="$waitlist $!"
  i=`expr $i - 1`
  sleep 4
done

for wno in $waitlist ; do
  echo Waiting $wno
  wait $wno
done
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140808/49119320/attachment-0001.html>


More information about the gstreamer-devel mailing list