selkies-project / selkies-gstreamer

Open-Source Low-Latency Accelerated Linux WebRTC HTML5 Remote Desktop Streaming Platform for Self-Hosting, Containers, Kubernetes, or Cloud/HPC
Mozilla Public License 2.0
351 stars 48 forks source link

Add support for zero-copy GPU screen capture including NVIDIA NvFBC #30

Open danisla opened 2 years ago

danisla commented 2 years ago

Per conversation in https://github.com/selkies-project/selkies-gstreamer/issues/7#issuecomment-1100765217:

xhejtman commented 2 years ago

It seems, you can include required headers into plugin source, nvenc does it. And use dynamic loader so that you do not need to link libs.

ehfd commented 1 year ago

Note that in GST 1.21.1, there are new variants of encoders which use CUDA directly instead of the NVENC AVI.

ehfd commented 1 year ago

Relevant: https://github.com/NVIDIA/libnvidia-container/issues/118. If NVIDIA injects all needed nvfbc libraries no userspace driver installation neccessary inside the container.

ehfd commented 1 year ago

nvcudah264enc/h265enc allows zero copy encoding in cudamemory, and may reduce the bits of latency we are looking for.

ehfd commented 11 months ago

https://steamcommunity.com/groups/homestream/discussions/0/451850849186356998

Also: NVFBC is deprecated as from NVIDIA?

xhejtman commented 11 months ago

https://steamcommunity.com/groups/homestream/discussions/0/451850849186356998

Also: NVFBC is deprecated as from NVIDIA?

maybe only for window 10, not as product.

NVFBC has been deprecated on Windows 10 and above for reasons explained in this document.

ehfd commented 3 months ago

Investigating PipeWire and kmsgrab (the latter might be implemented in GStreamer) is also key for other GPUs.

ehfd commented 2 months ago

https://github.com/CERIT-SC/gstreamer-nvimagesrc

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3408