The Swift Package Index logo.Swift Package Index

Build Information

Successful build of KSPlayer, reference main (181fb5), with Swift 6.1 for macOS (SPM) on 30 Apr 2026 15:58:17 UTC.

Swift 6 data race errors: 135

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.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

/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 requirement from protocol 'FrameOutput'; 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 requirement from protocol 'FrameOutput'; 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 requirement from protocol 'FrameOutput'; 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 requirement from protocol 'FrameOutput'; 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 requirement from protocol 'FrameOutput'; 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 requirement from protocol 'FrameOutput'; 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/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 |         }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/usr/include/objc/NSObject.h:53:12: note: class 'NSObject' does not conform to the 'Sendable' protocol
 51 | OBJC_ROOT_CLASS
 52 | OBJC_EXPORT
 53 | @interface NSObject <NSObject> {
    |            `- note: class 'NSObject' does not conform to the 'Sendable' protocol
 54 | #pragma clang diagnostic push
 55 | #pragma clang diagnostic ignored "-Wobjc-interface-ivars"
/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: add '@MainActor' to make static property 'enableSensor' part of global actor 'MainActor'
    |                `- 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: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: add '@MainActor' to make static property 'stackSize' part of global actor 'MainActor'
    |                `- 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/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: add '@MainActor' to make static property 'isClearVideoWhereReplace' part of global actor 'MainActor'
    |                `- 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/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: add '@MainActor' to make static property 'audioPlayerType' part of global actor 'MainActor'
    |                `- 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: add '@MainActor' to make static property 'videoPlayerType' part of global actor 'MainActor'
    |                `- 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/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: add '@MainActor' to make static property 'yadifMode' part of global actor 'MainActor'
    |                `- 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: add '@MainActor' to make static property 'deInterlaceAddIdet' part of global actor 'MainActor'
    |                `- 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: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- 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)")
[81/91] Compiling KSPlayer UXKit.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[82/91] Compiling KSPlayer Utility.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[83/91] Compiling KSPlayer AVFFmpegExtension.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[84/91] Compiling KSPlayer AVFoundationExtension.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[85/91] Compiling KSPlayer AudioEnginePlayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[86/91] Compiling KSPlayer AudioGraphPlayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
532 |     public typealias RawValue = String
533 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
558 |     public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
562 |     public typealias RawValue = String
563 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
590 |     public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
594 |     public typealias RawValue = String
595 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
    | |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
622 |     public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
626 |     public typealias RawValue = String
627 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
    | |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
