A real-time hardware codec library for RustDesk based on FFmpeg
| GPU | FFmpeg ram | FFmpeg vram | sdk vram |
|---|---|---|---|
| intel encode | qsv | qsv | Y |
| intel decode | d3d11 | d3d11 | Y |
| nvidia encode | nvenc(nv12->d3d11) | nvenc(d3d11) | Y |
| nvidia decode | d3d11 | d3d11 | N |
| amd encode | amf | amf | Y |
| amd decode | d3d11 | d3d11 | Y |
-
The reason for discarding the codecs using Cucontext is discussed in the following forum thread: https://forums.developer.nvidia.com/t/cuctxdestroy-causing-system-freeze-and-black-screen/290542/1. Based on the information above, there are several optimizations and changes made to the codec:
- FFmpeg encoding AV_PIX_FMT_NV12 directly: The codec is modified to transfer AV_PIX_FMT_NV12 to AV_PIX_FMT_D3D11. This is done because FFmpeg doesn't use Cucontext if the device type is AV_HWDEVICE_TYPE_D3D11VA.
- FFmpeg decoding with AV_HWDEVICE_TYPE_CUDA acceleration: This functionality is disabled and replaced with AV_HWDEVICE_TYPE_D3D11VA. The decoding process now utilizes D3D11VA acceleration instead of CUDA.
- SDK decoding with CUDA acceleration: The CUDA acceleration support is disabled.
-
amd sdk remove h265 support, GPUOpen-LibrariesAndSDKs/AMF#432
| GPU | FFmpeg ram |
|---|---|
| intel encode | vaapi |
| intel decode | vaapi |
| nvidia encode | vaapi, nvnec |
| nvidia decode | vaapi, nvdec |
| amd encode | vaapi, amf |
| amd decode | vaapi |
- vaapi: only tested on intel with
va-driver-all, and hevc_vaapi encoding not supported on my pc - remove hevc_vaapi because of possible poor quality
- amf: not tested, GPUOpen-LibrariesAndSDKs/AMF#378
| FFmpeg ram encode | FFmpeg ram decode |
|---|---|
| h265 only | Y |
| FFmpeg ram encode |
|---|
| Y |
-
intel
Windows Intel(r) graphics driver since 27.20.100.8935 version.
Hardware Platforms Supported by the Intel(R) Media SDK GPU Runtime
-
AMD
AMD Radeon Software Adrenalin Edition 23.1.2 (22.40.01.34) or newer
https://github.com/GPUOpen-LibrariesAndSDKs/AMF
-
nvidia
Windows: Driver version 471.41 or higher
https://docs.nvidia.com/video-technologies/video-codec-sdk/11.1/read-me/index.html
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new?ncid=em-prod-816193