Add "Always use AVPlayer for live videos" option

This commit is contained in:
Arkadiusz Fal
2022-08-22 23:14:27 +02:00
parent e4c6fd8c9e
commit 868883dc45
3 changed files with 20 additions and 7 deletions

View File

@@ -158,6 +158,7 @@ final class PlayerModel: ObservableObject {
}}
@Default(.qualityProfiles) var qualityProfiles
@Default(.forceAVPlayerForLiveStreams) var forceAVPlayerForLiveStreams
@Default(.pauseOnHidingPlayer) private var pauseOnHidingPlayer
@Default(.closePiPOnNavigation) var closePiPOnNavigation
@Default(.closePiPOnOpeningPlayer) var closePiPOnOpeningPlayer
@@ -344,9 +345,10 @@ final class PlayerModel: ObservableObject {
var changeBackendHandler: (() -> Void)?
if let backend = qualityProfile?.backend ?? QualityProfilesModel.shared.automaticProfile?.backend,
activeBackend != backend,
backend == .appleAVPlayer || !avPlayerBackend.startPictureInPictureOnPlay
if let backend = (live && forceAVPlayerForLiveStreams) ? PlayerBackendType.appleAVPlayer :
(qualityProfile?.backend ?? QualityProfilesModel.shared.automaticProfile?.backend),
activeBackend != backend,
backend == .appleAVPlayer || !avPlayerBackend.startPictureInPictureOnPlay
{
changeBackendHandler = { [weak self] in
guard let self = self else { return }
@@ -446,10 +448,11 @@ final class PlayerModel: ObservableObject {
return
}
if let qualityProfileBackend = qualityProfile?.backend, qualityProfileBackend != activeBackend,
qualityProfileBackend == .appleAVPlayer || !(avPlayerBackend.startPictureInPictureOnPlay || playingInPictureInPicture)
if let backend = (live && forceAVPlayerForLiveStreams) ? PlayerBackendType.appleAVPlayer : qualityProfile?.backend,
backend != activeBackend,
backend == .appleAVPlayer || !(avPlayerBackend.startPictureInPictureOnPlay || playingInPictureInPicture)
{
changeActiveBackend(from: activeBackend, to: qualityProfileBackend)
changeActiveBackend(from: activeBackend, to: backend)
}
guard let stream = streamByQualityProfile else {
@@ -502,6 +505,8 @@ final class PlayerModel: ObservableObject {
return
}
logger.info("changing backend from \(from.rawValue) to \(to.rawValue)")
pause()
if to == .mpv {