Build Information
Successful build of KSPlayer, reference 2.3.4 (bdfa2d
), with Swift 6.0 for macOS (SPM) on 20 Feb 2025 16:43:41 UTC.
Swift 6 data race errors: 135
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
| |- note: convert 'audioPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:86:16: warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
| |- warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'videoPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'videoPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:164:28: warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
162 | self.videoOutput?.play()
163 | }
164 | self.delegate?.changeLoadState(player: self)
| `- warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
165 | }
166 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:110:10: note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
110 | func changeLoadState(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:213:23: warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
211 | CMTimebaseSetTime(controlTimebase, time: CMTimeMake(value: Int64(options.startPlayTime), timescale: 1))
212 | }
213 | delegate?.readyToPlay(player: self)
| `- warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
214 | }
215 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:109:10: note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
107 | @MainActor
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
110 | func changeLoadState(player: some MediaPlayerProtocol)
111 | // 缓冲加载进度,0-100
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:220:28: warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
218 | runOnMainThread { [weak self] in
219 | guard let self else { return }
220 | self.delegate?.finish(player: self, error: error)
| `- warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
221 | }
222 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:114:10: note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
| `- note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
115 | }
116 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:229:32: warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
227 | if self.options.isLoopPlay {
228 | self.loopCount += 1
229 | self.delegate?.playBack(player: self, loopCount: self.loopCount)
| `- warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
230 | self.audioOutput.play()
231 | self.videoOutput?.play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:113:10: note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
| `- note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:84:16: warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
82 | static var enableSensor = true
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
| |- warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'isClearVideoWhereReplace' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'isClearVideoWhereReplace' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:563:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
561 | self.bufferingCountDownTimer = nil
562 | self.bufferingCountDownTimer = Timer(timeInterval: countDown, repeats: false) { _ in
563 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
564 | }
565 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:94:24: warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
92 | }
93 |
94 | private static var onceInitial: Void = {
| |- warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'onceInitial' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'onceInitial' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
95 | var result = avformat_network_init()
96 | av_log_set_callback { ptr, level, format, args in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:16:17: warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
14 | public final class MEPlayerItem: Sendable {
15 | private let url: URL
16 | private let options: KSOptions
| `- warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:17:12: note: class 'KSOptions' does not conform to the 'Sendable' protocol
15 | import UIKit
16 | #endif
17 | open class KSOptions {
| `- note: class 'KSOptions' does not conform to the 'Sendable' protocol
18 | /// 最低缓存视频时间
19 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:19:17: warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
19 | private var formatCtx: UnsafeMutablePointer<AVFormatContext>?
| `- warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
20 | private var outputFormatCtx: UnsafeMutablePointer<AVFormatContext>?
21 | private var outputPacket: UnsafeMutablePointer<AVPacket>?
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:83:16: warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
83 | static var stackSize = 65536
| |- warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'stackSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'stackSize' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:441:21: warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
439 | let flags = seekByBytes ? AVSEEK_FLAG_BYTE : 0
440 | let seekStartTime = CACurrentMediaTime()
441 | let result = avformat_seek_file(formatCtx, -1, Int64.min, timestamp.value, Int64.max, flags)
| `- warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
442 | audioClock.time = timestamp
443 | videoClock.time = timestamp
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:507:52: warning: reference to captured var 'result' in concurrently-executing code
505 | DispatchQueue.main.async { [weak self] in
506 | guard let self else { return }
507 | self.seekingCompletionHandler?(result >= 0)
| `- warning: reference to captured var 'result' in concurrently-executing code
508 | self.seekingCompletionHandler = nil
509 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:290:23: warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
288 | public static var textItalic = false
289 | public static var textPosition = TextPosition()
290 | public static var audioRecognizes = [any AudioRecognize]()
| |- warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'audioRecognizes' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioRecognizes' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
291 | private var subtitleDataSouces: [SubtitleDataSouce] = KSOptions.subtitleDataSouces
292 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItemTrack.swift:223:23: warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
177 | }
178 |
179 | final class AsyncPlayerItemTrack<Frame: MEFrame>: SyncPlayerItemTrack<Frame> {
| `- note: generic class 'AsyncPlayerItemTrack' does not conform to the 'Sendable' protocol
180 | private let operationQueue = OperationQueue()
181 | private var decodeOperation: BlockOperation!
:
221 | guard operationQueue.operationCount == 0 else { return }
222 | decodeOperation = BlockOperation { [weak self] in
223 | guard let self else { return }
| `- warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
224 | Thread.current.name = self.operationQueue.name
225 | Thread.current.stackSize = KSOptions.stackSize
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:479:16: warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
| |- warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'preferredFrame' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'preferredFrame' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
480 | static var useSystemHTTPProxy = true
481 | /// 日志级别
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:72:21: warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
17 |
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
| `- note: 'displayLayerDelegate' declared here
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
:
26 | }
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
| `- note: add '@preconcurrency' to the 'VideoOutput' conformance to defer isolation checking to run time
29 | public var displayLayer: AVSampleBufferDisplayLayer {
30 | displayView.displayLayer
:
70 |
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
| `- warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
73 | public init(options: KSOptions) {
74 | self.options = options
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:62:16: warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
| `- note: 'options' declared here
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
:
60 | private var displayLink: CADisplayLink!
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
| `- warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
63 | public weak var renderSource: OutputRenderSourceDelegate?
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:29:16: warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
| `- note: 'displayLayer' declared here
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
:
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
29 | public var displayLayer: AVSampleBufferDisplayLayer {
| `- warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
30 | displayView.displayLayer
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:56:29: warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
| `- note: 'pixelBuffer' declared here
23 | init(options: KSOptions)
24 | func invalidate()
:
54 | }
55 |
56 | public private(set) var pixelBuffer: PixelBufferProtocol?
| `- warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
57 | /// 用displayLink会导致锁屏无法draw,
58 | /// 用DispatchSourceTimer的话,在播放4k视频的时候repeat的时间会变长,
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:73:12: warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
| `- note: mark the protocol requirement 'init(options:)' 'async' to allow actor-isolated conformances
24 | func invalidate()
25 | func readNextFrame()
:
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
73 | public init(options: KSOptions) {
| |- warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'init(options:)' to make this initializer not isolated to the actor
74 | self.options = options
75 | super.init(frame: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:153:17: warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
24 | func invalidate()
| `- note: mark the protocol requirement 'invalidate()' 'async' to allow actor-isolated conformances
25 | func readNextFrame()
26 | }
:
151 | }
152 |
153 | public func invalidate() {
| |- warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'invalidate()' to make this instance method not isolated to the actor
154 | displayLink.invalidate()
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:157:17: warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
23 | init(options: KSOptions)
24 | func invalidate()
25 | func readNextFrame()
| `- note: mark the protocol requirement 'readNextFrame()' 'async' to allow actor-isolated conformances
26 | }
27 |
:
155 | }
156 |
157 | public func readNextFrame() {
| |- warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'readNextFrame()' to make this instance method not isolated to the actor
158 | draw(force: true)
159 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:63:21: warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
63 | public weak var renderSource: OutputRenderSourceDelegate?
| `- warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
65 | var displayView = AVSampleBufferDisplayView() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:67:9: note: 'renderSource' declared here
65 |
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
| `- note: 'renderSource' declared here
68 | func pause()
69 | func flush()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:90:17: warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
88 | }
89 |
90 | public func pause() {
| |- warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'pause()' to make this instance method not isolated to the actor
91 | displayLink.isPaused = true
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:68:10: note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
| `- note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
69 | func flush()
70 | func play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:144:17: warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
142 | #endif
143 |
144 | public func flush() {
| |- warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'flush()' to make this instance method not isolated to the actor
145 | pixelBuffer = nil
146 | if displayView.isHidden {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:69:10: note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
69 | func flush()
| `- note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
70 | func play()
71 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:86:17: warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
84 | }
85 |
86 | public func play() {
| |- warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'play()' to make this instance method not isolated to the actor
87 | displayLink.isPaused = false
88 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:70:10: note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
68 | func pause()
69 | func flush()
70 | func play()
| `- note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
71 | }
72 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:15:16: warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
Metal.MTLDevice:2:17: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.11, *)
2 | public protocol MTLDevice : NSObjectProtocol {
| `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
3 | var name: String { get }
4 | @available(macOS 10.13, *)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
8 | import CoreVideo
9 | import Foundation
10 | import Metal
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
11 | import QuartzCore
12 | import simd
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| |- note: annotate 'device' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:415:23: warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
366 | import CoreVideo
367 |
368 | class CADisplayLink {
| `- note: class 'CADisplayLink' does not conform to the 'Sendable' protocol
369 | private let displayLink: CVDisplayLink
370 | private var runloop: RunLoop?
:
413 | self.displayLink = displayLink!
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
| `- warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
417 | return kCVReturnSuccess
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:416:53: warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
| `- warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
417 | return kCVReturnSuccess
418 | }
ObjectiveC.NSObject:2:12: note: class 'NSObject' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.0, *)
2 | open class NSObject : NSObjectProtocol {
| `- note: class 'NSObject' does not conform to the 'Sendable' protocol
3 | open class func load()
4 | open class func initialize()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
6 | //
7 |
8 | import AVFoundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
9 | import Combine
10 | import CoreMedia
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:427:13: warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
425 | self.displayLink = displayLink!
426 | CVDisplayLinkSetOutputHandler(self.displayLink) { _, _, _, _, _ in
427 | block()
| |- warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
428 | return kCVReturnSuccess
429 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:82:16: warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
80 | public extension KSOptions {
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
| |- warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableSensor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableSensor' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:87:16: warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
| |- warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'yadifMode' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'yadifMode' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
88 | static var deInterlaceAddIdet = false
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:88:16: warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
| |- warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'deInterlaceAddIdet' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'deInterlaceAddIdet' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
90 | switch ycbcrMatrix {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:178:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
175 | }
176 |
177 | public struct Timebase {
| `- note: consider making struct 'Timebase' conform to the 'Sendable' protocol
178 | static let defaultValue = Timebase(num: 1, den: 1)
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
179 | public let num: Int32
180 | public let den: Int32
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:494:28: warning: 'result' mutated after capture by sendable closure
492 | options.seekFlags &= ~AVSEEK_FLAG_BACKWARD
493 | seekFlags &= ~AVSEEK_FLAG_BACKWARD
494 | result = avformat_seek_file(formatCtx, -1, seekMin, timeStamp, seekMax, seekFlags)
| `- warning: 'result' mutated after capture by sendable closure
495 | }
496 | KSLog("seek to \(seekToTime) spend Time: \(CACurrentMediaTime() - seekStartTime)")
[55/61] Compiling KSPlayer MetalPlayView.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:26:27: warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
24 | oldValue?.invalidate()
25 | runOnMainThread {
26 | oldValue?.removeFromSuperview()
| `- warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
27 | }
28 | }
AppKit.NSView:44:26: note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
42 | open func didAddSubview(_ subview: NSView)
43 | open func willRemoveSubview(_ subview: NSView)
44 | @MainActor open func removeFromSuperview()
| `- note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
45 | open func replaceSubview(_ oldView: NSView, with newView: NSView)
46 | open func removeFromSuperviewWithoutNeedingDisplay()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:110:35: warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
108 | runOnMainThread { [weak self] in
109 | guard let self else { return }
110 | delegate?.finish(player: self, error: nil)
| `- warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
111 | }
112 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:114:10: note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
| `- note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
115 | }
116 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:429:16: warning: main actor-isolated property 'contentMode' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
289 | }
290 |
291 | extension KSMEPlayer: MediaPlayerProtocol {
| `- note: add '@preconcurrency' to the 'MediaPlayerProtocol' conformance to defer isolation checking to run time
292 | public var chapters: [Chapter] {
293 | playerItem.chapters
:
427 |
428 | @MainActor
429 | public var contentMode: UIViewContentMode {
| `- warning: main actor-isolated property 'contentMode' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
430 | get {
431 | view?.contentMode ?? .center
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:83:9: note: 'contentMode' declared here
81 | var playbackRate: Float { get set }
82 | var playbackVolume: Float { get set }
83 | var contentMode: UIViewContentMode { get set }
| `- note: 'contentMode' declared here
84 | var subtitleDataSouce: SubtitleDataSouce? { get }
85 | @available(macOS 12.0, iOS 15.0, tvOS 15.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:309:16: warning: main actor-isolated property 'naturalSize' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
307 |
308 | @MainActor
309 | public var naturalSize: CGSize {
| `- warning: main actor-isolated property 'naturalSize' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
310 | options.display == .plane ? playerItem.naturalSize : KSOptions.sceneSize
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:19:9: note: 'naturalSize' declared here
17 | var duration: TimeInterval { get }
18 | var fileSize: Double { get }
19 | var naturalSize: CGSize { get }
| `- note: 'naturalSize' declared here
20 | var chapters: [Chapter] { get }
21 | var currentPlaybackTime: TimeInterval { get }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:16:14: warning: non-final class 'KSMEPlayer' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
14 | #endif
15 |
16 | public class KSMEPlayer: NSObject {
| `- warning: non-final class 'KSMEPlayer' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
17 | private var loopCount = 1
18 | private var playerItem: MEPlayerItem
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:17:17: warning: stored property 'loopCount' of 'Sendable'-conforming class 'KSMEPlayer' is mutable; this is an error in the Swift 6 language mode
15 |
16 | public class KSMEPlayer: NSObject {
17 | private var loopCount = 1
| `- warning: stored property 'loopCount' of 'Sendable'-conforming class 'KSMEPlayer' is mutable; this is an error in the Swift 6 language mode
18 | private var playerItem: MEPlayerItem
19 | public let audioOutput: AudioOutput
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:35:27: warning: call to main actor-isolated instance method 'changeBuffering(player:progress:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
33 | runOnMainThread { [weak self] in
34 | guard let self else { return }
35 | delegate?.changeBuffering(player: self, progress: newValue)
| `- warning: call to main actor-isolated instance method 'changeBuffering(player:progress:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
36 | }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:112:10: note: calls to instance method 'changeBuffering(player:progress:)' from outside of its actor context are implicitly asynchronous
110 | func changeLoadState(player: some MediaPlayerProtocol)
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
| `- note: calls to instance method 'changeBuffering(player:progress:)' from outside of its actor context are implicitly asynchronous
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:85:16: warning: static property 'audioPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
| |- warning: static property 'audioPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'audioPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:86:16: warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
| |- warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'videoPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'videoPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:164:28: warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
162 | self.videoOutput?.play()
163 | }
164 | self.delegate?.changeLoadState(player: self)
| `- warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
165 | }
166 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:110:10: note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
110 | func changeLoadState(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:213:23: warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
211 | CMTimebaseSetTime(controlTimebase, time: CMTimeMake(value: Int64(options.startPlayTime), timescale: 1))
212 | }
213 | delegate?.readyToPlay(player: self)
| `- warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
214 | }
215 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:109:10: note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
107 | @MainActor
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
110 | func changeLoadState(player: some MediaPlayerProtocol)
111 | // 缓冲加载进度,0-100
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:220:28: warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
218 | runOnMainThread { [weak self] in
219 | guard let self else { return }
220 | self.delegate?.finish(player: self, error: error)
| `- warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
221 | }
222 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:114:10: note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
| `- note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
115 | }
116 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:229:32: warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
227 | if self.options.isLoopPlay {
228 | self.loopCount += 1
229 | self.delegate?.playBack(player: self, loopCount: self.loopCount)
| `- warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
230 | self.audioOutput.play()
231 | self.videoOutput?.play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:113:10: note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
| `- note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:84:16: warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
82 | static var enableSensor = true
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
| |- warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'isClearVideoWhereReplace' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'isClearVideoWhereReplace' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:563:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
561 | self.bufferingCountDownTimer = nil
562 | self.bufferingCountDownTimer = Timer(timeInterval: countDown, repeats: false) { _ in
563 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
564 | }
565 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:94:24: warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
92 | }
93 |
94 | private static var onceInitial: Void = {
| |- warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'onceInitial' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'onceInitial' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
95 | var result = avformat_network_init()
96 | av_log_set_callback { ptr, level, format, args in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:16:17: warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
14 | public final class MEPlayerItem: Sendable {
15 | private let url: URL
16 | private let options: KSOptions
| `- warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:17:12: note: class 'KSOptions' does not conform to the 'Sendable' protocol
15 | import UIKit
16 | #endif
17 | open class KSOptions {
| `- note: class 'KSOptions' does not conform to the 'Sendable' protocol
18 | /// 最低缓存视频时间
19 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:19:17: warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
19 | private var formatCtx: UnsafeMutablePointer<AVFormatContext>?
| `- warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
20 | private var outputFormatCtx: UnsafeMutablePointer<AVFormatContext>?
21 | private var outputPacket: UnsafeMutablePointer<AVPacket>?
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:83:16: warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
83 | static var stackSize = 65536
| |- warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'stackSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'stackSize' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:441:21: warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
439 | let flags = seekByBytes ? AVSEEK_FLAG_BYTE : 0
440 | let seekStartTime = CACurrentMediaTime()
441 | let result = avformat_seek_file(formatCtx, -1, Int64.min, timestamp.value, Int64.max, flags)
| `- warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
442 | audioClock.time = timestamp
443 | videoClock.time = timestamp
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:507:52: warning: reference to captured var 'result' in concurrently-executing code
505 | DispatchQueue.main.async { [weak self] in
506 | guard let self else { return }
507 | self.seekingCompletionHandler?(result >= 0)
| `- warning: reference to captured var 'result' in concurrently-executing code
508 | self.seekingCompletionHandler = nil
509 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:290:23: warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
288 | public static var textItalic = false
289 | public static var textPosition = TextPosition()
290 | public static var audioRecognizes = [any AudioRecognize]()
| |- warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'audioRecognizes' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioRecognizes' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
291 | private var subtitleDataSouces: [SubtitleDataSouce] = KSOptions.subtitleDataSouces
292 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItemTrack.swift:223:23: warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
177 | }
178 |
179 | final class AsyncPlayerItemTrack<Frame: MEFrame>: SyncPlayerItemTrack<Frame> {
| `- note: generic class 'AsyncPlayerItemTrack' does not conform to the 'Sendable' protocol
180 | private let operationQueue = OperationQueue()
181 | private var decodeOperation: BlockOperation!
:
221 | guard operationQueue.operationCount == 0 else { return }
222 | decodeOperation = BlockOperation { [weak self] in
223 | guard let self else { return }
| `- warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
224 | Thread.current.name = self.operationQueue.name
225 | Thread.current.stackSize = KSOptions.stackSize
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:479:16: warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
| |- warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'preferredFrame' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'preferredFrame' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
480 | static var useSystemHTTPProxy = true
481 | /// 日志级别
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:72:21: warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
17 |
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
| `- note: 'displayLayerDelegate' declared here
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
:
26 | }
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
| `- note: add '@preconcurrency' to the 'VideoOutput' conformance to defer isolation checking to run time
29 | public var displayLayer: AVSampleBufferDisplayLayer {
30 | displayView.displayLayer
:
70 |
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
| `- warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
73 | public init(options: KSOptions) {
74 | self.options = options
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:62:16: warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
| `- note: 'options' declared here
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
:
60 | private var displayLink: CADisplayLink!
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
| `- warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
63 | public weak var renderSource: OutputRenderSourceDelegate?
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:29:16: warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
| `- note: 'displayLayer' declared here
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
:
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
29 | public var displayLayer: AVSampleBufferDisplayLayer {
| `- warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
30 | displayView.displayLayer
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:56:29: warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
| `- note: 'pixelBuffer' declared here
23 | init(options: KSOptions)
24 | func invalidate()
:
54 | }
55 |
56 | public private(set) var pixelBuffer: PixelBufferProtocol?
| `- warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
57 | /// 用displayLink会导致锁屏无法draw,
58 | /// 用DispatchSourceTimer的话,在播放4k视频的时候repeat的时间会变长,
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:73:12: warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
| `- note: mark the protocol requirement 'init(options:)' 'async' to allow actor-isolated conformances
24 | func invalidate()
25 | func readNextFrame()
:
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
73 | public init(options: KSOptions) {
| |- warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'init(options:)' to make this initializer not isolated to the actor
74 | self.options = options
75 | super.init(frame: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:153:17: warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
24 | func invalidate()
| `- note: mark the protocol requirement 'invalidate()' 'async' to allow actor-isolated conformances
25 | func readNextFrame()
26 | }
:
151 | }
152 |
153 | public func invalidate() {
| |- warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'invalidate()' to make this instance method not isolated to the actor
154 | displayLink.invalidate()
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:157:17: warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
23 | init(options: KSOptions)
24 | func invalidate()
25 | func readNextFrame()
| `- note: mark the protocol requirement 'readNextFrame()' 'async' to allow actor-isolated conformances
26 | }
27 |
:
155 | }
156 |
157 | public func readNextFrame() {
| |- warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'readNextFrame()' to make this instance method not isolated to the actor
158 | draw(force: true)
159 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:63:21: warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
63 | public weak var renderSource: OutputRenderSourceDelegate?
| `- warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
65 | var displayView = AVSampleBufferDisplayView() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:67:9: note: 'renderSource' declared here
65 |
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
| `- note: 'renderSource' declared here
68 | func pause()
69 | func flush()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:90:17: warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
88 | }
89 |
90 | public func pause() {
| |- warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'pause()' to make this instance method not isolated to the actor
91 | displayLink.isPaused = true
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:68:10: note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
| `- note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
69 | func flush()
70 | func play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:144:17: warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
142 | #endif
143 |
144 | public func flush() {
| |- warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'flush()' to make this instance method not isolated to the actor
145 | pixelBuffer = nil
146 | if displayView.isHidden {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:69:10: note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
69 | func flush()
| `- note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
70 | func play()
71 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:86:17: warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
84 | }
85 |
86 | public func play() {
| |- warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'play()' to make this instance method not isolated to the actor
87 | displayLink.isPaused = false
88 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:70:10: note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
68 | func pause()
69 | func flush()
70 | func play()
| `- note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
71 | }
72 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:15:16: warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
Metal.MTLDevice:2:17: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.11, *)
2 | public protocol MTLDevice : NSObjectProtocol {
| `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
3 | var name: String { get }
4 | @available(macOS 10.13, *)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
8 | import CoreVideo
9 | import Foundation
10 | import Metal
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
11 | import QuartzCore
12 | import simd
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| |- note: annotate 'device' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:415:23: warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
366 | import CoreVideo
367 |
368 | class CADisplayLink {
| `- note: class 'CADisplayLink' does not conform to the 'Sendable' protocol
369 | private let displayLink: CVDisplayLink
370 | private var runloop: RunLoop?
:
413 | self.displayLink = displayLink!
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
| `- warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
417 | return kCVReturnSuccess
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:416:53: warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
| `- warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
417 | return kCVReturnSuccess
418 | }
ObjectiveC.NSObject:2:12: note: class 'NSObject' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.0, *)
2 | open class NSObject : NSObjectProtocol {
| `- note: class 'NSObject' does not conform to the 'Sendable' protocol
3 | open class func load()
4 | open class func initialize()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
6 | //
7 |
8 | import AVFoundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
9 | import Combine
10 | import CoreMedia
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:427:13: warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
425 | self.displayLink = displayLink!
426 | CVDisplayLinkSetOutputHandler(self.displayLink) { _, _, _, _, _ in
427 | block()
| |- warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
428 | return kCVReturnSuccess
429 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:82:16: warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
80 | public extension KSOptions {
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
| |- warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableSensor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableSensor' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:87:16: warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
| |- warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'yadifMode' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'yadifMode' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
88 | static var deInterlaceAddIdet = false
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:88:16: warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
| |- warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'deInterlaceAddIdet' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'deInterlaceAddIdet' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
90 | switch ycbcrMatrix {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:178:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
175 | }
176 |
177 | public struct Timebase {
| `- note: consider making struct 'Timebase' conform to the 'Sendable' protocol
178 | static let defaultValue = Timebase(num: 1, den: 1)
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
179 | public let num: Int32
180 | public let den: Int32
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:494:28: warning: 'result' mutated after capture by sendable closure
492 | options.seekFlags &= ~AVSEEK_FLAG_BACKWARD
493 | seekFlags &= ~AVSEEK_FLAG_BACKWARD
494 | result = avformat_seek_file(formatCtx, -1, seekMin, timeStamp, seekMax, seekFlags)
| `- warning: 'result' mutated after capture by sendable closure
495 | }
496 | KSLog("seek to \(seekToTime) spend Time: \(CACurrentMediaTime() - seekStartTime)")
[56/61] Compiling KSPlayer Model.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:26:27: warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
24 | oldValue?.invalidate()
25 | runOnMainThread {
26 | oldValue?.removeFromSuperview()
| `- warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
27 | }
28 | }
AppKit.NSView:44:26: note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
42 | open func didAddSubview(_ subview: NSView)
43 | open func willRemoveSubview(_ subview: NSView)
44 | @MainActor open func removeFromSuperview()
| `- note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
45 | open func replaceSubview(_ oldView: NSView, with newView: NSView)
46 | open func removeFromSuperviewWithoutNeedingDisplay()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:110:35: warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
108 | runOnMainThread { [weak self] in
109 | guard let self else { return }
110 | delegate?.finish(player: self, error: nil)
| `- warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
111 | }
112 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:114:10: note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
| `- note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
115 | }
116 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:429:16: warning: main actor-isolated property 'contentMode' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
289 | }
290 |
291 | extension KSMEPlayer: MediaPlayerProtocol {
| `- note: add '@preconcurrency' to the 'MediaPlayerProtocol' conformance to defer isolation checking to run time
292 | public var chapters: [Chapter] {
293 | playerItem.chapters
:
427 |
428 | @MainActor
429 | public var contentMode: UIViewContentMode {
| `- warning: main actor-isolated property 'contentMode' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
430 | get {
431 | view?.contentMode ?? .center
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:83:9: note: 'contentMode' declared here
81 | var playbackRate: Float { get set }
82 | var playbackVolume: Float { get set }
83 | var contentMode: UIViewContentMode { get set }
| `- note: 'contentMode' declared here
84 | var subtitleDataSouce: SubtitleDataSouce? { get }
85 | @available(macOS 12.0, iOS 15.0, tvOS 15.0, *)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:309:16: warning: main actor-isolated property 'naturalSize' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
307 |
308 | @MainActor
309 | public var naturalSize: CGSize {
| `- warning: main actor-isolated property 'naturalSize' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
310 | options.display == .plane ? playerItem.naturalSize : KSOptions.sceneSize
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:19:9: note: 'naturalSize' declared here
17 | var duration: TimeInterval { get }
18 | var fileSize: Double { get }
19 | var naturalSize: CGSize { get }
| `- note: 'naturalSize' declared here
20 | var chapters: [Chapter] { get }
21 | var currentPlaybackTime: TimeInterval { get }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:16:14: warning: non-final class 'KSMEPlayer' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
14 | #endif
15 |
16 | public class KSMEPlayer: NSObject {
| `- warning: non-final class 'KSMEPlayer' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
17 | private var loopCount = 1
18 | private var playerItem: MEPlayerItem
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:17:17: warning: stored property 'loopCount' of 'Sendable'-conforming class 'KSMEPlayer' is mutable; this is an error in the Swift 6 language mode
15 |
16 | public class KSMEPlayer: NSObject {
17 | private var loopCount = 1
| `- warning: stored property 'loopCount' of 'Sendable'-conforming class 'KSMEPlayer' is mutable; this is an error in the Swift 6 language mode
18 | private var playerItem: MEPlayerItem
19 | public let audioOutput: AudioOutput
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:35:27: warning: call to main actor-isolated instance method 'changeBuffering(player:progress:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
33 | runOnMainThread { [weak self] in
34 | guard let self else { return }
35 | delegate?.changeBuffering(player: self, progress: newValue)
| `- warning: call to main actor-isolated instance method 'changeBuffering(player:progress:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
36 | }
37 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:112:10: note: calls to instance method 'changeBuffering(player:progress:)' from outside of its actor context are implicitly asynchronous
110 | func changeLoadState(player: some MediaPlayerProtocol)
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
| `- note: calls to instance method 'changeBuffering(player:progress:)' from outside of its actor context are implicitly asynchronous
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:85:16: warning: static property 'audioPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
| |- warning: static property 'audioPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'audioPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:86:16: warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
| |- warning: static property 'videoPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'videoPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'videoPlayerType' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:164:28: warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
162 | self.videoOutput?.play()
163 | }
164 | self.delegate?.changeLoadState(player: self)
| `- warning: call to main actor-isolated instance method 'changeLoadState(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
165 | }
166 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:110:10: note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
110 | func changeLoadState(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'changeLoadState(player:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:213:23: warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
211 | CMTimebaseSetTime(controlTimebase, time: CMTimeMake(value: Int64(options.startPlayTime), timescale: 1))
212 | }
213 | delegate?.readyToPlay(player: self)
| `- warning: call to main actor-isolated instance method 'readyToPlay(player:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
214 | }
215 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:109:10: note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
107 | @MainActor
108 | public protocol MediaPlayerDelegate: AnyObject {
109 | func readyToPlay(player: some MediaPlayerProtocol)
| `- note: calls to instance method 'readyToPlay(player:)' from outside of its actor context are implicitly asynchronous
110 | func changeLoadState(player: some MediaPlayerProtocol)
111 | // 缓冲加载进度,0-100
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:220:28: warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
218 | runOnMainThread { [weak self] in
219 | guard let self else { return }
220 | self.delegate?.finish(player: self, error: error)
| `- warning: call to main actor-isolated instance method 'finish(player:error:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
221 | }
222 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:114:10: note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
| `- note: calls to instance method 'finish(player:error:)' from outside of its actor context are implicitly asynchronous
115 | }
116 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:229:32: warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
227 | if self.options.isLoopPlay {
228 | self.loopCount += 1
229 | self.delegate?.playBack(player: self, loopCount: self.loopCount)
| `- warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
230 | self.audioOutput.play()
231 | self.videoOutput?.play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:113:10: note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
| `- note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:84:16: warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
82 | static var enableSensor = true
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
| |- warning: static property 'isClearVideoWhereReplace' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'isClearVideoWhereReplace' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'isClearVideoWhereReplace' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:563:17: warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
561 | self.bufferingCountDownTimer = nil
562 | self.bufferingCountDownTimer = Timer(timeInterval: countDown, repeats: false) { _ in
563 | completionHandler()
| |- warning: capture of 'completionHandler' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
564 | }
565 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:94:24: warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
92 | }
93 |
94 | private static var onceInitial: Void = {
| |- warning: static property 'onceInitial' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'onceInitial' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'onceInitial' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
95 | var result = avformat_network_init()
96 | av_log_set_callback { ptr, level, format, args in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:16:17: warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
14 | public final class MEPlayerItem: Sendable {
15 | private let url: URL
16 | private let options: KSOptions
| `- warning: stored property 'options' of 'Sendable'-conforming class 'MEPlayerItem' has non-sendable type 'KSOptions'; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:17:12: note: class 'KSOptions' does not conform to the 'Sendable' protocol
15 | import UIKit
16 | #endif
17 | open class KSOptions {
| `- note: class 'KSOptions' does not conform to the 'Sendable' protocol
18 | /// 最低缓存视频时间
19 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:19:17: warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
17 | private let operationQueue = OperationQueue()
18 | private let condition = NSCondition()
19 | private var formatCtx: UnsafeMutablePointer<AVFormatContext>?
| `- warning: stored property 'formatCtx' of 'Sendable'-conforming class 'MEPlayerItem' is mutable; this is an error in the Swift 6 language mode
20 | private var outputFormatCtx: UnsafeMutablePointer<AVFormatContext>?
21 | private var outputPacket: UnsafeMutablePointer<AVPacket>?
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:83:16: warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
83 | static var stackSize = 65536
| |- warning: static property 'stackSize' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'stackSize' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'stackSize' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | static var isClearVideoWhereReplace = true
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:441:21: warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
439 | let flags = seekByBytes ? AVSEEK_FLAG_BYTE : 0
440 | let seekStartTime = CACurrentMediaTime()
441 | let result = avformat_seek_file(formatCtx, -1, Int64.min, timestamp.value, Int64.max, flags)
| `- warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it
442 | audioClock.time = timestamp
443 | videoClock.time = timestamp
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:507:52: warning: reference to captured var 'result' in concurrently-executing code
505 | DispatchQueue.main.async { [weak self] in
506 | guard let self else { return }
507 | self.seekingCompletionHandler?(result >= 0)
| `- warning: reference to captured var 'result' in concurrently-executing code
508 | self.seekingCompletionHandler = nil
509 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:290:23: warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
288 | public static var textItalic = false
289 | public static var textPosition = TextPosition()
290 | public static var audioRecognizes = [any AudioRecognize]()
| |- warning: static property 'audioRecognizes' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'audioRecognizes' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'audioRecognizes' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
291 | private var subtitleDataSouces: [SubtitleDataSouce] = KSOptions.subtitleDataSouces
292 | @Published
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItemTrack.swift:223:23: warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
177 | }
178 |
179 | final class AsyncPlayerItemTrack<Frame: MEFrame>: SyncPlayerItemTrack<Frame> {
| `- note: generic class 'AsyncPlayerItemTrack' does not conform to the 'Sendable' protocol
180 | private let operationQueue = OperationQueue()
181 | private var decodeOperation: BlockOperation!
:
221 | guard operationQueue.operationCount == 0 else { return }
222 | decodeOperation = BlockOperation { [weak self] in
223 | guard let self else { return }
| `- warning: capture of 'self' with non-sendable type 'AsyncPlayerItemTrack<Frame>?' in a `@Sendable` closure
224 | Thread.current.name = self.operationQueue.name
225 | Thread.current.stackSize = KSOptions.stackSize
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:479:16: warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
| |- warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'preferredFrame' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'preferredFrame' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
480 | static var useSystemHTTPProxy = true
481 | /// 日志级别
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:72:21: warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
17 |
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
| `- note: 'displayLayerDelegate' declared here
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
:
26 | }
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
| `- note: add '@preconcurrency' to the 'VideoOutput' conformance to defer isolation checking to run time
29 | public var displayLayer: AVSampleBufferDisplayLayer {
30 | displayView.displayLayer
:
70 |
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
| `- warning: main actor-isolated property 'displayLayerDelegate' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
73 | public init(options: KSOptions) {
74 | self.options = options
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:62:16: warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
18 | public protocol VideoOutput: FrameOutput {
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
| `- note: 'options' declared here
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
:
60 | private var displayLink: CADisplayLink!
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
| `- warning: main actor-isolated property 'options' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
63 | public weak var renderSource: OutputRenderSourceDelegate?
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:29:16: warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
19 | var displayLayerDelegate: DisplayLayerDelegate? { get set }
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
| `- note: 'displayLayer' declared here
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
:
27 |
28 | public final class MetalPlayView: UIView, VideoOutput {
29 | public var displayLayer: AVSampleBufferDisplayLayer {
| `- warning: main actor-isolated property 'displayLayer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
30 | displayView.displayLayer
31 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:56:29: warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
20 | var options: KSOptions { get set }
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
| `- note: 'pixelBuffer' declared here
23 | init(options: KSOptions)
24 | func invalidate()
:
54 | }
55 |
56 | public private(set) var pixelBuffer: PixelBufferProtocol?
| `- warning: main actor-isolated property 'pixelBuffer' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
57 | /// 用displayLink会导致锁屏无法draw,
58 | /// 用DispatchSourceTimer的话,在播放4k视频的时候repeat的时间会变长,
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:73:12: warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
21 | var displayLayer: AVSampleBufferDisplayLayer { get }
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
| `- note: mark the protocol requirement 'init(options:)' 'async' to allow actor-isolated conformances
24 | func invalidate()
25 | func readNextFrame()
:
71 | private let metalView = MetalView()
72 | public weak var displayLayerDelegate: DisplayLayerDelegate?
73 | public init(options: KSOptions) {
| |- warning: main actor-isolated initializer 'init(options:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'init(options:)' to make this initializer not isolated to the actor
74 | self.options = options
75 | super.init(frame: .zero)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:153:17: warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
22 | var pixelBuffer: PixelBufferProtocol? { get }
23 | init(options: KSOptions)
24 | func invalidate()
| `- note: mark the protocol requirement 'invalidate()' 'async' to allow actor-isolated conformances
25 | func readNextFrame()
26 | }
:
151 | }
152 |
153 | public func invalidate() {
| |- warning: main actor-isolated instance method 'invalidate()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'invalidate()' to make this instance method not isolated to the actor
154 | displayLink.invalidate()
155 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:157:17: warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
23 | init(options: KSOptions)
24 | func invalidate()
25 | func readNextFrame()
| `- note: mark the protocol requirement 'readNextFrame()' 'async' to allow actor-isolated conformances
26 | }
27 |
:
155 | }
156 |
157 | public func readNextFrame() {
| |- warning: main actor-isolated instance method 'readNextFrame()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'readNextFrame()' to make this instance method not isolated to the actor
158 | draw(force: true)
159 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:63:21: warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
61 | // private let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.main)
62 | public var options: KSOptions
63 | public weak var renderSource: OutputRenderSourceDelegate?
| `- warning: main actor-isolated property 'renderSource' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
64 | // AVSampleBufferAudioRenderer AVSampleBufferRenderSynchronizer AVSampleBufferDisplayLayer
65 | var displayView = AVSampleBufferDisplayView() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:67:9: note: 'renderSource' declared here
65 |
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
| `- note: 'renderSource' declared here
68 | func pause()
69 | func flush()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:90:17: warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
88 | }
89 |
90 | public func pause() {
| |- warning: main actor-isolated instance method 'pause()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'pause()' to make this instance method not isolated to the actor
91 | displayLink.isPaused = true
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:68:10: note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
66 | public protocol FrameOutput: AnyObject {
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
| `- note: mark the protocol requirement 'pause()' 'async' to allow actor-isolated conformances
69 | func flush()
70 | func play()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:144:17: warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
142 | #endif
143 |
144 | public func flush() {
| |- warning: main actor-isolated instance method 'flush()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'flush()' to make this instance method not isolated to the actor
145 | pixelBuffer = nil
146 | if displayView.isHidden {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:69:10: note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
67 | var renderSource: OutputRenderSourceDelegate? { get set }
68 | func pause()
69 | func flush()
| `- note: mark the protocol requirement 'flush()' 'async' to allow actor-isolated conformances
70 | func play()
71 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:86:17: warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
84 | }
85 |
86 | public func play() {
| |- warning: main actor-isolated instance method 'play()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'play()' to make this instance method not isolated to the actor
87 | displayLink.isPaused = false
88 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:70:10: note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
68 | func pause()
69 | func flush()
70 | func play()
| `- note: mark the protocol requirement 'play()' 'async' to allow actor-isolated conformances
71 | }
72 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:15:16: warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type 'any MTLDevice' may have shared mutable state; this is an error in the Swift 6 language mode
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
Metal.MTLDevice:2:17: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.11, *)
2 | public protocol MTLDevice : NSObjectProtocol {
| `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
3 | var name: String { get }
4 | @available(macOS 10.13, *)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/MetalRender.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
8 | import CoreVideo
9 | import Foundation
10 | import Metal
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
11 | import QuartzCore
12 | import simd
13 |
14 | class MetalRender {
15 | static let device = MTLCreateSystemDefaultDevice()!
| |- note: annotate 'device' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | static let library: MTLLibrary = {
17 | var library: MTLLibrary!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:415:23: warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
366 | import CoreVideo
367 |
368 | class CADisplayLink {
| `- note: class 'CADisplayLink' does not conform to the 'Sendable' protocol
369 | private let displayLink: CVDisplayLink
370 | private var runloop: RunLoop?
:
413 | self.displayLink = displayLink!
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
| `- warning: capture of 'self' with non-sendable type 'CADisplayLink?' in a `@Sendable` closure
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
417 | return kCVReturnSuccess
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:416:53: warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
414 | CVDisplayLinkSetOutputHandler(self.displayLink) { [weak self] _, _, _, _, _ in
415 | guard let self else { return kCVReturnSuccess }
416 | self.runloop?.perform(selector, target: target, argument: self, order: 0, modes: [self.mode])
| `- warning: capture of 'target' with non-sendable type 'NSObject' in a `@Sendable` closure
417 | return kCVReturnSuccess
418 | }
ObjectiveC.NSObject:2:12: note: class 'NSObject' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.0, *)
2 | open class NSObject : NSObjectProtocol {
| `- note: class 'NSObject' does not conform to the 'Sendable' protocol
3 | open class func load()
4 | open class func initialize()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
6 | //
7 |
8 | import AVFoundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
9 | import Combine
10 | import CoreMedia
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MetalPlayView.swift:427:13: warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
425 | self.displayLink = displayLink!
426 | CVDisplayLinkSetOutputHandler(self.displayLink) { _, _, _, _, _ in
427 | block()
| |- warning: capture of 'block' with non-sendable type '() -> Void' in a `@Sendable` closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
428 | return kCVReturnSuccess
429 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:82:16: warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
80 | public extension KSOptions {
81 | /// 开启VR模式的陀飞轮
82 | static var enableSensor = true
| |- warning: static property 'enableSensor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableSensor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableSensor' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
83 | static var stackSize = 65536
84 | static var isClearVideoWhereReplace = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:87:16: warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
85 | static var audioPlayerType: AudioOutput.Type = AudioEnginePlayer.self
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
| |- warning: static property 'yadifMode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'yadifMode' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'yadifMode' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
88 | static var deInterlaceAddIdet = false
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:88:16: warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
86 | static var videoPlayerType: (VideoOutput & UIView).Type = MetalPlayView.self
87 | static var yadifMode = 1
88 | static var deInterlaceAddIdet = false
| |- warning: static property 'deInterlaceAddIdet' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'deInterlaceAddIdet' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'deInterlaceAddIdet' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
89 | static func colorSpace(ycbcrMatrix: CFString?, transferFunction: CFString?) -> CGColorSpace? {
90 | switch ycbcrMatrix {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/Model.swift:178:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
175 | }
176 |
177 | public struct Timebase {
| `- note: consider making struct 'Timebase' conform to the 'Sendable' protocol
178 | static let defaultValue = Timebase(num: 1, den: 1)
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'Timebase' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'defaultValue' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
179 | public let num: Int32
180 | public let den: Int32
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:516:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
514 | self.play()
515 | }
516 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
517 | }
518 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:532:13: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
530 | self.pause()
531 | }
532 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
533 | }
534 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/KSMEPlayer.swift:557:17: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
555 | }
556 | guard self.loadState != .playable, let countDown = bufferingCommand.completionDueDate?.timeIntervalSinceNow else {
557 | completionHandler()
| |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
558 | return
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/MEPlayerItem.swift:494:28: warning: 'result' mutated after capture by sendable closure
492 | options.seekFlags &= ~AVSEEK_FLAG_BACKWARD
493 | seekFlags &= ~AVSEEK_FLAG_BACKWARD
494 | result = avformat_seek_file(formatCtx, -1, seekMin, timeStamp, seekMax, seekFlags)
| `- warning: 'result' mutated after capture by sendable closure
495 | }
496 | KSLog("seek to \(seekToTime) spend Time: \(CACurrentMediaTime() - seekStartTime)")
[57/61] Compiling KSPlayer BrightnessVolume.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/BrightnessVolume.swift:16:30: warning: unknown operating system for build configuration 'os'
14 | public var progressView: BrightnessVolumeViewProtocol & UIView = ProgressView()
15 | init() {
16 | #if !os(tvOS) && !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
17 | brightnessObservation = UIScreen.main.observe(\.brightness, options: .new) { [weak self] _, change in
18 | if let self, let value = change.newValue {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:25:13: warning: unknown operating system for build configuration 'os'
23 | public var backButton = UIButton()
24 | public var airplayStatusView: UIView = AirplayStatusView()
25 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
26 | public var routeButton = AVRoutePickerView()
27 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:38:13: warning: unknown operating system for build configuration 'os'
36 | }
37 |
38 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
39 | private var brightness: CGFloat = UIScreen.main.brightness {
40 | didSet {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:88:17: warning: unknown operating system for build configuration 'os'
86 | airplayStatusView.centerYAnchor.constraint(equalTo: centerYAnchor),
87 | ])
88 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
89 | routeButton.isHidden = true
90 | navigationBar.addArrangedSubview(routeButton)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:104:17: warning: unknown operating system for build configuration 'os'
102 | maskImageView.image = nil
103 | panGesture.isEnabled = false
104 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
105 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
106 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:265:25: warning: unknown operating system for build configuration 'os'
263 | }
264 | } else if KSOptions.enableBrightnessGestures {
265 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
266 | brightness += CGFloat(panValue(velocity: point, direction: direction, currentTime: Float(toolBar.currentTime), totalTime: Float(totalTime)))
267 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:309:17: warning: unknown operating system for build configuration 'os'
307 |
308 | @objc private func routesAvailableDidChange(notification _: Notification) {
309 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
310 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
311 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:194:10: warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| `- note: add '@preconcurrency' to the 'LoadingIndector' conformance to defer isolation checking to run time
194 | func startAnimating() {
| |- warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'startAnimating()' to make this instance method not isolated to the actor
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:24:10: note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
22 |
23 | public protocol LoadingIndector {
24 | func startAnimating()
| `- note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
25 | func stopAnimating()
26 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:205:10: warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
203 | }
204 |
205 | func stopAnimating() {
| |- warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'stopAnimating()' to make this instance method not isolated to the actor
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:25:10: note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
23 | public protocol LoadingIndector {
24 | func startAnimating()
25 | func stopAnimating()
| `- note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableVolumeGestures' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
[58/61] Compiling KSPlayer IOSVideoPlayerView.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/BrightnessVolume.swift:16:30: warning: unknown operating system for build configuration 'os'
14 | public var progressView: BrightnessVolumeViewProtocol & UIView = ProgressView()
15 | init() {
16 | #if !os(tvOS) && !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
17 | brightnessObservation = UIScreen.main.observe(\.brightness, options: .new) { [weak self] _, change in
18 | if let self, let value = change.newValue {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:25:13: warning: unknown operating system for build configuration 'os'
23 | public var backButton = UIButton()
24 | public var airplayStatusView: UIView = AirplayStatusView()
25 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
26 | public var routeButton = AVRoutePickerView()
27 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:38:13: warning: unknown operating system for build configuration 'os'
36 | }
37 |
38 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
39 | private var brightness: CGFloat = UIScreen.main.brightness {
40 | didSet {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:88:17: warning: unknown operating system for build configuration 'os'
86 | airplayStatusView.centerYAnchor.constraint(equalTo: centerYAnchor),
87 | ])
88 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
89 | routeButton.isHidden = true
90 | navigationBar.addArrangedSubview(routeButton)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:104:17: warning: unknown operating system for build configuration 'os'
102 | maskImageView.image = nil
103 | panGesture.isEnabled = false
104 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
105 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
106 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:265:25: warning: unknown operating system for build configuration 'os'
263 | }
264 | } else if KSOptions.enableBrightnessGestures {
265 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
266 | brightness += CGFloat(panValue(velocity: point, direction: direction, currentTime: Float(toolBar.currentTime), totalTime: Float(totalTime)))
267 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:309:17: warning: unknown operating system for build configuration 'os'
307 |
308 | @objc private func routesAvailableDidChange(notification _: Notification) {
309 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
310 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
311 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:194:10: warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| `- note: add '@preconcurrency' to the 'LoadingIndector' conformance to defer isolation checking to run time
194 | func startAnimating() {
| |- warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'startAnimating()' to make this instance method not isolated to the actor
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:24:10: note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
22 |
23 | public protocol LoadingIndector {
24 | func startAnimating()
| `- note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
25 | func stopAnimating()
26 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:205:10: warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
203 | }
204 |
205 | func stopAnimating() {
| |- warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'stopAnimating()' to make this instance method not isolated to the actor
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:25:10: note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
23 | public protocol LoadingIndector {
24 | func startAnimating()
25 | func stopAnimating()
| `- note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableVolumeGestures' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
[59/61] Compiling KSPlayer KSMenu.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/BrightnessVolume.swift:16:30: warning: unknown operating system for build configuration 'os'
14 | public var progressView: BrightnessVolumeViewProtocol & UIView = ProgressView()
15 | init() {
16 | #if !os(tvOS) && !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
17 | brightnessObservation = UIScreen.main.observe(\.brightness, options: .new) { [weak self] _, change in
18 | if let self, let value = change.newValue {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:25:13: warning: unknown operating system for build configuration 'os'
23 | public var backButton = UIButton()
24 | public var airplayStatusView: UIView = AirplayStatusView()
25 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
26 | public var routeButton = AVRoutePickerView()
27 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:38:13: warning: unknown operating system for build configuration 'os'
36 | }
37 |
38 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
39 | private var brightness: CGFloat = UIScreen.main.brightness {
40 | didSet {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:88:17: warning: unknown operating system for build configuration 'os'
86 | airplayStatusView.centerYAnchor.constraint(equalTo: centerYAnchor),
87 | ])
88 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
89 | routeButton.isHidden = true
90 | navigationBar.addArrangedSubview(routeButton)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:104:17: warning: unknown operating system for build configuration 'os'
102 | maskImageView.image = nil
103 | panGesture.isEnabled = false
104 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
105 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
106 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:265:25: warning: unknown operating system for build configuration 'os'
263 | }
264 | } else if KSOptions.enableBrightnessGestures {
265 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
266 | brightness += CGFloat(panValue(velocity: point, direction: direction, currentTime: Float(toolBar.currentTime), totalTime: Float(totalTime)))
267 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:309:17: warning: unknown operating system for build configuration 'os'
307 |
308 | @objc private func routesAvailableDidChange(notification _: Notification) {
309 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
310 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
311 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:194:10: warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| `- note: add '@preconcurrency' to the 'LoadingIndector' conformance to defer isolation checking to run time
194 | func startAnimating() {
| |- warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'startAnimating()' to make this instance method not isolated to the actor
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:24:10: note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
22 |
23 | public protocol LoadingIndector {
24 | func startAnimating()
| `- note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
25 | func stopAnimating()
26 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:205:10: warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
203 | }
204 |
205 | func stopAnimating() {
| |- warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'stopAnimating()' to make this instance method not isolated to the actor
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:25:10: note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
23 | public protocol LoadingIndector {
24 | func startAnimating()
25 | func stopAnimating()
| `- note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableVolumeGestures' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
[60/61] Compiling KSPlayer KSPlayerItem.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/BrightnessVolume.swift:16:30: warning: unknown operating system for build configuration 'os'
14 | public var progressView: BrightnessVolumeViewProtocol & UIView = ProgressView()
15 | init() {
16 | #if !os(tvOS) && !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
17 | brightnessObservation = UIScreen.main.observe(\.brightness, options: .new) { [weak self] _, change in
18 | if let self, let value = change.newValue {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:25:13: warning: unknown operating system for build configuration 'os'
23 | public var backButton = UIButton()
24 | public var airplayStatusView: UIView = AirplayStatusView()
25 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
26 | public var routeButton = AVRoutePickerView()
27 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:38:13: warning: unknown operating system for build configuration 'os'
36 | }
37 |
38 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
39 | private var brightness: CGFloat = UIScreen.main.brightness {
40 | didSet {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:88:17: warning: unknown operating system for build configuration 'os'
86 | airplayStatusView.centerYAnchor.constraint(equalTo: centerYAnchor),
87 | ])
88 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
89 | routeButton.isHidden = true
90 | navigationBar.addArrangedSubview(routeButton)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:104:17: warning: unknown operating system for build configuration 'os'
102 | maskImageView.image = nil
103 | panGesture.isEnabled = false
104 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
105 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
106 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:265:25: warning: unknown operating system for build configuration 'os'
263 | }
264 | } else if KSOptions.enableBrightnessGestures {
265 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
266 | brightness += CGFloat(panValue(velocity: point, direction: direction, currentTime: Float(toolBar.currentTime), totalTime: Float(totalTime)))
267 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:309:17: warning: unknown operating system for build configuration 'os'
307 |
308 | @objc private func routesAvailableDidChange(notification _: Notification) {
309 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
310 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
311 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:194:10: warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| `- note: add '@preconcurrency' to the 'LoadingIndector' conformance to defer isolation checking to run time
194 | func startAnimating() {
| |- warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'startAnimating()' to make this instance method not isolated to the actor
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:24:10: note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
22 |
23 | public protocol LoadingIndector {
24 | func startAnimating()
| `- note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
25 | func stopAnimating()
26 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:205:10: warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
203 | }
204 |
205 | func stopAnimating() {
| |- warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'stopAnimating()' to make this instance method not isolated to the actor
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:25:10: note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
23 | public protocol LoadingIndector {
24 | func startAnimating()
25 | func stopAnimating()
| `- note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableVolumeGestures' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
[61/61] Compiling KSPlayer MacVideoPlayerView.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/BrightnessVolume.swift:16:30: warning: unknown operating system for build configuration 'os'
14 | public var progressView: BrightnessVolumeViewProtocol & UIView = ProgressView()
15 | init() {
16 | #if !os(tvOS) && !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
17 | brightnessObservation = UIScreen.main.observe(\.brightness, options: .new) { [weak self] _, change in
18 | if let self, let value = change.newValue {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:25:13: warning: unknown operating system for build configuration 'os'
23 | public var backButton = UIButton()
24 | public var airplayStatusView: UIView = AirplayStatusView()
25 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
26 | public var routeButton = AVRoutePickerView()
27 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:38:13: warning: unknown operating system for build configuration 'os'
36 | }
37 |
38 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
39 | private var brightness: CGFloat = UIScreen.main.brightness {
40 | didSet {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:88:17: warning: unknown operating system for build configuration 'os'
86 | airplayStatusView.centerYAnchor.constraint(equalTo: centerYAnchor),
87 | ])
88 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
89 | routeButton.isHidden = true
90 | navigationBar.addArrangedSubview(routeButton)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:104:17: warning: unknown operating system for build configuration 'os'
102 | maskImageView.image = nil
103 | panGesture.isEnabled = false
104 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
105 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
106 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:265:25: warning: unknown operating system for build configuration 'os'
263 | }
264 | } else if KSOptions.enableBrightnessGestures {
265 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
266 | brightness += CGFloat(panValue(velocity: point, direction: direction, currentTime: Float(toolBar.currentTime), totalTime: Float(totalTime)))
267 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/IOSVideoPlayerView.swift:309:17: warning: unknown operating system for build configuration 'os'
307 |
308 | @objc private func routesAvailableDidChange(notification _: Notification) {
309 | #if !os(xrOS)
| |- warning: unknown operating system for build configuration 'os'
| |- note: did you mean 'tvOS'?
| `- note: did you mean 'iOS'?
310 | routeButton.isHidden = !routeDetector.multipleRoutesDetected
311 | #endif
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:194:10: warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| `- note: add '@preconcurrency' to the 'LoadingIndector' conformance to defer isolation checking to run time
194 | func startAnimating() {
| |- warning: main actor-isolated instance method 'startAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'startAnimating()' to make this instance method not isolated to the actor
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:24:10: note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
22 |
23 | public protocol LoadingIndector {
24 | func startAnimating()
| `- note: mark the protocol requirement 'startAnimating()' 'async' to allow actor-isolated conformances
25 | func stopAnimating()
26 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:205:10: warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
203 | }
204 |
205 | func stopAnimating() {
| |- warning: main actor-isolated instance method 'stopAnimating()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'stopAnimating()' to make this instance method not isolated to the actor
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:25:10: note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
23 | public protocol LoadingIndector {
24 | func startAnimating()
25 | func stopAnimating()
| `- note: mark the protocol requirement 'stopAnimating()' 'async' to allow actor-isolated conformances
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'enableVolumeGestures' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
Build of target: 'KSPlayer' complete! (3.20s)
error: unspecified("terminated(1): /Applications/Xcode-16.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract -sdk /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -F /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -I /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -L /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -Xcc -fmodule-map-file=/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/FFmpegKit.build/module.modulemap -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswscale.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswscale.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswresample.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswresample.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavutil.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavutil.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavformat.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavformat.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavfilter.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavfilter.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavdevice.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavdevice.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavcodec.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavcodec.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsmbclient.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsmbclient.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gnutls.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gnutls.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/hogweed.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/hogweed.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/nettle.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/nettle.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gmp.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gmp.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libbluray.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libbluray.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfontconfig.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfontconfig.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libass.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libass.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libharfbuzz.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libharfbuzz.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfribidi.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfribidi.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfreetype.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfreetype.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsrt.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsrt.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libzvbi.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libzvbi.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libplacebo.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libplacebo.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libdav1d.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libdav1d.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/lcms2.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/lcms2.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libshaderc_combined.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libshaderc_combined.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/MoltenVK.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/MoltenVK.xcframework/macos-arm64_x86_64 -Xcc -fmodule-map-file=/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/DisplayCriteria.build/module.modulemap -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/Sources/DisplayCriteria/include -I /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Modules -module-name KSPlayer -target arm64-apple-macosx10.15 -module-cache-path /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/ModuleCache -minimum-access-level public -skip-inherited-docs -emit-extension-block-symbols -output-dir /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/extracted-symbols/spi-builder-workspace/KSPlayer output:\n <module-includes>:4:9: note: in file included from <module-includes>:4:\n #import \"/Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include/avformat_shim.h\"\n ^\n /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include/avformat_shim.h:4:9: error: \'Libavformat/avformat.h\' file not found\n #import <Libavformat/avformat.h>\n ^\n <unknown>:0: error: could not build Objective-C module \'FFmpegKit\'\n Error: Failed to load the module \'KSPlayer\'. Are you missing build dependencies or include/framework directories?\n See the previous error messages for details. Aborting.\n ")
Extracting symbol information for 'KSPlayer'...
warning: failed to retrieve search paths with pkg-config; maybe pkg-config is not installed
warning: you may be able to install sdl2 using your system-packager:
brew install sdl2
Building for debugging...
[0/3] Write swift-version-5BDAB9E9C0126B9D.txt
Build of product 'snippet-extract' complete! (0.19s)
warning: you may be able to install sdl2 using your system-packager:
brew install sdl2
Building for debugging...
[0/2] Compiling FFmpegKit FFmpegKit.c
[1/2] Write swift-version-5BDAB9E9C0126B9D.txt
Build of target: 'KSPlayer' complete! (0.47s)
error: unspecified("terminated(1): /Applications/Xcode-16.2.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract -sdk /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -F /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -I /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -L /Applications/Xcode-16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -Xcc -fmodule-map-file=/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/FFmpegKit.build/module.modulemap -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswscale.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswscale.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswresample.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libswresample.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavutil.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavutil.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavformat.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavformat.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavfilter.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavfilter.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavdevice.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavdevice.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavcodec.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/Libavcodec.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsmbclient.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsmbclient.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gnutls.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gnutls.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/hogweed.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/hogweed.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/nettle.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/nettle.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gmp.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/gmp.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libbluray.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libbluray.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfontconfig.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfontconfig.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libass.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libass.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libharfbuzz.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libharfbuzz.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfribidi.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfribidi.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfreetype.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libfreetype.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsrt.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libsrt.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libzvbi.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libzvbi.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libplacebo.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libplacebo.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libdav1d.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libdav1d.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/lcms2.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/lcms2.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libshaderc_combined.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/libshaderc_combined.xcframework/macos-arm64_x86_64 -I /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/MoltenVK.xcframework/macos-arm64_x86_64 -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/MoltenVK.xcframework/macos-arm64_x86_64 -Xcc -fmodule-map-file=/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/DisplayCriteria.build/module.modulemap -Xcc -I -Xcc /Users/admin/builder/spi-builder-workspace/Sources/DisplayCriteria/include -I /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Modules -module-name KSPlayer -target arm64-apple-macosx10.15 -module-cache-path /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/ModuleCache -minimum-access-level public -skip-inherited-docs -emit-extension-block-symbols -output-dir /Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/extracted-symbols/spi-builder-workspace/KSPlayer output:\n <module-includes>:4:9: note: in file included from <module-includes>:4:\n #import \"/Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include/avformat_shim.h\"\n ^\n /Users/admin/builder/spi-builder-workspace/.build/checkouts/FFmpegKit/Sources/FFmpegKit/include/avformat_shim.h:4:9: error: \'Libavformat/avformat.h\' file not found\n #import <Libavformat/avformat.h>\n ^\n <unknown>:0: error: could not build Objective-C module \'FFmpegKit\'\n Error: Failed to load the module \'KSPlayer\'. Are you missing build dependencies or include/framework directories?\n See the previous error messages for details. Aborting.\n ")
Error while generating docs: retryLimitExceeded(lastError: Optional(Shell command failed:
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift package --allow-writing-to-directory .docs/kingslay/ksplayer/2.3.4 generate-documentation --emit-digest --disable-indexing --output-path .docs/kingslay/ksplayer/2.3.4 --hosting-base-path kingslay/ksplayer/2.3.4 --source-service github --source-service-base-url https://github.com/kingslay/KSPlayer/blob/2.3.4 --checkout-path $PWD --target KSPlayer))
✅ Doc result (failed) reported
Done.