fix(playback): apply default quality to jellyfin

close #1150
This commit is contained in:
edde746
2026-05-27 00:02:23 +02:00
parent 8e8942fb36
commit 56cfb95af5
3 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -506,7 +506,7 @@ abstract class MediaServerClient {
/// playback. Backends own the per-backend particulars: Plex runs the
/// transcode-decision flow when [PlaybackInitializationOptions.qualityPreset]
/// is non-original; Jellyfin asks PlaybackInfo for a matching stream when a
/// non-original preset is explicitly selected. Throws
/// non-original preset is selected. Throws
/// [PlaybackException] when the item can't be resolved (no MediaSources,
/// no playable URL, transcode decision unavailable).
///
+3 -3
View File
@@ -1,8 +1,8 @@
/// Video transcode quality presets modeled on Plex Web's custom-quality table.
///
/// When a non-[original] preset is selected, playback goes through Plex's
/// `/video/:/transcode/universal/decision` + `start` flow. [original] bypasses
/// transcoding entirely and uses the direct-play URL.
/// When a non-[original] preset is selected, playback asks the active backend
/// for a capped transcode stream. [original] bypasses transcoding entirely and
/// uses the direct-play URL.
enum TranscodeQualityPreset {
original(null, null, null),
p240_320(320, '420x240', 30),
+4 -4
View File
@@ -609,12 +609,12 @@ class VideoPlayerScreenState extends State<VideoPlayerScreen> with WidgetsBindin
throw StateError('No client registered for ${_currentMetadata.serverId}');
}
_streamHeaders = genericClient.streamHeaders;
// Single source of truth for showing quality controls. Plex uses a
// per-server probe; Jellyfin supports explicit quality selection but
// should not inherit the global Plex-style default on ordinary play.
// Single source of truth for showing quality controls and applying the
// saved startup quality. Backends that cannot transcode always start at
// Original even if the user picked a lower default quality.
_serverSupportsTranscoding = genericClient.capabilities.videoTranscoding;
if (widget.selectedQualityPreset == null) {
_selectedQualityPreset = genericClient.backend == MediaBackend.plex && _serverSupportsTranscoding
_selectedQualityPreset = _serverSupportsTranscoding
? settingsService.read(SettingsService.defaultQualityPreset)
: TranscodeQualityPreset.original;
} else {