gst-omx on Tegra 3

Erwin Rol mailinglists at erwinrol.com
Tue Feb 25 10:45:43 PST 2014


Hey all,

I have some problems getting gst-omx for Tegra 3 to work acceptably fast.

With the following pipeline I tested the speed;

gst-launch-1.0 filesrc
location=/ads/data/current/movies/sintel_trailer-720p.mp4 ! qtdemux !
h264parse ! omxh264dec ! progressreport ! fakesink

This results in the following progress report;

progressreport0 (00:00:10): 4 / 52 seconds ( 7.7 %)
progressreport0 (00:00:20): 9 / 52 seconds (17.3 %)
progressreport0 (00:00:30): 14 / 52 seconds (26.9 %)
progressreport0 (00:00:40): 18 / 52 seconds (34.6 %)
progressreport0 (00:00:50): 23 / 52 seconds (44.2 %)
progressreport0 (00:01:00): 28 / 52 seconds (53.8 %)
progressreport0 (00:01:10): 32 / 52 seconds (61.5 %)
progressreport0 (00:01:20): 37 / 52 seconds (71.2 %)
progressreport0 (00:01:30): 42 / 52 seconds (80.8 %)
progressreport0 (00:01:40): 47 / 52 seconds (90.4 %)
progressreport0 (00:01:50): 52 / 52 seconds (100.0 %)

As you can see it is about half the speed it should be.

The same pipeline with the 480p video seems to be the max that works;

progressreport0 (00:00:10): 9 / 52 seconds (17.3 %)
progressreport0 (00:00:20): 20 / 52 seconds (38.5 %)
progressreport0 (00:00:30): 30 / 52 seconds (57.7 %)
progressreport0 (00:00:40): 41 / 52 seconds (78.8 %)
progressreport0 (00:00:50): 51 / 52 seconds (98.1 %)

The CPU load seems to be really high for some unidentified thread;

for 480p;

  2309 root       20   0  105M 10412  4140 S 102.  0.5  0:16.67 |  `-
gst-launch-1.0 filesrc
location=/ads/data/current/movies/sintel_trailer-480p.mp4 ! qtdemux !
h264parse ! omxh264dec ! fakesink
  2315 root       20   0  105M 10412  4140 S  5.8  0.5  0:00.92 |     `-
omxh264dec-omxh
  2314 root       20   0  105M 10412  4140 S  0.0  0.5  0:00.01 |     `-
gst-launch-1.0
  2313 root       20   0  105M 10412  4140 S  2.6  0.5  0:00.51 |     `-
gst-launch-1.0
  2312 root       20   0  105M 10412  4140 S  0.0  0.5  0:00.00 |     `-
gmain
  2311 root       20   0  105M 10412  4140 S  1.3  0.5  0:00.25 |     `-
qtdemux0:sink
  2310 root       20   0  105M 10412  4140 R 93.5  0.5  0:14.80 |     `-
gst-launch-1.0

for 720p;

  2299 root       20   0  112M 14808  4132 S 107.  0.7  0:14.56 |  `-
gst-launch-1.0 filesrc
location=/ads/data/current/movies/sintel_trailer-720p.mp4 ! qtdemux !
h264parse ! omxh264dec ! fakesink
  2305 root       20   0  112M 14808  4132 S  7.1  0.7  0:00.87 |     `-
omxh264dec-omxh
  2304 root       20   0  112M 14808  4132 S  0.0  0.7  0:00.00 |     `-
gst-launch-1.0
  2303 root       20   0  112M 14808  4132 S  1.3  0.7  0:00.68 |     `-
gst-launch-1.0
  2302 root       20   0  112M 14808  4132 S  0.0  0.7  0:00.00 |     `-
gmain
  2301 root       20   0  112M 14808  4132 S  1.3  0.7  0:00.12 |     `-
qtdemux0:sink
  2300 root       20   0  112M 14808  4132 R 97.4  0.7  0:12.67 |     `-
gst-launch-1.0

There only seems to be a few % difference in CPU load for 480p and 720p.

Any idea what I am doing wrong? The decoding really seems to be done in
hardware since apart from the omx h264 decoder there is no other h264
decoder on this system. So I am a bit surprised by the high CPU load,
and the poor performance.

BTW when really showing the output on screen the effect is the same, the
720p version takes about twice as long.

Anny info and help is really appreciated,

Erwin








More information about the gstreamer-openmax mailing list