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