Memorize playback rate

This commit is contained in:
Rasmus Krämer 2022-03-09 22:10:15 +01:00
parent f76128c2b3
commit 926c17543f

View file

@ -22,6 +22,7 @@ class AudioPlayer: NSObject {
// enums and @objc are not compatible // enums and @objc are not compatible
@objc dynamic var status: Int @objc dynamic var status: Int
@objc dynamic var rate: Float @objc dynamic var rate: Float
private var tmpRate: Float = 1.0
private var playerContext = 0 private var playerContext = 0
private var playerItemContext = 0 private var playerItemContext = 0
@ -71,7 +72,10 @@ class AudioPlayer: NSObject {
public func play() { public func play() {
self.audioPlayer.play() self.audioPlayer.play()
self.status = 1 self.status = 1
self.rate = 1.0 self.rate = self.tmpRate
self.audioPlayer.rate = self.tmpRate
print("oof", self.rate, self.tmpRate)
updateNowPlaying() updateNowPlaying()
} }
@ -97,10 +101,17 @@ class AudioPlayer: NSObject {
self.updateNowPlaying() self.updateNowPlaying()
} }
} }
public func setPlaybackRate(_ rate: Float) {
if(self.audioPlayer.rate != rate) { public func setPlaybackRate(_ rate: Float, observed: Bool = false) {
if self.audioPlayer.rate != rate {
self.audioPlayer.rate = rate self.audioPlayer.rate = rate
} }
if rate > 0.0 && !(observed && rate == 1) {
print("yikes", self.rate, self.tmpRate)
self.tmpRate = rate
}
self.rate = rate self.rate = rate
self.updateNowPlaying() self.updateNowPlaying()
@ -245,7 +256,7 @@ class AudioPlayer: NSObject {
} }
} else if context == &playerContext { } else if context == &playerContext {
if keyPath == #keyPath(AVPlayer.rate) { if keyPath == #keyPath(AVPlayer.rate) {
setPlaybackRate(change?[.newKey] as? Float ?? 1.0) setPlaybackRate(change?[.newKey] as? Float ?? 1.0, observed: true)
} else if keyPath == #keyPath(AVPlayer.currentItem) { } else if keyPath == #keyPath(AVPlayer.currentItem) {
NSLog("WARNING: Item ended") NSLog("WARNING: Item ended")
} }