1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-13 05:40:32 +05:30

Extend available streams formats list to AVPlayer

This commit is contained in:
Arkadiusz Fal 2022-08-22 19:03:49 +02:00
parent 7b2dd75f2d
commit 256bbd52a7
3 changed files with 12 additions and 7 deletions

View File

@ -83,13 +83,18 @@ final class AVPlayerBackend: PlayerBackend {
playerLayer.player = avPlayer
}
func bestPlayable(_ streams: [Stream], maxResolution _: ResolutionSetting) -> Stream? {
streams.first { $0.kind == .hls } ??
streams.max { $0.resolution < $1.resolution }
func bestPlayable(_ streams: [Stream], maxResolution: ResolutionSetting) -> Stream? {
let sortedByResolution = streams
.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 {
stream.kind == .hls || (stream.kind == .stream && stream.resolution.height <= 720)
stream.kind == .hls || stream.kind == .stream || (stream.kind == .adaptive && stream.format == .mp4)
}
func playStream(

View File

@ -59,7 +59,7 @@ class Stream: Equatable, Hashable, Identifiable {
}
static func < (lhs: Resolution, rhs: Resolution) -> Bool {
lhs.height < rhs.height
lhs.height == rhs.height ? (lhs.refreshRate < rhs.refreshRate) : (lhs.height < rhs.height)
}
}

View File

@ -268,7 +268,7 @@ struct QualityProfileForm: View {
func isFormatDisabled(_ format: QualityProfile.Format) -> Bool {
guard backend == .appleAVPlayer else { return false }
let avPlayerFormats = [QualityProfile.Format.hls, .stream]
let avPlayerFormats = [QualityProfile.Format.hls, .stream, .mp4]
return !avPlayerFormats.contains(format)
}
@ -276,7 +276,7 @@ struct QualityProfileForm: View {
func isResolutionDisabled(_ resolution: ResolutionSetting) -> Bool {
guard backend == .appleAVPlayer else { return false }
return resolution.value.height > 720
return resolution.value > .hd720p30
}
func initializeForm() {