mirror of
https://github.com/yattee/yattee.git
synced 2024-12-13 22:00:31 +05:30
Extend available streams formats list to AVPlayer
This commit is contained in:
parent
7b2dd75f2d
commit
256bbd52a7
@ -83,13 +83,18 @@ final class AVPlayerBackend: PlayerBackend {
|
|||||||
playerLayer.player = avPlayer
|
playerLayer.player = avPlayer
|
||||||
}
|
}
|
||||||
|
|
||||||
func bestPlayable(_ streams: [Stream], maxResolution _: ResolutionSetting) -> Stream? {
|
func bestPlayable(_ streams: [Stream], maxResolution: ResolutionSetting) -> Stream? {
|
||||||
streams.first { $0.kind == .hls } ??
|
let sortedByResolution = streams
|
||||||
streams.max { $0.resolution < $1.resolution }
|
.filter { ($0.kind == .adaptive || $0.kind == .stream) && $0.resolution <= maxResolution.value }
|
||||||
|
.sorted { $0.resolution > $1.resolution }
|
||||||
|
|
||||||
|
return streams.first { $0.kind == .hls } ??
|
||||||
|
sortedByResolution.first { $0.kind == .stream } ??
|
||||||
|
sortedByResolution.first
|
||||||
}
|
}
|
||||||
|
|
||||||
func canPlay(_ stream: Stream) -> Bool {
|
func canPlay(_ stream: Stream) -> Bool {
|
||||||
stream.kind == .hls || (stream.kind == .stream && stream.resolution.height <= 720)
|
stream.kind == .hls || stream.kind == .stream || (stream.kind == .adaptive && stream.format == .mp4)
|
||||||
}
|
}
|
||||||
|
|
||||||
func playStream(
|
func playStream(
|
||||||
|
@ -59,7 +59,7 @@ class Stream: Equatable, Hashable, Identifiable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static func < (lhs: Resolution, rhs: Resolution) -> Bool {
|
static func < (lhs: Resolution, rhs: Resolution) -> Bool {
|
||||||
lhs.height < rhs.height
|
lhs.height == rhs.height ? (lhs.refreshRate < rhs.refreshRate) : (lhs.height < rhs.height)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ struct QualityProfileForm: View {
|
|||||||
func isFormatDisabled(_ format: QualityProfile.Format) -> Bool {
|
func isFormatDisabled(_ format: QualityProfile.Format) -> Bool {
|
||||||
guard backend == .appleAVPlayer else { return false }
|
guard backend == .appleAVPlayer else { return false }
|
||||||
|
|
||||||
let avPlayerFormats = [QualityProfile.Format.hls, .stream]
|
let avPlayerFormats = [QualityProfile.Format.hls, .stream, .mp4]
|
||||||
|
|
||||||
return !avPlayerFormats.contains(format)
|
return !avPlayerFormats.contains(format)
|
||||||
}
|
}
|
||||||
@ -276,7 +276,7 @@ struct QualityProfileForm: View {
|
|||||||
func isResolutionDisabled(_ resolution: ResolutionSetting) -> Bool {
|
func isResolutionDisabled(_ resolution: ResolutionSetting) -> Bool {
|
||||||
guard backend == .appleAVPlayer else { return false }
|
guard backend == .appleAVPlayer else { return false }
|
||||||
|
|
||||||
return resolution.value.height > 720
|
return resolution.value > .hd720p30
|
||||||
}
|
}
|
||||||
|
|
||||||
func initializeForm() {
|
func initializeForm() {
|
||||||
|
Loading…
Reference in New Issue
Block a user