Jellyfin Forum
transcoding settings - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: General Questions (https://forum.jellyfin.org/f-general-questions)
+--- Thread: transcoding settings (/t-transcoding-settings)

Pages: 1 2


transcoding settings - chenks - 2024-12-06

i've set up jellyin as an LXC in proxmox (ubuntu OS)
it's running fine but just want to check i have transcoding options set correctly.

the host CPU is 12th Gen Intel® Core™ i3-12100 (8 cores)
the iGPU has passthru enabled correctly in proxmox (i believe)

[Image: Screenshot-2024-12-06-130326.png]

Code:
root@proxmox:~# lspci -nn | grep -Ei "3d|display|vga"
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-S GT1 [UHD Graphics 730] [8086:4692] (rev 0c)

using this guide i can see that my alder lake CPU supports most options
https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video#Hardware_decoding_and_encoding

i've set hardware decoding to Intel Quicksync (QSV)
i've enabled the following
[Image: Screenshot-2024-12-06-125852.png]
and left all the other options as default

for trickplay i've enabled "hardware decoding" and "Enable hardware accelerated MJPEG encoding" and left all other settings blank.

does this look all ok or should i be doing anything else?
should i also enable "enable tone mapping"?


RE: transcoding settings - TheDreadPirate - 2024-12-06

You can also check both of the HEVC RExt boxes. And, if you haven't already, you can check "Allow encoding in HEVC format".

https://github.com/intel/media-driver?tab=readme-ov-file#decodingencoding-features

You can check both tone mapping boxes. Just make sure you installed the intel-opencl-icd package.

You can check both low power boxes as long as you've setup the GuC and HuC firmware. I THINK this needs to be done in Proxmox and not the LXC.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#lp-mode-hardware-support


RE: transcoding settings - chenks - 2024-12-06

(2024-12-06, 01:30 PM)TheDreadPirate Wrote: You can check both tone mapping boxes.  Just make sure you installed the intel-opencl-icd package.

ah ok, so "enable tone mapping" and "enable VPP tone mapping"?
i haven't installed anything extra as of yet, so i will check on how to do that.

(2024-12-06, 01:30 PM)TheDreadPirate Wrote: You can check both low power boxes as long as you've setup the GuC and HuC firmware.  I THINK this needs to be done in Proxmox and not the LXC.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#lp-mode-hardware-support

is this worth while?


RE: transcoding settings - TheDreadPirate - 2024-12-06

(2024-12-06, 02:35 PM)chenks Wrote: ah ok, so "enable tone mapping" and "enable VPP tone mapping"?

Yes.

(2024-12-06, 02:35 PM)chenks Wrote: i haven't installed anything extra as of yet, so i will check on how to do that.

Code:
sudo apt install intel-opencl-icd

(2024-12-06, 02:35 PM)chenks Wrote:
(2024-12-06, 01:30 PM)TheDreadPirate Wrote: You can check both low power boxes as long as you've setup the GuC and HuC firmware.  I THINK this needs to be done in Proxmox and not the LXC.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#lp-mode-hardware-support

is this worth while?

IMO, yes.  It increases tone mapping performance if you have HDR content.  Since you have limited tone mapping performance with your iGPU, you should ensure you get max performance from it if you have HDR content and SDR devices.


RE: transcoding settings - chenks - 2024-12-06

(2024-12-06, 02:52 PM)TheDreadPirate Wrote:
Code:
sudo apt install intel-opencl-icd

no probs.
intel-opencl-icd is already installed (in the ubuntu LXC), so that part is good to go

(2024-12-06, 02:52 PM)TheDreadPirate Wrote: IMO, yes.  It increases tone mapping performance if you have HDR content.  Since you have limited tone mapping performance with your iGPU, you should ensure you get max performance from it if you have HDR content and SDR devices.

ok.
the doc says to install it on the host, which would be proxmox i guess
https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#lp-mode-hardware-support

if that's the case then i would follow the debian set of instructions

althought the instructions say

Quote:The setup is not necessary unless you are using an Intel Jasper Lake or Elkhart Lake processor, or you want faster OpenCL tone-mapping speed on Linux.
This also applies to the bleeding edge hardware such as 12th Gen Intel processors, ARC GPU and newer but step 2 should be skipped.

my CPU is alder lake 12th gen, so not sure if that means that it isn't necessary for me or not?


RE: transcoding settings - TheDreadPirate - 2024-12-06

That line is saying that it setting up this firmware required for Jasper Lake and Elkhart Lake CPU.  Not just for tone mapping, but for transcoding in general.  It is optional for other Intel CPU families. But installing the firmware improves tone mapping performance.


RE: transcoding settings - chenks - 2024-12-06

ah ok, i'll need to read the installation instructions a bit more carefully as i don't want to end up screwing up the pve host in the process.

this is what my settings now look like (without doing the low-power for now)

[Image: IMG-0057.jpg]

[Image: IMG-0059.jpg]


RE: transcoding settings - TheDreadPirate - 2024-12-06

Also check "only generate images from key frames". Generating trickplays will happen MUCH quicker when that is enabled. The small loss in timing accuracy is worth it, IMO.


RE: transcoding settings - the-bort-the - 2024-12-14

I also have an Alder Lake CPU with Jellyfin installed as a docker container on Debian. I have followed the thread and believe I've checked all the same boxes, but I'm seeing a lot of pausing/freezing/buffering during playback. It's much worse than just disabling the encoding/decoding. I do see, via the top command the CPU% is way down from when hardware acceleration is completely disabled, so there's that. I've included some playback information as well.

I'm struggling to understand how things could be different. If you want a new thread, I'm also happy to open one. Adding some of the information that was asked of OP in hopes there is something I've missed.

docker-compose.yml snippet:
Code:
image: jellyfin/jellyfin:10.9.11-amd64.20240907-221241
devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

# apt policy intel-opencl-icd
Code:
intel-opencl-icd:
  Installed: 24.17.29377.6
  Candidate: 24.17.29377.6
  Version table:
*** 24.17.29377.6 100
        100 /var/lib/dpkg/status
    22.43.24595.41-1 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages


# /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-libxml2 --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 @ 0x55ffb0923500] 1 OpenCL platforms found.
[AVHWDeviceContext @ 0x55ffb0923500] 1 OpenCL devices found on platform "Intel(R) OpenCL Graphics".
[AVHWDeviceContext @ 0x55ffb0923500] 0.0: Intel(R) OpenCL Graphics / Intel(R) UHD Graphics
[AVHWDeviceContext @ 0x55ffb0923500] cl_intel_va_api_media_sharing found as platform extension.
[AVHWDeviceContext @ 0x55ffb0923500] Media sharing must be enabled on context creation to use QSV to OpenCL mapping.
[AVHWDeviceContext @ 0x55ffb0923500] 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'

# /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=vaConfused-facedev/dri/renderD128 -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-libxml2 --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 @ 0x564225f5c480] libva: VA-API version 1.22.0
[AVHWDeviceContext @ 0x564225f5c480] libva: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x564225f5c480] libva: Found init function __vaDriverInit_1_22
[AVHWDeviceContext @ 0x564225f5c480] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x564225f5c480] Initialised VAAPI connection: version 1.22
[AVHWDeviceContext @ 0x564225f5c480] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 24.2.5 (12561f6).
[AVHWDeviceContext @ 0x564225f5c480] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x564225f8ea40] 0.0: Intel(R) OpenCL Graphics / Intel(R) UHD Graphics
[AVHWDeviceContext @ 0x564225f8ea40] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[AVHWDeviceContext @ 0x564225f8ea40] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[AVHWDeviceContext @ 0x564225f8ea40] 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'



RE: transcoding settings - the-bort-the - 2024-12-14

I noticed the information in the playback info had some progress noted on the transcoding progress. Once that completed, things seemed better. Is that a feature of sorts we need to wait for to complete to ensure smoother playback? Just from a user experience, that isn't the best, if you're trying to binge several episodes.