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