Low Transcoding FPS with Intel A380 - container_ship - 2024-07-03
Hello.
I run my Jellyfin instance in the official Docker container. My full Setup is proxmox 8.2.2 > ubuntu 23.10 VM > docker > jellyfin (like this post).
I followed the official guide and got everything up and running.
Output of lshw -C display inside the ubuntu VM:
*-display
description: VGA compatible controller
product: DG2 [Arc A380]
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: /dev/fb0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=i915 latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
resources: iomemory:60-5f irq:39 memory:fb000000-fbffffff memory:600000000-7ffffffff memory:c0000-dffff[/code]
Output of ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 80 Jul 3 17:35 by-path
crw-rw---- 1 root video 226, 0 Jul 3 17:35 card0
crw-rw---- 1 root render 226, 128 Jul 3 17:35 renderD128
Output of docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo
Code: Trying display: drm
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_21
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.2.3 (7c1c775)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSliceLP
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointEncSliceLP
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointEncSliceLP
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointEncSliceLP
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain422_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain422_12 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_12 : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointVLD
VAProfileHEVCSccMain : VAEntrypointEncSliceLP
VAProfileHEVCSccMain10 : VAEntrypointVLD
VAProfileHEVCSccMain10 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444 : VAEntrypointVLD
VAProfileHEVCSccMain444 : VAEntrypointEncSliceLP
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointEncSliceLP
VAProfileHEVCSccMain444_10 : VAEntrypointVLD
VAProfileHEVCSccMain444_10 : VAEntrypointEncSliceLP
Output of docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va -init_hw_device opencl@va
Code: ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
[AVHWDeviceContext @ 0x6313d5e5b480] Trying to use DRM render node for device 0.
[AVHWDeviceContext @ 0x6313d5e5b480] libva: VA-API version 1.21.0
[AVHWDeviceContext @ 0x6313d5e5b480] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x6313d5e5b480] libva: Found init function __vaDriverInit_1_21
[AVHWDeviceContext @ 0x6313d5e5b480] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x6313d5e5b480] Initialised VAAPI connection: version 1.21
[AVHWDeviceContext @ 0x6313d5e5b480] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 24.2.3 (7c1c775).
[AVHWDeviceContext @ 0x6313d5e5b480] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x6313d5e8cbc0] 0.0: Intel(R) OpenCL Graphics / Intel(R) Arc(TM) A380 Graphics
[AVHWDeviceContext @ 0x6313d5e8cbc0] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x6313d5e8cbc0] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x6313d5e8cbc0] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
Output of docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device opencl
Code: ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'opencl'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument opencl.
[AVHWDeviceContext @ 0x57aa60e97500] 1 OpenCL platforms found.
[AVHWDeviceContext @ 0x57aa60e97500] 1 OpenCL devices found on platform "Intel(R) OpenCL Graphics".
[AVHWDeviceContext @ 0x57aa60e97500] 0.0: Intel(R) OpenCL Graphics / Intel(R) Arc(TM) A380 Graphics
[AVHWDeviceContext @ 0x57aa60e97500] cl_intel_va_api_media_sharing found as platform extension.
[AVHWDeviceContext @ 0x57aa60e97500] Media sharing must be enabled on context creation to use QSV to OpenCL mapping.
[AVHWDeviceContext @ 0x57aa60e97500] QSV to OpenCL mapping not usable.
Successfully parsed a group of options.
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
I activated HWA (QSV with tone mapping and low power encoding for HEVC and H.264, everything else set to default) inside jellyfin and transcoding with tone mapping works however only with 50fps (without tone mapping) or 40 fps with tone mapping (from 4k > 1080p).
This seems very low in regards that I have a A380.
Did I forget some settings?
I already tried the linuxserver docker version but tone mapping didn't work here at all.
My CPU is a i5 12400F, so I think HWA is ignored and instead jellyfin uses software transcoding.
RE: Low Transcoding FPS with Intel A380 - TheDreadPirate - 2024-07-03
I'm assuming you mean without tone mapping for that first one (50 fps).
If you selected Quick Sync, Jellyfin doesn't just ignore that. And it doesn't fallback to CPU transcoding. If you select Quick Sync and it doesn't work for some reason it will just fail.
Can you share your ffmpeg log? One with tone mapping and one without tone mapping?
Also, once we get this sorted out, I recommend you upgrade the VM to 24.04. 23.10 is EOL on July 11. Make a backup of you VM then...
Code: sudo apt update ; sudo apt upgrade ; sudo do-release-upgrade
RE: Low Transcoding FPS with Intel A380 - container_ship - 2024-07-03
Your assumption is correct.
ffmpeg log with tone mapping: https://pastebin.com/Bnx8L5mj
ffmpeg log without tone mapping: https://pastebin.com/em2weAfK
RE: Low Transcoding FPS with Intel A380 - TheDreadPirate - 2024-07-03
You are definitely using QSV in those logs.
Can you clarify if Ubuntu is a VM or LXC?
You linked another post in your opening. If Ubuntu is a VM, did you ensure that the linux-firmware package was installed?
Code: sudo apt list --installed | grep firmware
If Ubuntu is a LXC, you will need to ensure that the non-free linux firmware package is installed on Proxmox.
Code: sudo apt list --installed | grep firmware-linux-nonfree
You may also have to ensure that the HuC and GuC firmwares are actually present as that other user noted that HuC was missing on their system for some reason.
RE: Low Transcoding FPS with Intel A380 - container_ship - 2024-07-03
Ubuntu is a VM and the linux-firmware package is installed.
linux-firmware/mantic-updates,now 20230919.git3672ccab-0ubuntu2.10 amd64 [installed]
Edit: Ahhhh HuC and GuC are missing... sudo cat /sys/kernel/debug/dri/0/gt/uc/guc_info and sudo cat /sys/kernel/debug/dri/0/gt/uc/huc_info don't exist
RE: Low Transcoding FPS with Intel A380 - TheDreadPirate - 2024-07-03
The location of guc and huc info is weird and not consistent. I found mine in /sys/kernel/debug/dri/1/gt0/uc/huc_info.
RE: Low Transcoding FPS with Intel A380 - container_ship - 2024-07-03
Ok I added dg2_huc_gsc.bin to /lib/firmware/i915/ but nothing changed.
Edit: For people reading this in the future. I nuked my VM with this so I don't recommend adding it.
RE: Low Transcoding FPS with Intel A380 - TheDreadPirate - 2024-07-03
I just looked at your log again, the one without tone mapping. While you aren't tone mapping you are still converting the color space since the source video is HDR. So I'm thinking there is still an impact to performance when converting color spaces.
I ran some tests on my system without tone mapping, but with a 4K HDR source video, and there is a significant drop in performance compared to a SDR source video. About the same performance as what you described. See my signature for my system specs.
So I'm thinking what you are seeing is normal.
RE: Low Transcoding FPS with Intel A380 - container_ship - 2024-07-03
Well if that's the case than so be it. I checked my SDR content and here I get over 200 fps.
Little fun fact to close this, my system is based on yours. I always came across your posts while researching hardware for Jellyfin so I took some inspiration.
RE: Low Transcoding FPS with Intel A380 - nyanmisaka - 2024-07-04
Hardware decoding is not enabled.
|