@@ -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).
|
||||
///
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user