Playback state improvements

This commit is contained in:
Arkadiusz Fal
2021-08-23 23:31:51 +02:00
parent f80b61f9c7
commit 151121aa31
11 changed files with 55 additions and 27 deletions

View File

@@ -22,4 +22,9 @@ final class PlaybackState: ObservableObject {
return size.width / size.height
}
func reset() {
stream = nil
time = nil
}
}

View File

@@ -19,14 +19,14 @@ final class PlayerState: ObservableObject {
private(set) var currentRate: Float = 0.0
static let availableRates: [Double] = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
var playbackState: PlaybackState?
var playbackState: PlaybackState
var timeObserver: Any?
let maxResolution: Stream.Resolution?
var playingOutsideViewController = false
init(_ video: Video? = nil, playbackState: PlaybackState? = nil, maxResolution: Stream.Resolution? = nil) {
init(_ video: Video? = nil, playbackState: PlaybackState, maxResolution: Stream.Resolution? = nil) {
self.video = video
self.playbackState = playbackState
self.maxResolution = maxResolution
@@ -41,6 +41,8 @@ final class PlayerState: ObservableObject {
return
}
playbackState.reset()
loadExtendedVideoDetails(video) { video in
self.video = video
self.playVideo(video)
@@ -98,12 +100,16 @@ final class PlayerState: ObservableObject {
}
fileprivate func playStream(_ stream: Stream) {
guard player != nil else {
return
}
logger.warning("loading \(stream.description) to player")
DispatchQueue.main.async {
self.saveTime()
self.player?.replaceCurrentItem(with: self.playerItemWithMetadata(for: stream))
self.playbackState?.stream = stream
self.playbackState.stream = stream
if self.timeObserver == nil {
self.addTimeObserver()
}
@@ -259,7 +265,7 @@ final class PlayerState: ObservableObject {
self.player.rate = self.currentRate
}
self.playbackState?.time = self.player.currentTime()
self.playbackState.time = self.player.currentTime()
}
}