Tuesday, March 10, 2020

Dev Update #56 - Streaming Enhanced Beta - Part 1

RiftCat 2.6 Beta - Part 1

We did a huge internal rework of VRidge streaming possibilities, squeezing more performance from our streaming technology. 

To test the Beta features, learn how to join Beta channels reading THIS guide.



In this Beta release you should have a significant improvement to the streaming latency, quality and stability. VRidge should also handle much higher streaming bitrates.

This is a part 1 of this Beta release. We have one more thing in preparation for this update package which will be updated to the Beta channel in the upcoming weeks.

Improved picture compression quality.
Error correction has been added that should compensate for small packet loss. This allowed us to push for higher bitrate with lesser chance of artifacting. On average, picture quality should be 20% better. We also tweaked encoding settings that should improve quality further on nvidia cards.

Improved color accuracy, especially in dark scenes.
We changed the way color palette is mapped during compression. Transmitted picture stream is now color-identical with original rendered picture. Previously contrast was a bit off which resulted in generally reduced visibility in darker scenes.

Reduced latency on Nvidia cards.
On average we reduced encoding path by 5-10 ms. This means that in 50% of cases, it will be one frame faster than before.

Reduced latency of Oculus Quest controllers.
Oculus Quest controllers are now using better prediction during rendering and sampling which reduced perceivable latency to near-native levels. This has effect on other controllers but Quest benefits the most from these changes.

Implemented multiple ways to reduce mid-stream artifacting.
Along with error correction, we added a better frame loss detection which should correct lost packets faster than before.

Known limitations

First few seconds of stream may be unreadable in certain cases. This should resolve by itself in 1-5 seconds.

Minor changes

  • Oculus Quest controllers should have more accurate positional placement.
  • PC builds are now 64-bit only.
  • Updated enet networking library.

Advanced configuration options

There are new options in VRidge.cfg file that can be edited by hand using any text editor.

"Video.ECC.MinPercent": 5,
"Video.ECC.MaxPercent": 30,

Configures minimum and maximum amount of error correction packets. It will dynamically adjust ECC percent between Min and Max, based on frame loss.

"Video.ECC.FixedPercent": null,

When not null, it will override ECC percent to a fixed amount.

"Video.Encoder": "NVENC",

Now starts the new Nvidia encoder, old one can be switched on by using LegacyNVENC instead of NVENC.

"Video.Nvenc.IntraRefresh.Duration": 15,
"Video.Nvenc.IntraRefresh.Period": 360,

Configures how "keyframes" are spread over the stream. Example above means that a keyframe is issued every 360 frames and is fragmented over 15 consecutive frames.

"Video.Nvenc.Invalidation": true,

Configures NVENC to use reference frame invalidation which lets encoder know that some frames were lost in transport and should not be used as references for predictive frames (less artifacting).

"Tracking.Controllers.PoseAge.Api": 0.03,
"Tracking.Controllers.PoseAge.Default": 0.06,
"Tracking.Controllers.PoseAge.Quest": 0.0,

Configures how old (in seconds) the controller data is compared to rendering time. Changing this value will affect prediction (perceived latency vs overshoot and judder)


Stay tuned for more

As always, we are awaiting your feedback to this Beta release at support@riftcat.com. Also, keep tracking our dev blog for news about part 2 of this update.

Have fun with improved VRidge quality!