mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 21:38:15 +00:00
52 lines
1.7 KiB
Swift
52 lines
1.7 KiB
Swift
import UIKit
|
|
|
|
protocol NativePlaybackBackend: AnyObject {
|
|
var view: UIView { get }
|
|
var onReady: (() -> Void)? { get set }
|
|
var onFailure: ((Error) -> Void)? { get set }
|
|
var onStateChange: (() -> Void)? { get set }
|
|
var onSubtitleTracksChange: (() -> Void)? { get set }
|
|
var onAudioTracksChange: (() -> Void)? { get set }
|
|
var isPlaying: Bool { get }
|
|
var isSeekable: Bool { get }
|
|
var duration: TimeInterval { get }
|
|
var currentTime: TimeInterval { get }
|
|
var remainingTime: TimeInterval { get }
|
|
var position: Float { get }
|
|
var audioTracks: [AudioTrack] { get }
|
|
var selectedAudioTrackID: Int32 { get }
|
|
var subtitleTracks: [SubtitleTrack] { get }
|
|
var selectedSubtitleTrackID: Int32 { get }
|
|
var subtitleDelay: TimeInterval { get }
|
|
|
|
func prepare(in viewController: UIViewController)
|
|
func play(request: NativePlaybackRequest)
|
|
func play()
|
|
func pause()
|
|
func togglePlayPause()
|
|
func seek(to position: Float)
|
|
func jump(by seconds: TimeInterval)
|
|
func selectAudioTrack(id: Int32)
|
|
func selectSubtitleTrack(id: Int32)
|
|
func adjustSubtitleDelay(by seconds: TimeInterval)
|
|
@discardableResult
|
|
func addSubtitleCandidates(_ candidates: [SubtitleCandidate]) -> Int
|
|
func stop()
|
|
}
|
|
|
|
enum NativePlaybackError: LocalizedError {
|
|
case backendUnavailable
|
|
case startupTimedOut
|
|
case playbackFailed
|
|
|
|
var errorDescription: String? {
|
|
switch self {
|
|
case .backendUnavailable:
|
|
return "Native playback is not available in this build."
|
|
case .startupTimedOut:
|
|
return "Native playback did not start before the timeout."
|
|
case .playbackFailed:
|
|
return "VLC reported a playback error for this stream."
|
|
}
|
|
}
|
|
}
|