mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-01-15 23:59:08 +00:00
used better names
This commit is contained in:
@@ -4,17 +4,17 @@ import CoreMedia
|
||||
import CoreVideo
|
||||
import AVFoundation
|
||||
|
||||
protocol MPVSoftwareRendererDelegate: AnyObject {
|
||||
func renderer(_ renderer: MPVSoftwareRenderer, didUpdatePosition position: Double, duration: Double)
|
||||
func renderer(_ renderer: MPVSoftwareRenderer, didChangePause isPaused: Bool)
|
||||
func renderer(_ renderer: MPVSoftwareRenderer, didChangeLoading isLoading: Bool)
|
||||
func renderer(_ renderer: MPVSoftwareRenderer, didBecomeReadyToSeek: Bool)
|
||||
func renderer(_ renderer: MPVSoftwareRenderer, didBecomeTracksReady: Bool)
|
||||
protocol MPVLayerRendererDelegate: AnyObject {
|
||||
func renderer(_ renderer: MPVLayerRenderer, didUpdatePosition position: Double, duration: Double)
|
||||
func renderer(_ renderer: MPVLayerRenderer, didChangePause isPaused: Bool)
|
||||
func renderer(_ renderer: MPVLayerRenderer, didChangeLoading isLoading: Bool)
|
||||
func renderer(_ renderer: MPVLayerRenderer, didBecomeReadyToSeek: Bool)
|
||||
func renderer(_ renderer: MPVLayerRenderer, didBecomeTracksReady: Bool)
|
||||
}
|
||||
|
||||
/// MPV player using vo_avfoundation for video output.
|
||||
/// This renders video directly to AVSampleBufferDisplayLayer for PiP support.
|
||||
final class MPVSoftwareRenderer {
|
||||
final class MPVLayerRenderer {
|
||||
enum RendererError: Error {
|
||||
case mpvCreationFailed
|
||||
case mpvInitialization(Int32)
|
||||
@@ -36,7 +36,7 @@ final class MPVSoftwareRenderer {
|
||||
private var isRunning = false
|
||||
private var isStopping = false
|
||||
|
||||
weak var delegate: MPVSoftwareRendererDelegate?
|
||||
weak var delegate: MPVLayerRendererDelegate?
|
||||
|
||||
// Thread-safe state for playback
|
||||
private var _cachedDuration: Double = 0
|
||||
@@ -132,7 +132,7 @@ final class MPVSoftwareRenderer {
|
||||
// Setup wakeup callback
|
||||
mpv_set_wakeup_callback(handle, { ctx in
|
||||
guard let ctx = ctx else { return }
|
||||
let instance = Unmanaged<MPVSoftwareRenderer>.fromOpaque(ctx).takeUnretainedValue()
|
||||
let instance = Unmanaged<MPVLayerRenderer>.fromOpaque(ctx).takeUnretainedValue()
|
||||
instance.processEvents()
|
||||
}, Unmanaged.passUnretained(self).toOpaque())
|
||||
|
||||
@@ -38,7 +38,7 @@ struct VideoLoadConfig {
|
||||
// to apply the proper styling (e.g. border radius and shadows).
|
||||
class MpvPlayerView: ExpoView {
|
||||
private let displayLayer = AVSampleBufferDisplayLayer()
|
||||
private var renderer: MPVSoftwareRenderer?
|
||||
private var renderer: MPVLayerRenderer?
|
||||
private var videoContainer: UIView!
|
||||
private var pipController: PiPController?
|
||||
|
||||
@@ -83,7 +83,7 @@ class MpvPlayerView: ExpoView {
|
||||
videoContainer.bottomAnchor.constraint(equalTo: bottomAnchor)
|
||||
])
|
||||
|
||||
renderer = MPVSoftwareRenderer(displayLayer: displayLayer)
|
||||
renderer = MPVLayerRenderer(displayLayer: displayLayer)
|
||||
renderer?.delegate = self
|
||||
|
||||
// Setup PiP
|
||||
@@ -276,10 +276,10 @@ class MpvPlayerView: ExpoView {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - MPVSoftwareRendererDelegate
|
||||
// MARK: - MPVLayerRendererDelegate
|
||||
|
||||
extension MpvPlayerView: MPVSoftwareRendererDelegate {
|
||||
func renderer(_: MPVSoftwareRenderer, didUpdatePosition position: Double, duration: Double) {
|
||||
extension MpvPlayerView: MPVLayerRendererDelegate {
|
||||
func renderer(_: MPVLayerRenderer, didUpdatePosition position: Double, duration: Double) {
|
||||
cachedPosition = position
|
||||
cachedDuration = duration
|
||||
|
||||
@@ -298,7 +298,7 @@ extension MpvPlayerView: MPVSoftwareRendererDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func renderer(_: MPVSoftwareRenderer, didChangePause isPaused: Bool) {
|
||||
func renderer(_: MPVLayerRenderer, didChangePause isPaused: Bool) {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else { return }
|
||||
// Don't update intendedPlayState here - it's only set by user actions (play/pause)
|
||||
@@ -314,7 +314,7 @@ extension MpvPlayerView: MPVSoftwareRendererDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func renderer(_: MPVSoftwareRenderer, didChangeLoading isLoading: Bool) {
|
||||
func renderer(_: MPVLayerRenderer, didChangeLoading isLoading: Bool) {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else { return }
|
||||
self.onPlaybackStateChange([
|
||||
@@ -323,7 +323,7 @@ extension MpvPlayerView: MPVSoftwareRendererDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func renderer(_: MPVSoftwareRenderer, didBecomeReadyToSeek: Bool) {
|
||||
func renderer(_: MPVLayerRenderer, didBecomeReadyToSeek: Bool) {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else { return }
|
||||
self.onPlaybackStateChange([
|
||||
@@ -332,7 +332,7 @@ extension MpvPlayerView: MPVSoftwareRendererDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func renderer(_: MPVSoftwareRenderer, didBecomeTracksReady: Bool) {
|
||||
func renderer(_: MPVLayerRenderer, didBecomeTracksReady: Bool) {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else { return }
|
||||
self.onTracksReady([:])
|
||||
|
||||
Reference in New Issue
Block a user