Auto-detect GPU/iGPU/APU/NPU and automatically configure hardware acceleration, codecs and subtitle handling #17126
Replies: 13 comments 5 replies
|
This is planned but no ETA yet due to the complexity of current transcoding pipeline. Adding this would eventually requiring a refactor of current transcoders. |
|
Question: |
No. Without GPU acceleration the server would also work. |
|
Yes, I know, but with GPU acceleration it's better, so the question is, if this is a global option which is configured by administrator or have every user to configure it? |
|
It is global and an admin only option. |
|
@MDeveloping In the original post where it says user it actually means the admin, it looks like LLM output (or at least is formatted like it), so problems with the text are probably to be expected. |
|
I used AI to help me translate and understand this issue, as I am a Polish speaker. I am not a native English speaker, so I apologize for any confusion. |
|
As @gnattu already noted, this is a large undertaking rather than a single fix. Having looked through the server code, I wanted to lay out the concrete scope so it's clear why this can't land as one PR, and what would actually be involved in closing it. This request bundles six largely independent workstreams, and roughly half of them live outside What already exists today (reusable building blocks)
What is missing and would have to be built
Why it is invasive
Suggested path forwardIf this is to make progress incrementally, the only piece that is cleanly isolatable without touching the transcode core is #1 + #5 as a read-only "detect & recommend" endpoint: scan the hardware, surface what is detected, and suggest (not apply) a configuration. The automatic fallback (#3) and subtitle auto-selection (#4) genuinely require the pipeline refactor and should probably be tracked as their own issues so this one does not become a permanent catch-all. |
|
What do you think about adding a test button instead of auto-detection, so the server administrator can verify whether the selected options are working correctly and gpu acceleration is active? This would at least be a good intermediate step and would require less effort. |
|
Thanks @all3f0r1 for breaking this down so clearly — that's exactly the kind of scope that isn't visible from a user's perspective. |
|
I agree that the problem goes much deeper than just the transcoding layer. A proper capability-aware pipeline needs clean separation between media discovery, stream selection, playback decisions and encoding, otherwise every fix becomes another workaround. Breaking down I would be interested in seeing your findings from the exploratory project. Even partial architectural ideas or dependency maps could help identify smaller pieces that could be improved upstream. |
|
Please remember that according to our rules that the use of AI for any form of direct communication will result in a ban. The single exception exists for foreign language speakers who wish to use LLM's to translate, but this must be disclosed in advance. If we were to suspect that a person were using AI in their communications with this organization, we would respond by removing that person. |
|
Hello all, I've been working on figuring out a seamless solution for this issue which can be easily integrated into JF core. I would love for y'all to check out my proposal, and hopefully test it and provide feedback. Thank you!! (Would love to hear from @gnattu on what you think of the approach I'm proposing) |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Jellyfin should automatically detect available GPU hardware on startup
and configure hardware acceleration, supported codecs, and subtitle
delivery without requiring manual setup by the user.
Problem
Currently every user must manually:
This leads to broken setups, unnecessary CPU transcoding, and
silent failures with no guidance. Non-technical users have no way
to know which settings are correct for their hardware.
Real-world examples:
user must manually revert to CPU with no error message
silently breaks transcoding
because burn-in is not auto-configured for the client
Proposed solution
On first run and on each startup, Jellyfin should:
(D3D11VA/DXVA on Windows, /dev/dri on Linux)
by the detected hardware and enable only those
and log the reason clearly
and automatically choose: direct / extract / burn-in
so the user can verify the automatic configuration
Expected result
Current result
Environment where this was observed
Additional notes
Plex performs basic hardware auto-detection out of the box.
Jellyfin should offer the same baseline experience for
non-technical users. This would also significantly reduce
repeated support requests in the community.
All reactions