Strange performance observeration of videoconvert on ARM
Jake Zhang
zjpseudo at gmail.com
Wed Aug 10 12:29:36 UTC 2016
My input to videoconvert is from a v4l2 camera which always output UYVY
format and I want to convert it into I420 format. I found that the
videoconvert takes up to 200ms to convert it on my Nvidia TK1 4 core ARM
CPU.
gst-launch-1.0 -v v4l2src num-buffers=1 ! 'video/x-raw,
format=(string)UYVY, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1' ! videoparse format=uyvy width=1920 height=1080
framerate=30/1 ! videoconvert !
video/x-raw,format=I420,width=1920,height=1080,framerate=30/1 ! filesink
location=test1.yuv
However, if I write the UYVY into a file and then connect it to
videoconvert, it only takes about 7ms to process one frame.
gst-launch-1.0 -v filesrc location=test1_uyvy.yuv blocksize=4147200 !
videoparse format=uyvy width=1920 height=1080 framerate=60/1 ! videoconvert
! video/x-raw,format=I420,width=1920,height=1080,framerate=60/1 ! fakesink
I have debugged it for two days, both pipeline are using the same function
'video_orc_convert_UYVY_I420()' (with 'DISABLE_ORC' on ARM) but why the
performance could be so different?
I did some optimization on this function and bring down the processing time
for v4l2src uyvy format to 136ms but still 20x slower than filesrc with the
same data.
Any idea from gstreamer experts?
Thanks in advance.
Jake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160810/6732f6fe/attachment.html>
More information about the gstreamer-devel
mailing list