Add Allow Software-Decoded Formats playback setting

Lets the auto stream selector pick formats whose codec isn't hardware
decoded on the current device. Defaults off; when on, 4K VP9/AV1 can be
auto-selected on Apple TV models without those decoders. Software-decoded
streams also move into the Recommended section so the selection stays
visible without enabling advanced stream details.
This commit is contained in:
Arkadiusz Fal
2026-05-07 18:00:14 +02:00
parent 823faee012
commit 16477641ab
8 changed files with 70 additions and 7 deletions

View File

@@ -92,17 +92,21 @@ extension QualitySelectorView {
}
/// 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
if stream.url.isFileURL { return true }
if stream.isMuxed { return true }
if allowSoftwareDecodedFormats { 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] {
videoStreams.filter { (stream: Stream) -> Bool in
if allowSoftwareDecodedFormats { return [] }
return videoStreams.filter { (stream: Stream) -> Bool in
if stream.url.isFileURL { return false }
if stream.isMuxed { return false }
return requiresSoftwareDecode(stream.videoCodec)

View File

@@ -71,6 +71,12 @@ 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
}
// MARK: - Computed Properties
/// Available tabs based on streams