diff --git a/Yattee/Core/Settings/SettingsManager+Playback.swift b/Yattee/Core/Settings/SettingsManager+Playback.swift index c20c5e82..11c5e735 100644 --- a/Yattee/Core/Settings/SettingsManager+Playback.swift +++ b/Yattee/Core/Settings/SettingsManager+Playback.swift @@ -75,9 +75,6 @@ extension SettingsManager { } } - /// When enabled, the auto stream selector will consider video formats whose codec - /// is not hardware-decodable on this device. Disabled by default. Useful on Apple TV - /// where 4K VP9/AV1 is otherwise excluded from auto-selection. var allowSoftwareDecodedFormats: Bool { get { if let cached = _allowSoftwareDecodedFormats { return cached } diff --git a/Yattee/Services/Player/PlayerService.swift b/Yattee/Services/Player/PlayerService.swift index 6815c44e..510fa631 100644 --- a/Yattee/Services/Player/PlayerService.swift +++ b/Yattee/Services/Player/PlayerService.swift @@ -1907,11 +1907,9 @@ final class PlayerService { } // Filter out codecs with priority 0 (software decode) if hardware options exist, - // unless the user opted in to software-decoded formats (e.g. to unlock 4K VP9/AV1 - // on Apple TV models without hardware decoders for those codecs). - let allowSoftware = settingsManager?.allowSoftwareDecodedFormats ?? false + // unless the user opted in to software-decoded formats. let streamsToConsider: [Stream] - if allowSoftware { + if settingsManager?.allowSoftwareDecodedFormats ?? false { streamsToConsider = filteredVideoStreams } else { let hardwareDecodableStreams = filteredVideoStreams.filter { videoCodecPriority($0.videoCodec) > 0 } diff --git a/Yattee/Views/Player/QualitySelectorView+StreamHelpers.swift b/Yattee/Views/Player/QualitySelectorView+StreamHelpers.swift index 02a79dd4..c342f159 100644 --- a/Yattee/Views/Player/QualitySelectorView+StreamHelpers.swift +++ b/Yattee/Views/Player/QualitySelectorView+StreamHelpers.swift @@ -91,19 +91,16 @@ extension QualitySelectorView { return downloadedStreams + onlineVideoStreams } - /// Recommended video streams (hardware-decodable codecs). - /// When `allowSoftwareDecodedFormats` is ON, all video streams are considered recommended. var recommendedVideoStreams: [Stream] { - videoStreams.filter { (stream: Stream) -> Bool in + let allowSoftware = allowSoftwareDecodedFormats + return videoStreams.filter { (stream: Stream) -> Bool in if stream.url.isFileURL { return true } if stream.isMuxed { return true } - if allowSoftwareDecodedFormats { return true } + if allowSoftware { return true } return !requiresSoftwareDecode(stream.videoCodec) } } - /// Other video streams (software decode required). - /// Empty when `allowSoftwareDecodedFormats` is ON — those streams are now recommended. var otherVideoStreams: [Stream] { if allowSoftwareDecodedFormats { return [] } return videoStreams.filter { (stream: Stream) -> Bool in diff --git a/Yattee/Views/Player/QualitySelectorView.swift b/Yattee/Views/Player/QualitySelectorView.swift index 7e72cbc8..9cd058d5 100644 --- a/Yattee/Views/Player/QualitySelectorView.swift +++ b/Yattee/Views/Player/QualitySelectorView.swift @@ -71,8 +71,6 @@ struct QualitySelectorView: View { appEnvironment?.settingsManager.showAdvancedStreamDetails ?? false } - /// Whether the user has opted in to software-decoded formats during auto-selection. - /// When enabled, software-decoded streams are treated as recommended (no split). var allowSoftwareDecodedFormats: Bool { appEnvironment?.settingsManager.allowSoftwareDecodedFormats ?? false }