USB grabbers grand latency test.

I am very pleased with the performance of the current HyperHDR v17 version which has brought to you many new unique features. But the work does not stop and today we will use another unique tool of the current development version: the USB grabber latency test tool. Many times, users ask me which grabber to choose? Until now, we were relying on other software to judge their latencies: they were inaccurate and did not reflect actual performance when used with HyperHDR.

So here is new HyperHDR's benchmark tool available in the latest development version:


The mechanism is described below:
  • the grabber is capturing the desktop including the web browser
  • you must position the black rectangle in the center of the screen (don't worry: the margin is quite large, the benchmark won't procceed without it)
  • start the benchmark
  • compute the test environmental latency including communication and the browser graphic performance (usually few ms)
  • start to display the color sequence: each color must be captured & confirmed by the HyperHDR application to proceed with the next sequence.
  • calculate the total average latency corrected by the test environmental delay. The final result includes: the screen refresh rate latency, the grabber internal & capturing rate latency, USB transport latency, system drivers latency and HyperHDR video processing latency.
  • since HyperHDR is using high performance video processing, you can not use the result to assess how the particular grabber will work with the other software


Main assumptions of the benchmark:
  • the HyperHDR bechmark page runs on the same unit running the HyperHDR application to avoid network related latency
  • we use highly performance hosting unit: i7-6700HQ, 16GB RAM, Windows 10 configuration. USB grabbers are connected to the USB3.0 port. You may get different results for Raspberry Pi or when using USB2.0 port, but we are testing grabbers performance and we do not want that they could be limited by the host or USB2.0 bus slow performance.
  • we use the lowest resolution available and the highest frame rate available. If the manufacturer has not implemented the scaler, it's not our fault: we only use the settings available for us. Therefore, some grabbers will be tested using 640x480 and others using 1920x1080.
  • HyperHDR clean configuration is used, we only change the resolution for testing purpose
  • Firefox 92 clean configuration is used, no additional plugins are installed
  • the desktop resolution is 1080p60. Only two of tested grabbers accept 1080p120 and we will check it out later also.


Note:
  • some grabbers when connected to USB2.0 port, offer only MJPEG encoding. Avoid that situation. MJPEG decoding takes a lot of resources and if you use 'HDR tone mapping' it takes even additional. YUV/NV12/I420 decoding is quite easy and 'HDR tone mapping' is free for us thanks to HyperHDR's 2-in-1 special LUT table that does YUV to RGB transformation and HDR tone mapping at once.


Benchmark results



U3 Navy USB3.0 grabber with loop



Note:
  • doesn't offer HDR passthrough
  • doesn't have a scaler and offers only 1080p
  • YUV encoding for USB3.0 and MJPEG for USB2.0
  • really bad choice, I don't use it and don't like it

Results:

Video mode: 1920x1080x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 63.47ms
Average measured latency:: 64.54ms
Average measured latency:: 64.54ms


AV Access 4KVC00 USB3.0 grabber with loop



Note:
  • supports HDR passthrough
  • doesn't have a scaler and offers only 1080p
  • YUV encoding for USB3.0 and MJPEG for USB2.0
  • have an interesting diagnostic interface available on the COM port
  • under Linux 1080p30 MJPEG capturing doesn't work and the grabber is using 1080p60 instead which affects heavy resources usage
  • the manufacturer tried to do something about HDR tone mapping but it didn't end well: you need a special LUT table for that grabber for 1080p HDR tone mapping https://github.com/awawa-dev/HyperHDR/releases/download/v17.0.0.0
  • when the input video resolution/refresh rate is changed the video grabber disconnects from the system for a few seconds. You need the auto-resume option available in HyperHDR v17 to overcome the problem.
Results:

Video mode: 1920x1080x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 63.81ms
Average measured latency:: 62.59ms
Average measured latency:: 65.12ms

Ezcap 269 USB3.0 grabber with loop



Note:
  • well known USB grabber. But the image quality is not great.
  • offers HDR passthrough
  • YUV/NV12 encoding for USB3.0 and MJPEG for USB2.0
Results:

Video mode: 640x480x60 MJPEG
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 66.57ms
Average measured latency:: 79.54ms
Average measured latency:: 69.45ms

Video mode: 640x480x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 80.79ms
Average measured latency:: 78.46ms
Average measured latency:: 74.66ms

Rullz Macrosilicon MS2109 clone USB2.0 grabber without loop:



Note:
  • cheap ($10) and reliable device
  • great image quality
  • offers MJPEG/YUV/NV12 encodings
  • has a scaler
  • if only it had USB3.0 interface (there are fakes with "blue USB2.0" connector)... uncompressed formats suffer from the USB2.0 bandwidth and latency
Results:

Video mode: 640x480x60 MJPEG
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 76.84ms
Average measured latency:: 78.51ms
Average measured latency:: 69.41ms


Video mode: 640x480x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 84.67ms
Average measured latency:: 81.53ms
Average measured latency:: 78.22ms

Ezcap 320 USB3.0 grabber with loop



Note:
  • the grabber was reviewed on the HyperHDR blog
  • offers HDR passthrough
  • has a scaler
  • offers YUV/NV12 encoding even for USB2.0 using lower resolutions (don't update the firmware because newer version breaks things at least for Rpi)
  • need special LUT table for HDR tone mapping correction https://github.com/awawa-dev/HyperHDR/releases/download/v17.0.0.0
Results:

Video mode: 1280x720x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 64.82ms
Average measured latency:: 65.08ms
Average measured latency:: 64.15ms

Video mode: 1280x720x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 65.24ms
Average measured latency:: 65.04ms
Average measured latency:: 65.37ms

Video mode: 1280x720x60 XRGB
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 66.18ms
Average measured latency:: 65.26ms
Average measured latency:: 65.65ms

The results are quite average for a USB3.0 grabber. But what happens if we set the screen refresh rate to 120Hz (1080p120) when the TV/monitor supports the mode. Or when we disconnect the output from the grabber if the TV/monitor doesnt support it.

Results:

Video mode: 1280x720x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 50.09ms
Average measured latency:: 49.36ms
Average measured latency:: 48.38ms

Video mode: 1280x720x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 50.33ms
Average measured latency:: 50.21ms
Average measured latency:: 51.49ms
Alongside with Ezcap 321 that's the best result in the group.
I'm very happy that HyperHDR can achieve 50ms latency advertised by Ezcap.

Ezcap 321 USB3.0 grabber with loop



Note:
  • very similar to Ezcap 320 but it does not have a HDR passthrough and uses standard LUT table

Results:

Video mode: 1280x720x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 64.7ms
Average measured latency:: 65.18ms
Average measured latency:: 65.26ms

Video mode: 1280x720x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 65.4ms
Average measured latency:: 65.11ms
Average measured latency:: 65.32ms

When 1080p120 mode is used the results are also similar to Ezcap320.

Video mode: 1280x720x60 NV12
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 47.5ms
Average measured latency:: 53.06ms
Average measured latency:: 47.68ms

Video mode: 1280x720x60 YUYV
Perfect minimal latency (related to FPS):: 16.67ms
Average measured latency:: 48.7ms
Average measured latency:: 49ms
Average measured latency:: 49.27ms

As you can see if you are using HyperHDR with capable host using USB3.0 port, then the grabbers results for 1080p are very similar.
Is $100 Ezcap320 worth to have a delay lower by 20-30ms than the other HDR (and CEC as a additional bonus) passthrough capable solution like: Feintech HDMI splitter + MS2109 USB grabber (total $50)? You must decide yourself.

Comments