Changing playback speed, shader preset, aspect ratio, or a sync offset in the player always rewrote the global default, so a show watched at 1.5x forced 1.5x onto movies, an Anime4K pick followed the user into live-action libraries, and a file-specific subtitle offset leaked onto the next title. Each of those settings now has a scope under Settings > Video Playback > Remember Player Changes: don't save, everywhere (default, pre-existing behavior), per library, or per show/movie. Player writes route through the configured scope; playback start and in-place item changes resolve the value for the current item, falling back to the global default. Items without the needed identity (live TV placeholders, Jellyfin/Emby downloads without a stamped library) keep the global behavior. Resolution consults only the configured scope, so entries saved under a previous scope become inert instead of shadowing the new one. close #1984 close #1322 close #1616
22 lines
768 B
Dart
22 lines
768 B
Dart
/// Where a player-sheet change (playback speed, shader preset, aspect ratio,
|
|
/// sync offsets) is persisted and re-applied from.
|
|
///
|
|
/// The scope governs writes: a change made during playback is stored at the
|
|
/// configured scope. Resolution at playback start consults only the configured
|
|
/// scope's entry for the current item, then falls back to the global pref, so
|
|
/// values saved under a previously configured scope become inert rather than
|
|
/// shadowing the current regime.
|
|
enum PlayerSettingScope {
|
|
/// Never persist: the change applies for the session only.
|
|
off,
|
|
|
|
/// One value everywhere (the pre-existing behavior).
|
|
global,
|
|
|
|
/// One value per library (e.g. Anime4K for an anime library).
|
|
library,
|
|
|
|
/// One value per show or movie.
|
|
title,
|
|
}
|