alvr-org / alvr-org/ALVR

[Feature Request] Disable encoding (raw video transfer)

Aberta
#2,175 13 comentários 2 reações 0 responsáveis Ver no GitHub
enhancement
Linguagem predominante
Rust
Estrelas
7.9k
Forks
708
Merge médio
3d 23h
PRs com merge (30d)
11

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.