Splitting source to measure latency
Wolfgang Grandegger
wg at grandegger.com
Tue May 29 13:51:03 UTC 2018
Hello Nicolas,
I readded the ML to the CC...
Am 29.05.2018 um 15:31 schrieb Nicolas Dufresne:
> Le mardi 29 mai 2018 à 15:11 +0200, Wolfgang Grandegger a écrit :
>> Hello Nicolas,
>>
>> Am 29.05.2018 um 14:14 schrieb Wolfgang Grandegger:
>>> Hello,
>>>
>>> Am 29.05.2018 um 13:12 schrieb Nicolas Dufresne:
>>>> Le mardi 29 mai 2018 à 12:27 +0200, Wolfgang Grandegger a écrit :
>>>>> I want to split the video source to measure the latency between a video
>>>>> generated and displayed on a local and remote display using:
>>>>>
>>>>> # gst-launch-1.0 -v videotestsrc \
>>>>> ! video/xraw,format=RGBx,width=800,height=600,framerate=30/1 \
>>>>> ! timeoverlay ! tee name=t \
>>>>> t. ! queue ! kmssink
>>>>> t. ! queue ! vaapipostproc ! vaapijpegenc quality=90 \
>>>>> ! rtpjpegpay ! udpsink host=192.168.0.254 port=50004
>>>>>
>>>>> I'm interested in the latency due to:
>>>>>
>>>>> vaapipostproc ! vaapijpegenc quality=90 ! rtpjpegpay \
>>>>> ! udpsink host=192.168.0.254 port=50004
>>>>>
>>>>> Then I take a picture of both, the local and the remote display. I see
>>>>> that the time of the video on the remote side is delayed by more or less
>>>>> exactly *one* second. How does the "tee" deliver the packages to both
>>>>> streams? One by one? Is it possible at all to measure the latency using
>>>>> "tee"? Have I missed something else?
>>>>
>>>> tee is synchronous and single threaded, that's why you need queue
>>>> afterward. Though, it should not introduce a large delay like y uhave
>>>> described. I'd look at your receiver side for delays.
>>>
>>> Thanks for you hint... I'm using VLC on the receiver side using a
>>> default network cache of 1 second. With settings describe in [1] I was
>>> able to reduce the latency below 100ms.
>>
>> Sometimes the time delay between on the picture is even less than 50ms.
>> Is that realistic? What can I expect? OK, "kmssink" also introduces some
>> latency.
>
> Display drivers will introduce some latency, but it's variable, because
> the display refresh is not synchronized with the stream rate. So let's
> assumes 60 fps, which means a bit more then 16ms, times two, kmssink
> and VLC, you already have a plausible variation of 32ms. Then another
> aspect, vlc implement a adaptive jitterbuffer, which mean it will
> increase the delay is there is too much jitter.
>
> If you try with a gstreamer receiver, you should be able to test even
> lower latency on local network.
That makes sense and does confirm what I measure. The delay between both
times various between 0 and 3x16ms. So far I didn't use GStreamer
because I'm still at Ubuntu 14.04. Will switch to my PC with 16.04.
Thanks,
Wolfgang.
More information about the gstreamer-devel
mailing list