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!

15 comments:

  1. This is really impressive work, good job!

    ReplyDelete
  2. Is there any focus on improving support for AMD cards?

    ReplyDelete
  3. Good to see improvements, haven't used this in some time because it was so far behind other streamers. Will give it another go. Are you guys using ffr encoding yet? That was a huge improvement in both alvr and virtualdesktop

    ReplyDelete
    Replies
    1. If you mean forward error correcton / error correction codes - yes it's included in 2.6.

      Delete
  4. Good to hear there is an update I am looking forward to giving this another try.

    ReplyDelete
  5. I had some errors connecting through GearVR. I had to roll back off the beta for it to work, maybe I'll look at it again and try it out because this update looks really good.

    ReplyDelete
  6. this version doesn't work with oculus quest : version compatibility error between desktop (channel beta) and oculus (VRidgeQuest20600.apk)

    ReplyDelete
    Replies
    1. I was having trouble getting it going when installing the APK manually. I uninstalled the version of riftcat I had on my quest and ran their powershell script. It is now working on my Quest :) Make sure you are actually using 2.6 on your desktop too.

      Delete
  7. with the patch last patch it's OK

    ReplyDelete
  8. Always show "VRidge has crashed" when connect to my oculus go.

    ReplyDelete
  9. Beta crash when try to use NVENC.

    HRESULT error 0xFFFFFFFF887A002D at line 23 in file c:\dev\riftcat\vre.vridge.encoders.nvenc2020\vridgeencoder.cpp

    In stable version NVENC working.

    ReplyDelete
  10. Awesome work! Seeing a lot of improvements. Noticed the vibration feedback (Oculus Quest Controllers) no longer functions in the new beta. Lots of audio latency too.

    ReplyDelete
  11. OMG you have made amazing progress. I have been becoming a bit of a skeptic over the years and with the announcement of Oculus Link I thought there wouldnt be any use for Riftcat on the Quest, but you proved me wrong. The fact that you have have such tight latency and good visual quality over wifi is amazing! I am still having an issue that the screen with become artifact soup once a minute or so, but it only lasts a few seconds. I can't wait to see the next beta release!

    ReplyDelete