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