Refactor AudioPlayer to use an AudioPlayerRateManager protocol for managing rate/defaultRate state management. Implements a LegacyAudioPlayerRateManager implementation with existing (pre-iOS 16) behavior.

This commit is contained in:
Marke Hallowell 2024-04-14 11:45:03 -07:00
parent bcb239efd1
commit edb25f5bcd
5 changed files with 121 additions and 36 deletions

View file

@ -0,0 +1,23 @@
//
// AudioPlayerRateManager.swift
// Audiobookshelf
//
// Created by Marke Hallowell on 4/14/24.
//
import Foundation
import AVFoundation
protocol AudioPlayerRateManager {
var rate: Float { get }
var defaultRate: Float { get }
var rateChangedCompletion: () -> Void { get set }
var defaultRateChangedCompletion: () -> Void { get set }
init(audioPlayer: AVPlayer, defaultRate: Float)
func setPlaybackRate(_ rate: Float)
// Callback for play events (e.g. LegacyAudioPlayerRateManager uses this set rate immediately after playback resumes)
func handlePlayEvent() -> Void
}