-
-
Notifications
You must be signed in to change notification settings - Fork 540
v21.0.0 Release Todos #1722
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Adding some of my own additions:
|
@shinyquagsire23 Your points are either don't need to be protocol breaks (they can be protocol extensions) or may take too long to be included in v21 assuming you haven't started working on it. For FFR i'm thinking we should leave it out, because we need to have android + windows + linux implementations which will take a long time. The idea is to first switch both windows and linux to wgpu like the client so it will be far easier to do all at once |
Yeah I'm mostly just spitballing on things that could be marginally improved if a protocol break is already happening. ie headset info is only sent as a single string and it gets kinda iffy to change that back to usable information on the streamer, IMO it could split out info a bit more to help futureproofing (ie A Quest 3 could split as manufacturer=Meta type=Quest subtype=Quest 3, so if the Quest 4 comes out the streamer could match on Meta and Quest and then the subtype could have aesthetic fallbacks targeted at Quests). |
@shinyquagsire23 I understand what you're saying, but we can still have a universal generic fallback. it's not a big deal, to avoid that the user should have both client and server on the same version. So, let's also keep the display name as string, passing it as a Platform variable could fail deserialization. On the server side we should try to match one by one the strings. Indeed we could make things clearer and rename |
Proposal: Compression on tracking packets (zstd? needs to be fast to compress and decompress).
|
lz4? |
@curoviyxru yeah LZ4 might be a better match, the compression+decompression time just has to be faster than the time it would take to send the byte difference between compressed and decompressed bytes over the network. I'd probably want to benchmark both just to be sure. |
For compressing the tracking packet I was thinking of some ad hoc algorithm. A Pose could be compressed from 28 bytes to 12 bytes (DeviceMotion would be from 52 to 24). @shinyquagsire23 personally i don't like the idea of compressing the data using any other compression methods, it may end up significantly slower, or at least more complex than needed |
@zmerp So, I've run tests on quantization at least in the context of hand tracking, int16 is probably my minimum but that was in view/camera space. And yeah fp16 is garbage. I'd be nervous applying int16 to velocities and head poses in particular in world space, 0.3mm will quickly become noticable at higher res and I'm not sure there's a good way to mask the quantization with dithering since velocity error would multiply. To be honest, I have doubts that compressing pose packets will have good latency yields, but it would be good to be sure if there's (lossless) benefits on the table. Also kinda worry that some things like eye tracking might need double precision floats. But in any case I'll look into it and only push for it if the numbers look compelling enough (minimum: 1ms or more latency reduction) |
The main usecase for this kind of compression is for trackers and skeleton (body/hands). We can choose to exclude head controllers and eyes. (Face tracking on the other hand could have more extreme compression down to 1 byte per parameter). I've heard issues with some people when enabling hand tracking. This is because hand skeleton tips the tracking structure size over the packet MTU, either converting it to a jumbo packet or triggering our packetization and reordering algorithm (i forgot how long ago the report was made). |
Would be nice if FOV-Tangent was added, it really is a big deal for me at least |
Uh oh!
There was an error while loading. Please reload this page.
To be done not earlier than just before releasing v21.0.0 stable, or after there was a devXX bump.
ClientControlPacket::VideoErrorReport
VideoStreamingCapabilities
packet.[ ] Use mesh foveated renderingdeferred. Needs protocol support to negotiate disabling FFE.DecoderConfig
packet in the video frame header, to avoid having to request another IDR and resend theDecoderConfig
two times.Vec<u8>
(don't use json). Values can only be appended and not removed. Alternatively investigate CapnProto or Flatbuffers which support protocol extensions natively.The text was updated successfully, but these errors were encountered: