import Foundation /// Was bei der Wiedergabe erlaubt ist. /// /// Das ist die Stellschraube, an der Phase 2 andockt: heute steht /// `allowsTranscoding` auf `false` und der Decider kommt zwangsläufig immer /// bei DirectPlay heraus. Sobald der Transcoder steht, wird hier umgelegt — /// die Views merken davon nichts. public struct PlaybackPolicy: Sendable, Equatable { /// Darf der Server umrechnen? public var allowsTranscoding: Bool /// Darf VLCKit einspringen? public var allowsFallbackEngine: Bool /// Obergrenze in Kilobit pro Sekunde. `nil` heißt unbegrenzt — der /// Normalfall im heimischen WLAN. public var maximumBitrate: Int? /// Umrechnen, auch wenn die Datei die Grenze gar nicht überschreitet. /// /// Für die Wahl im Player. Ohne das verpuffte sie: wer für eine /// 8-Mbit-Datei „12 Mbit" wählt, bekam DirectPlay, weil die Datei ja /// unter der Grenze liegt — die Wahl blieb folgenlos. Gemeint ist aber /// „rechne es mir auf diese Stufe um". public var forcesTranscoding: Bool public init( allowsTranscoding: Bool, allowsFallbackEngine: Bool = true, maximumBitrate: Int? = nil, forcesTranscoding: Bool = false ) { self.allowsTranscoding = allowsTranscoding self.allowsFallbackEngine = allowsFallbackEngine self.maximumBitrate = maximumBitrate self.forcesTranscoding = forcesTranscoding } /// Phase 1: alles direkt, nichts umrechnen. public static let directPlayOnly = PlaybackPolicy(allowsTranscoding: false) }