alvr-org / alvr-org/ALVR

[Feature Request] Disable encoding (raw video transfer)

Offen
#2,175 13 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Rust
Sterne
7.9k
Forks
708
Ø Merge
3 T. 23 Std.
Gemergte PRs (30 T.)
11

Beschreibung

I'm wondering if adding a feature to disable video encoding entirely would be feasible?

This might sound silly at first but there is a good reason why I would like to do such a thing.
Currently I am using ALVR to connect to my Quest 3 via port forwarding using ADB.
I have determined that this is a USB 3.2 connection and in experimental testing using iperf I was able to achieve data transfer rates of up to 20.8Gbits/s before the ADB connection broke down due to network congestion.

Unfortunately tuning the compression settings to target a bitrate that high dosent seem to work, at least nvenc fails at this task.
High bandwith targets also seem to come with a significant hit in latency, anything above 300Mbits/s adds at minimum 20ms of latency.

I propose to add an option that would disable encoding entirely. This could possibly get rid of any encoding and decoding latency in the system while offering higher visual fidelity.
A quick calculation can confirm that such datarates are feasible:
`2 (number of screens) × 2064 × 2208p (quest resolution) × 120Hz (refresh rate) × 12bpp (bytes per pixel at 8 bit color) = 13.12Gbits/s`
(This could possibly be reduced using chroma subsampling or by lowering the refresh rate)

I believe that adding this feature would not be very complex, and that the following changes are needed:
- Adding a new `EncodePipelineDummy` (or other name) (in `alvr/server/cpp/platform/linux`) which copies the vulkan image on the GPU into a CPU buffer
- Adding a new option to disable encoding in `Settings` (in `alvr/server/cpp/alvr_server/Settings.h`)
- Adding a new UI element to allow the user to toggle the disable encoding option
- Adding a new client decoder for raw video data (possibly in `alvr/client_core/src/platform/android/decoder.rs`)

Id love to contribute to make this a feature. I'm not confident to write any rust code, but I would like to contribute the new encoding pipeline if possible.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.