QSV is not a codec. It is the name of Intel’s ASIC for hardware acceleration of video codecs. There are different APIs for invoking the HWA of the ASIC—VAAPI and QSV. VAAPI is the method that PMS employs and works fine across many Linux distributions for a myriad of video codecs. Why do you think QSV is required?
QSV is not a codec. It is the name of Intel’s ASIC for hardware acceleration of video codecs
Yes, this is indeed a commercially advertised name by Intel.
However, this kind of Intel-modified VAAPI based on libmfx and libvplcan be used in FFMpeg (can you understand it this way) to get better graphics card performance utilization as I tested on the fifth floor.
This picture is from the FFMPEG document. When you specify this codec method, it will preferentially use this modified VAAPI based on libmfx and libvpl to codec video.
This driver seems to support this feature from the Intel 8th generation CPU
And what we usually know, open source, standard, VAAPI, is based on libva. This is the reason for the difference in usage of the 3D unit above.
In addition, in this decoding workflow, even though you are not an 8th and later generation CPU, it can still effectively fall back to the standard VAAPI interface process.
And based on @nagatoro answer, you can ask the technological consultant to look at the code here for ffmpeg - their implementation is different from the standard VAAPI anyway.
That’s why I think it’s a feature request.
In the current Master branch of ffmpeg, enable the --enable-libmfx flag in the buildtime to support this acceleration scheme implemented by FFMPEG.
Then you can directly use it with these ffmpeg flags: -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv.
Therefore, when you choose to accept this workflow, it will result in significant benefits for new generations of Intel CPUs and Intel discrete graphics cards, such as A380, A750, A770.
Please don’t discuss the Intel A-series GPUs here yet.
Engineering has not yet told us whether or not they will be supporting it.
If you want to add that to Feature Suggestions – that’s fine. I believe there is already a request you can upvote
Regarding:
I know what you’re saying but please don’t overthink this. The framework already exists albeit named a little differently because the HW tone mapping stack changes things.
Feb 06, 2023 15:46:27.290 [0x7f575c772b38] DEBUG - [Req#4df/Transcode/h1f9kmds07wa54dfmm3kktyx] [FFMPEG] - Direct mapping possible.
API selected
Feb 06, 2023 15:46:27.291 [0x7f575c772b38] DEBUG - [Req#4df/Transcode/h1f9kmds07wa54dfmm3kktyx] TPU: hardware transcoding: final decoder: vaapi, final encoder: vaapi
FFMPEG invocation.
– Transcode (video codec, audio codec, and bit rates) to fit browser
– Use Intel Open Compute Runtime to perform HW tone mapping.
– Scale to fit the window size requested by Plex/web browser.
While doing some testing the performance difference was insane… In ffmpeg benchmark mode (-f null -) using hwaccel qsv yielded way better performance by also using fully utilizing the decoder compared to hwaccel d3d11va (only used the decoder by < 1/4)
This also was proven by jellyfin on linux - qsv vs vaapi - qsv was way “faster”.
Maybe plex could start using qsv for decoding purposes and vaapi/dxva/d3d11 for encoding - so nothing changed on the encoder side?