imx6 / mainline linux / basic problems

Ian Molton imolton at ad-holdings.co.uk
Wed Feb 4 03:15:22 PST 2015


Hi folks,

I'm attempting to get an i.MX6q to do hardware decoding of a h.264 stream, on a mailine kernel.

With the help of Philipp Zabel, I think I have the kernel side of things working, but I am struggling with gstreamer.

I can run the following pipeline:

gst-launch-1.0 -v filesrc location=/home/ian/Downloads/big_buck_bunny_1080p_h264.mov ! qtdemux ! queue ! h264parse ! v4l2video3dec ! queue ! fakesink

and I can see that its decoding faster than required - this is good.

however getting the data out of the pipeline in order to do anything useful with it is a major headache.

I've tried the following:

gst-launch-1.0 -v filesrc location=/home/ian/Downloads/big_buck_bunny_1080p_h264.mov ! qtdemux ! queue ! h264parse ! v4l2video3dec ! queue ! filesink location=/tmp/out sync=false

And this results in the decoder slowing to a crawl, about 8fps, despite the filesystem getting about 40MB/s write performance.

i've also tried to use rtp to get the data off, using:

gst-launch-1.0 -v filesrc location=/home/ian/Downloads/big_buck_bunny_1080p_h264.mov ! qtdemux ! queue ! h264parse ! v4l2video3dec ! rtpvrawpay ! udpsink  host=192.168.113.91 port=50000 sync=false

and on the host:

gst-launch-1.0 -v udpsrc caps="application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)RAW\,\ sampling\=\(string\)YCbCr-4:2:0\,\ depth\=\(string\)8\,\ width\=\(string\)1920\,\ height\=\(string\)1088\,\ colorimetry\=\(string\)BT709-2\,\ payload\=\(int\)96\,\ ssrc\=\(uint\)807345866\,\ timestamp-offset\=\(uint\)3980970788\,\ seqnum-offset\=\(uint\)15934" port=50000 ! rtpvrawdepay ! autovideosink

which resulted once again in an abysmal framerate.

So I tried:

gst-launch-1.0 -v filesrc location=/home/ian/Downloads/big_buck_bunny_1080p_h264.mov ! qtdemux ! queue ! h264parse ! v4l2video3dec ! rtpvrawpay ! fakesink

which was not really any better.

basically, it seems to me, like there is no way to get video out of the decoder, without crippling it.

Can anyone offer a suggestion on how I can actually get the data out of the decoder without making the whole exercise a waste of time? I don't really care if the data goes to a screen or a file, or another PC, but surely it has to be possible?

Lastly - is there any way to get gstreamer to tell you the framerate of a pipe, or the components within it?

-Ian


More information about the gstreamer-devel mailing list