What's the feature?
A quality choice for what leaves the Jellyfin server, in two places:
- Playback settings: a default, from the original file down through a handful of bitrate rungs.
- In the player: the same list next to the audio and subtitle pickers, for the times the default is wrong (a hotel line, a phone on a train).
Later, once offline downloads (#81) exist, the same choice decides what gets written to disk. A phone has less room than a NAS, and a 60 GB remux is rarely what you want on a plane.
Why? When would you use it?
Sodalite direct-plays by design: the device profile advertises what the hardware can decode, so the server hands over the original file and never re-encodes. That is the right default and stays the default. It is also the wrong answer on a line that cannot carry 40 Mbit, where today the only outcome is buffering.
Notes and open questions
- This deliberately gives up direct play. A rung below "original" means the server transcodes, so the entry has to read as a trade the user makes on purpose, not a quality slider that magically costs nothing. The picker should say what it is doing.
- The playback path changes with it. A capped stream arrives as a server-side HLS transcode rather than the original container, so
DirectPlayProfile needs a transcoding-profile shape for the capped case, and MaxStreamingBitrate has to reach PlaybackInfo for VOD the way it already does for Live TV.
- End the old encode when switching. Changing quality mid-playback opens a second transcode. Without an explicit stop, the first one keeps an ffmpeg process alive on the server. Live TV has taught this lesson already.
- Keep the position. A switch is a new stream: report, tear down, reopen, resume at the same second, ideally without a visible restart from zero.
- Per-network defaults on iOS and iPadOS. Wifi and cellular deserve separate defaults; an Apple TV has one kind of connection and needs only one.
- Rungs, not a slider. A short list of named steps (original, plus a few bitrate caps) is easier to reason about than a continuous value, and it matches what the server can actually deliver.
- The existing version picker is a different thing: it chooses between several files of the same title on the server. This chooses how one file is delivered.
What's the feature?
A quality choice for what leaves the Jellyfin server, in two places:
Later, once offline downloads (#81) exist, the same choice decides what gets written to disk. A phone has less room than a NAS, and a 60 GB remux is rarely what you want on a plane.
Why? When would you use it?
Sodalite direct-plays by design: the device profile advertises what the hardware can decode, so the server hands over the original file and never re-encodes. That is the right default and stays the default. It is also the wrong answer on a line that cannot carry 40 Mbit, where today the only outcome is buffering.
Notes and open questions
DirectPlayProfileneeds a transcoding-profile shape for the capped case, andMaxStreamingBitratehas to reachPlaybackInfofor VOD the way it already does for Live TV.