import Foundation /// Was der `PlaybackDecider` über eine Datei wissen muss — und nicht mehr. /// /// Vorher nahm er die Plex-Modelle entgegen und las daraus sechs Felder. /// Das band die Entscheidung an einen bestimmten Server, obwohl an ihr nichts /// serverspezifisch ist: ob iOS eine Datei öffnen kann, hängt an Container und /// Codecs, nicht daran, wer sie ausliefert. /// /// Wie ernst die Kopplung war, zeigt der Player selbst: für die /// Offline-Wiedergabe baute er sich **erfundene** Plex-Werte zusammen, nur um /// diese Signatur zu bedienen — für eine Datei, die längst auf dem Gerät lag /// und mit Plex nichts mehr zu tun hatte. public struct MediaProfile: Sendable, Equatable { /// Der Behälter, etwa `mkv` oder `mp4`. public let container: String? public let videoCodec: String? /// Der Codec der Tonspur, die tatsächlich klingen soll. /// /// Nicht irgendeiner: eine Datei mit deutschem AAC und englischem DTS ist /// für AVPlayer in Ordnung, solange Deutsch gewählt ist. public let audioCodec: String? /// Gesamtbitrate in Kilobit je Sekunde. public let bitrate: Int? /// Ob der Server die Datei überhaupt schon untersucht hat. /// /// Ohne bekannte Spuren lässt sich nichts entscheiden — dann ist der /// Ersatzplayer die sichere Wahl. public let hasKnownStreams: Bool public init( container: String? = nil, videoCodec: String? = nil, audioCodec: String? = nil, bitrate: Int? = nil, hasKnownStreams: Bool = true ) { self.container = container self.videoCodec = videoCodec self.audioCodec = audioCodec self.bitrate = bitrate self.hasKnownStreams = hasKnownStreams } }