IMX6 RTSP stream latency

From RidgeRun Developer Wiki
Revision as of 18:51, 15 December 2017 by Spalli (talk | contribs)


Introduction

This page summarizes the results after measuring the latency for an iMX6 Nitrogen6X board while streaming over RTSP.

Test setup

The test was performed using the Nitrogen6X Eval SDK built with linaro HFP toolchain and using the RidgeRun RTSP Sink element. A 1080p30 test video showing a timer was split into 2 outputs, one of the output was sent to an HDMI monitor (reference video) and the other one to the iMX6 HDMI capture module. The stream was played using a gstreamer pipeline in a regular PC, then a picture of the reference video and the captured stream was taken and the the latency is calculated as the difference of the values in the 2 versions of the video.

1080p30 (VPU 352MHZ) test results

This are the results of the test with the video running at 1080p30 and the VPU at 352MHz. In order to reproduce them run the followin pipelines:

Target board pipeline

gst-launch-0.10 mfw_v4lsrc device=/dev/video0 capture-mode=5 fps-n=30 queue-size=7 ! gstperf ! queue ! \
vpuenc codec=6 gopsize=30 bitrate=10000000 seqheader-method=3 ! \
queue ! mpegtsmux ! capsfilter caps="video/mpegts,mapping=/stream1" ! \
queue ! rtspsink service="5000" name=sink -v


PC (receiver) pipeline

$TARGET_IP_ADDRESS=<your board ip address>
gst-launch-1.0 -e -v rtspsrc location="rtsp://$TARGET_IP_ADDRESS:5000/stream1" ! \
rtpmp2tdepay ! queue ! tsdemux ! 'video/x-h264' ! h264parse ! queue ! \
decodebin ! xvimagesink sync=false

Latency results

  • Max: 128ms
  • Min: 63ms
  • Average: 92ms