656 |     public init?(rawValue: String) {
657 |         guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
    | |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
674 |     public typealias RawValue = String
675 |     public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
    | |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
758 |     public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
    | |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
762 |     public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
    | |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
766 |     public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
 41 | }
 42 |
 43 | class GIFCreator {
    |       `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
 44 |     private let destination: CGImageDestination
 45 |     private let frameProperties: CFDictionary
    :
169 |                 guard let imageRef else { return }
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
    |                 `- warning: capture of 'gifCreator' with non-sendable type 'GIFCreator' in a '@Sendable' closure
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                 |- warning: capture of 'progress' with non-sendable type '(Double) -> Void' in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
    |                     |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 |                 } else {
177 |                     let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code
168 |             case .succeeded:
169 |                 guard let imageRef else { return }
170 |                 i += 1
    |                 `- warning: mutation of captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code
170 |                 i += 1
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
    |                                 `- warning: reference to captured var 'i' in concurrently-executing code
173 |                 guard i == count else { return }
174 |                 if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code
171 |                 gifCreator.add(image: imageRef)
172 |                 progress(Double(i) / Double(count))
173 |                 guard i == count else { return }
    |                       `- warning: reference to captured var 'i' in concurrently-executing code
174 |                 if gifCreator.finalize() {
175 |                     completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
    |                             `- note: parameter 'block' is implicitly non-sendable
356 |     if Thread.isMainThread {
357 |         block()
358 |     } else {
359 |         Task {
360 |             await MainActor.run(body: block)
    |                                       `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
422 |             }
423 |             // 下载的临时文件要马上就用。不然可能会马上被清空
424 |             completion(response.suggestedFilename ?? url.lastPathComponent, url)
    |             |- warning: capture of 'completion' with non-sendable type '(String, URL) -> Void' in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 |         }
426 |         task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
386 |     public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 |         lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
401 |     public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 |         var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 |     var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 |  * new elements of the union fitting in sizeof(uint64_t).
306 |  */
307 | typedef struct AVChannelLayout {
    |                `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 |     /**
309 |      * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  1 | import CoreMedia
  2 | import FFmpegKit
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil'
  3 | import Libavcodec
  4 | import Libavfilter
    :
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 |     static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |     var layoutTag: AudioChannelLayoutTag? {
411 |         KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
    | |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
432 |     public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 |         lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
    | |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
    | `- note: add '@retroactive' to silence this warning
109 |     public var description: String {
110 |         "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
225 |     func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 |         try FileManager.default.removeItem(at: outputURL)
227 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
228 |             guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
    |                                                 `- note: closure captures 'self' which is accessible to code in the current task
229 |             exportSession.outputURL = outputURL
230 |             await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
357 |         block()
358 |     } else {
359 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
360 |             await MainActor.run(body: block)
    |                                       `- note: closure captures 'block' which is accessible to code in the current task
361 |         }
362 |     }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
201 |             // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 |             DispatchQueue.main.async { [weak self] in
203 |                 self?.play()
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
204 |             }
205 |         }
[87/91] Compiling KSPlayer PlayerFullScreenViewController.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:67:17: warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
11 | #endif
12 | public protocol SeekViewProtocol {
13 |     func set(text: String, isAdd: Bool)
   |          `- note: mark the protocol requirement 'set(text:isAdd:)' 'async' to allow actor-isolated conformances
14 | }
15 |
   :
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
   |                     `- note: add '@preconcurrency' to the 'SeekViewProtocol' conformance to defer isolation checking to run time
67 |     public func set(text: String, isAdd: Bool) {
   |                 |- warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
   |                 `- note: add 'nonisolated' to 'set(text:isAdd:)' to make this instance method not isolated to the actor
68 |         seekToLabel.text = text
69 |         if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 952 | public extension KSOptions {
 953 |     /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
     |                |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
     |                |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
     |                |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 959 |     /// 开启音量手势 默认true
 960 |     static var enableVolumeGestures = true
/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: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 960 |     static var enableVolumeGestures = true
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
     |                |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
 965 |     static var canBackgroundPlay = false
     |                |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 966 | }
 967 |
[88/91] Compiling KSPlayer PlayerTransitionAnimator.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:67:17: warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
11 | #endif
12 | public protocol SeekViewProtocol {
13 |     func set(text: String, isAdd: Bool)
   |          `- note: mark the protocol requirement 'set(text:isAdd:)' 'async' to allow actor-isolated conformances
14 | }
15 |
   :
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
   |                     `- note: add '@preconcurrency' to the 'SeekViewProtocol' conformance to defer isolation checking to run time
67 |     public func set(text: String, isAdd: Bool) {
   |                 |- warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
   |                 `- note: add 'nonisolated' to 'set(text:isAdd:)' to make this instance method not isolated to the actor
68 |         seekToLabel.text = text
69 |         if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 952 | public extension KSOptions {
 953 |     /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
     |                |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
     |                |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
     |                |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 959 |     /// 开启音量手势 默认true
 960 |     static var enableVolumeGestures = true
/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: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 960 |     static var enableVolumeGestures = true
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
     |                |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
 965 |     static var canBackgroundPlay = false
     |                |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 966 | }
 967 |
[89/91] Compiling KSPlayer SeekView.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:67:17: warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
11 | #endif
12 | public protocol SeekViewProtocol {
13 |     func set(text: String, isAdd: Bool)
   |          `- note: mark the protocol requirement 'set(text:isAdd:)' 'async' to allow actor-isolated conformances
14 | }
15 |
   :
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
   |                     `- note: add '@preconcurrency' to the 'SeekViewProtocol' conformance to defer isolation checking to run time
67 |     public func set(text: String, isAdd: Bool) {
   |                 |- warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
   |                 `- note: add 'nonisolated' to 'set(text:isAdd:)' to make this instance method not isolated to the actor
68 |         seekToLabel.text = text
69 |         if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 952 | public extension KSOptions {
 953 |     /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
     |                |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
     |                |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
     |                |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 959 |     /// 开启音量手势 默认true
 960 |     static var enableVolumeGestures = true
/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: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 960 |     static var enableVolumeGestures = true
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
     |                |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
 965 |     static var canBackgroundPlay = false
     |                |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 966 | }
 967 |
[90/91] Compiling KSPlayer VideoPlayerView.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:67:17: warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
11 | #endif
12 | public protocol SeekViewProtocol {
13 |     func set(text: String, isAdd: Bool)
   |          `- note: mark the protocol requirement 'set(text:isAdd:)' 'async' to allow actor-isolated conformances
14 | }
15 |
   :
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
   |                     `- note: add '@preconcurrency' to the 'SeekViewProtocol' conformance to defer isolation checking to run time
67 |     public func set(text: String, isAdd: Bool) {
   |                 |- warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
   |                 `- note: add 'nonisolated' to 'set(text:isAdd:)' to make this instance method not isolated to the actor
68 |         seekToLabel.text = text
69 |         if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 952 | public extension KSOptions {
 953 |     /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
     |                |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
     |                |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
     |                |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 959 |     /// 开启音量手势 默认true
 960 |     static var enableVolumeGestures = true
/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: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 960 |     static var enableVolumeGestures = true
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
     |                |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
 965 |     static var canBackgroundPlay = false
     |                |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 966 | }
 967 |
[91/91] Compiling KSPlayer resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:67:17: warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
11 | #endif
12 | public protocol SeekViewProtocol {
13 |     func set(text: String, isAdd: Bool)
   |          `- note: mark the protocol requirement 'set(text:isAdd:)' 'async' to allow actor-isolated conformances
14 | }
15 |
   :
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
   |                     `- note: add '@preconcurrency' to the 'SeekViewProtocol' conformance to defer isolation checking to run time
67 |     public func set(text: String, isAdd: Bool) {
   |                 |- warning: main actor-isolated instance method 'set(text:isAdd:)' cannot be used to satisfy nonisolated requirement from protocol 'SeekViewProtocol'; this is an error in the Swift 6 language mode
   |                 `- note: add 'nonisolated' to 'set(text:isAdd:)' to make this instance method not isolated to the actor
68 |         seekToLabel.text = text
69 |         if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 952 | public extension KSOptions {
 953 |     /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
     |                |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 954 |     static var topBarShowInCase = KSPlayerTopBarShowCase.always
 955 |     /// 自动隐藏操作栏的时间间隔 默认5秒
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
     |                |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 956 |     static var animateDelayTimeInterval = TimeInterval(5)
 957 |     /// 开启亮度手势 默认true
 958 |     static var enableBrightnessGestures = true
     |                |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 959 |     /// 开启音量手势 默认true
 960 |     static var enableVolumeGestures = true
/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: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 960 |     static var enableVolumeGestures = true
 961 |     /// 开启进度滑动手势 默认true
 962 |     static var enablePlaytimeGestures = true
     |                |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 963 |     /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
 964 |     /// 是否能后台播放视频
 965 |     static var canBackgroundPlay = false
     |                |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
     |                |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
     |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 966 | }
 967 |
Build complete! (178.35s)
Fetching https://github.com/kingslay/FFmpegKit.git
[1/10438] Fetching ffmpegkit
Fetched https://github.com/kingslay/FFmpegKit.git from cache (157.43s)
Computing version for https://github.com/kingslay/FFmpegKit.git
Computed https://github.com/kingslay/FFmpegKit.git at 6.1.3 (158.21s)
Creating working copy for https://github.com/kingslay/FFmpegKit.git
Working copy of https://github.com/kingslay/FFmpegKit.git resolved at 6.1.3
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
warning: you may be able to install sdl2 using your system-packager:
    brew install sdl2
Build complete.
{
  "default_localization" : "en",
  "dependencies" : [
    {
      "identity" : "ffmpegkit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "6.1.3",
            "upper_bound" : "7.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kingslay/FFmpegKit.git"
    }
  ],
  "manifest_display_name" : "KSPlayer",
  "name" : "KSPlayer",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    },
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "KSPlayer",
      "targets" : [
        "KSPlayer"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "KSPlayerTests",
      "module_type" : "SwiftTarget",
      "name" : "KSPlayerTests",
      "path" : "Tests/KSPlayerTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/KSPlayerTests/Resources/test.m3u",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "AudioTest.swift",
        "KSAVPlayerTest.swift",
        "KSMEPlayerTest.swift",
        "KSPlayerLayerTest.swift",
        "M3UParseTest.swift",
        "SubtitleTest.swift",
        "VideoPlayerControllerTest.swift",
        "VideoPlayerViewTest.swift"
      ],
      "target_dependencies" : [
        "KSPlayer"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KSPlayer",
      "module_type" : "SwiftTarget",
      "name" : "KSPlayer",
      "path" : "Sources/KSPlayer",
      "product_dependencies" : [
        "FFmpegKit"
      ],
      "product_memberships" : [
        "KSPlayer"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/Shaders.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "AVPlayer/KSAVPlayer.swift",
        "AVPlayer/KSOptions.swift",
        "AVPlayer/KSPictureInPictureController.swift",
        "AVPlayer/KSPlayerLayer.swift",
        "AVPlayer/KSVideoPlayer.swift",
        "AVPlayer/MediaPlayerProtocol.swift",
        "AVPlayer/PlayerDefines.swift",
        "Audio/AudioPlayerView.swift",
        "Core/AppKitExtend.swift",
        "Core/PlayerToolBar.swift",
        "Core/PlayerView.swift",
        "Core/UIKitExtend.swift",
        "Core/UXKit.swift",
        "Core/Utility.swift",
        "MEPlayer/AVFFmpegExtension.swift",
        "MEPlayer/AVFoundationExtension.swift",
        "MEPlayer/AudioEnginePlayer.swift",
        "MEPlayer/AudioGraphPlayer.swift",
        "MEPlayer/AudioRendererPlayer.swift",
        "MEPlayer/AudioUnitPlayer.swift",
        "MEPlayer/CircularBuffer.swift",
        "MEPlayer/EmbedDataSouce.swift",
        "MEPlayer/FFmpegAssetTrack.swift",
        "MEPlayer/FFmpegDecode.swift",
        "MEPlayer/Filter.swift",
        "MEPlayer/KSMEPlayer.swift",
        "MEPlayer/MEPlayerItem.swift",
        "MEPlayer/MEPlayerItemTrack.swift",
        "MEPlayer/MetalPlayView.swift",
        "MEPlayer/Model.swift",
        "MEPlayer/Resample.swift",
        "MEPlayer/SubtitleDecode.swift",
        "MEPlayer/ThumbnailController.swift",
        "MEPlayer/VideoToolboxDecode.swift",
        "Metal/DisplayModel.swift",
        "Metal/MetalRender.swift",
        "Metal/MotionSensor.swift",
        "Metal/PixelBufferProtocol.swift",
        "Metal/Transforms.swift",
        "Subtitle/AudioRecognize.swift",
        "Subtitle/KSParseProtocol.swift",
        "Subtitle/KSSubtitle.swift",
        "Subtitle/SubtitleDataSouce.swift",
        "SwiftUI/AirPlayView.swift",
        "SwiftUI/KSVideoPlayerView.swift",
        "SwiftUI/KSVideoPlayerViewBuilder.swift",
        "SwiftUI/LiveTextImage.swift",
        "SwiftUI/Slider.swift",
        "Video/BrightnessVolume.swift",
        "Video/IOSVideoPlayerView.swift",
        "Video/KSMenu.swift",
        "Video/KSPlayerItem.swift",
        "Video/MacVideoPlayerView.swift",
        "Video/PlayerFullScreenViewController.swift",
        "Video/PlayerTransitionAnimator.swift",
        "Video/SeekView.swift",
        "Video/VideoPlayerView.swift"
      ],
      "target_dependencies" : [
        "DisplayCriteria"
      ],
      "type" : "library"
    },
    {
      "c99name" : "DisplayCriteria",
      "module_type" : "ClangTarget",
      "name" : "DisplayCriteria",
      "path" : "Sources/DisplayCriteria",
      "product_memberships" : [
        "KSPlayer"
      ],
      "sources" : [
        "DisplayCriteria.m"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.