(2022-08-16, 09:47 AM)Roman Artsimovich Wrote: Hello,
Yes, you are right. Currently, only CPU based encoding (pure software encoding) is used.
We are going to enable GPU modes for HEVC/H.265 encoding using NVIDIA boards in the BMD Plugin. We are planning to add Full, Hybrid and Driven modes for MainConcept HEVC (MP4) preset along with the existing pure software encoding mode in the next 1.4 version of the plugin. There's no specific date on when the next release will come out.
Best regards,
Roman Artsimovich
Do you have any plans to add open source encoding options using VAAPI? This would be incredibly useful for linux users on Intel+AMD hardware.
The open source mesa driver stack that ships with every linux distribution uses VAAPI for encode/decode. This is used in applications like OBS (Open Broadcaster Software) to allow GPU encoding on Intel + AMD hardware, although those implementations use gstreamer or ffmpeg as a middle-man.
I've added a bit of information below for a better understanding:
Here's what a basic vainfo output looks like that shows the capabilities of my card. The EncSLice entrypoints are encoder options allowed on my card for VAAPI encoding:
$ vainfo
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_14
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.14 (libva 2.14.0)
vainfo: Driver version: Mesa Gallium driver 22.3.0-devel for AMD Radeon RX 6900 XT (navi21, LLVM 14.0.0, DRM 3.46, 5.18.17-201.fsync.fc36.x86_64)
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice <--
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice <--
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice <--
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice <--
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice <--
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
As noted, OBS has VAAPI encoding options performed via ffmpeg by default (see screenshots attached)
And there is an alternative plugin which allows the same thing (VAAPI encoding) via gstreamer instead of ffmpeg (see screenshots attached)
notably the gstreamer plugin works much, much better than the ffmpeg plugin, but regardless it would be nice to be able to utilize VAAPI GPU encoding in DR.
the code for the gstreamer plugin can be found here:
https://github.com/fzwoch/obs-gstreamer
It should also be noted that currently DR Studio works out of the box with only the rocm-opencl package needed which is provided by Fedora directly. It no longer requires the amdgpu-pro driver stack or difficult cross-distro driver handling. Again I have to reiterate here that having VAAPI GPU encoding would be a huge boon to linux Intel+AMD users, I know a lot of people who would pay for this including myself.
That being said the current plugin is already great so thank you very much for creating it.