Build Information
Failed to build OpenImmersive, reference 1.6.1 (cd33fd), with Swift 6.3 for macOS (SPM) on 18 Apr 2026 10:53:18 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64Build Log
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @ObservationTracked ---------------------------
|2 |
|3 | @ObservationIgnored
|4 | private var _displayLink: CADisplayLink?
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:42: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
| | `- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add '@available' attribute to enclosing property
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @ObservationTracked:2:40: error: 'Task' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
|2 | private var _dismissControlPanelTask: Task<Void, Never>?
| | `- error: 'Task' is only available in macOS 10.15 or newer
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:493:37: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
491 |
492 | /// Callback from the display link. This will execute for each display frame, which may be a different rate from the video.
493 | @objc private func tick(_ link: CADisplayLink) {
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing instance method
494 | guard framePacking != .none, let videoOutput, let injector else {
495 | return
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:639:1: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on class 'VideoPlayer' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
637 | dismissControlPanelTask = nil
638 | }
639 | }
+--- macro expansion @Observable -----------------------------------
| 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
| | `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
| 2 |
| 3 | internal nonisolated func access<$s13OpenImmersive11VideoPlayer10ObservablefMm_6MemberfMu_>(
+-------------------------------------------------------------------
640 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:22:27: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
20 | /// The renderer to use for enqueueing. Expose this so callers can
21 | /// associate it with a display layer or RealityKit component.
22 | public let renderer = AVSampleBufferVideoRenderer()
| `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
23 | /// The source media's frame packing type, must be .sideBySide or .overUnder.
24 | private let packing: VideoItem.FramePacking
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:152:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
148 |
149 | /// Instruct the UI to reveal the control panel.
150 | public func showControlPanel() {
| `- note: add '@available' attribute to enclosing instance method
151 | shouldShowPlaybackOptions = false
152 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
153 | shouldShowControlPanel = true
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:160:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
157 |
158 | /// Instruct the UI to hide the control panel.
159 | public func hideControlPanel() {
| `- note: add '@available' attribute to enclosing instance method
160 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
161 | shouldShowPlaybackOptions = false
162 | shouldShowControlPanel = false
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:180:13: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
176 | ///
177 | /// This will only do something if resolution or audio options are available.
178 | public func togglePlaybackOptions() {
| `- note: add '@available' attribute to enclosing instance method
179 | if bitrateLadder.count > 1 || audioOptions.count > 1 {
180 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
181 | shouldShowPlaybackOptions.toggle()
182 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:192:27: error: 'AVAudioSession' is unavailable in macOS
190 | // Configure the audio session for playback. Set the `moviePlayback` mode
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
| `- error: 'AVAudioSession' is unavailable in macOS
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h:29:12: note: 'AVAudioSession' has been explicitly marked unavailable here
27 | NS_SWIFT_SENDABLE
28 | API_AVAILABLE(ios(3.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos)
29 | @interface AVAudioSession : NSObject {
| `- note: 'AVAudioSession' has been explicitly marked unavailable here
30 | @private
31 | void *_impl;
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:192:42: error: 'sharedInstance()' is unavailable in macOS
190 | // Configure the audio session for playback. Set the `moviePlayback` mode
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
| `- error: 'sharedInstance()' is unavailable in macOS
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
AVFAudio.AVAudioSession.sharedInstance:3:19: note: 'sharedInstance()' has been explicitly marked unavailable here
1 | class AVAudioSession {
2 | @available(macOS, unavailable)
3 | open class func sharedInstance() -> AVAudioSession}
| `- note: 'sharedInstance()' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:25: error: 'setCategory(_:mode:policy:options:)' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'setCategory(_:mode:policy:options:)' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
AVFAudio.AVAudioSession.setCategory:3:13: note: 'setCategory(_:mode:policy:options:)' has been explicitly marked unavailable here
1 | class AVAudioSession {
2 | @available(macOS, unavailable)
3 | open func setCategory(_ category: AVAudioSession.Category, mode: AVAudioSession.Mode, policy: AVAudioSession.RouteSharingPolicy, options: AVAudioSession.CategoryOptions = []) throws}
| `- note: 'setCategory(_:mode:policy:options:)' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:38: error: 'playback' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'playback' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h:100:40: note: 'playback' has been explicitly marked unavailable here
98 |
99 | /*! Use this category for music tracks.*/
100 | OS_EXPORT AVAudioSessionCategory const AVAudioSessionCategoryPlayback API_AVAILABLE(ios(3.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
| `- note: 'playback' has been explicitly marked unavailable here
101 |
102 | /*! Use this category when recording audio. */
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:55: error: 'moviePlayback' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'moviePlayback' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h:165:36: note: 'moviePlayback' has been explicitly marked unavailable here
163 | Setting this mode engages appropriate output signal processing for movie playback scenarios.
164 | Content using this mode is eligible for Enhance Dialogue processing on supported routes with capable hardware */
165 | OS_EXPORT AVAudioSessionMode const AVAudioSessionModeMoviePlayback API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
| `- note: 'moviePlayback' has been explicitly marked unavailable here
166 |
167 | /*! Only valid with kAudioSessionCategory_PlayAndRecord. Reduces the number of allowable audio
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:79: error: 'longFormVideo' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'longFormVideo' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
AVFAudio.AVAudioSession.RouteSharingPolicy.longFormVideo:4:10: note: 'longFormVideo' has been explicitly marked unavailable here
2 | enum RouteSharingPolicy {
3 | @available(macOS, unavailable)
4 | case longFormVideo }
| `- note: 'longFormVideo' has been explicitly marked unavailable here
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:194:25: error: value of type 'AVAudioSession' has no member 'setIntendedSpatialExperience'
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
| `- error: value of type 'AVAudioSession' has no member 'setIntendedSpatialExperience'
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
196 | )
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:18: error: cannot infer contextual base in reference to member 'headTracked'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'headTracked'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:47: error: cannot infer contextual base in reference to member 'automatic'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'automatic'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:78: error: cannot infer contextual base in reference to member 'automatic'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'automatic'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:231:13: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
229 |
230 | // Detect resolution and field of view, if available
231 | Task { [weak self] in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
232 | guard let self,
233 | let asset = playerItem.asset as? AVURLAsset,
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
229 |
230 | // Detect resolution and field of view, if available
231 | Task { [weak self] in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
232 | guard let self,
233 | let asset = playerItem.asset as? AVURLAsset,
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:250:21: error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
248 | selectedBitrateRungIndex = -1
249 | selectedAudioIndex = -1
250 | if item.url.host() != nil {
| |- error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
251 | playlistReader = PlaylistReader(url: item.url) { reader in
252 | if case .success = reader.state {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:274:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
266 |
267 | /// Load an HLS stream variant for the currently selected resolution and audio options, preserving other states.
268 | private func playSelectedVariant() {
| `- note: add '@available' attribute to enclosing instance method
269 | guard let url,
270 | let playerItem = makePlayerItem(url) else {
:
272 | }
273 |
274 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
275 | shouldShowPlaybackOptions = false
276 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:305:16: error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
302 | /// - Parameters:
303 | /// - url: the URL to the media.
304 | private func makePlayerItem(_ url: URL) -> AVPlayerItem? {
| `- note: add '@available' attribute to enclosing instance method
305 | if url.host() == nil, url.pathExtension != "m3u8" {
| |- error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
306 | return AVPlayerItem(url: url)
307 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:370:23: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
368 | return
369 | }
370 | self?.renderer?.flush()
| `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
371 | }
372 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:402:19: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
400 | return
401 | }
402 | self?.renderer?.flush()
| `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
403 | }
404 | restartControlPanelTask()
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:486:31: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
465 | /// - Parameters:
466 | /// - playerItem: the player item of the media that needs APMP injection.
467 | private func setupInjector(_ playerItem: AVPlayerItem) {
| `- note: add '@available' attribute to enclosing instance method
468 | guard framePacking != .none else {
469 | return
:
484 |
485 | displayLink = {
486 | let displayLink = CADisplayLink(target: self, selector: #selector(tick))
| |- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
487 | displayLink.add(to: .main, forMode: .common)
488 | return displayLink
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:486:31: error: 'init(target:selector:)' is unavailable in macOS
484 |
485 | displayLink = {
486 | let displayLink = CADisplayLink(target: self, selector: #selector(tick))
| `- error: 'init(target:selector:)' is unavailable in macOS
487 | displayLink.add(to: .main, forMode: .common)
488 | return displayLink
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CADisplayLink.h:32:1: note: 'init(target:selector:)' has been explicitly marked unavailable here
30 | * For macOS, see NSView/NSWindow/NSScreen.displayLink(withTarget:selector:). */
31 |
32 | + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel
| `- note: 'init(target:selector:)' has been explicitly marked unavailable here
33 | API_UNAVAILABLE(macos);
34 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:500:17: warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
498 | let itemTime = videoOutput.itemTime(forHostTime: link.targetTimestamp)
499 | do {
500 | let result = try injector.processFrame(
| `- warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
501 | videoOutput: videoOutput,
502 | at: itemTime
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:536:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
534 | // but some HLS manifests only advertise bitrate.
535 | if let event, event.indicatedAverageBitrate > 0 {
536 | self.bitrate = event.indicatedAverageBitrate
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
537 | } else if let event, event.indicatedBitrate > 0 {
538 | self.bitrate = event.indicatedBitrate
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:538:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
536 | self.bitrate = event.indicatedAverageBitrate
537 | } else if let event, event.indicatedBitrate > 0 {
538 | self.bitrate = event.indicatedBitrate
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
539 | } else {
540 | self.bitrate = 0
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:540:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
538 | self.bitrate = event.indicatedBitrate
539 | } else {
540 | self.bitrate = 0
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
541 | }
542 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:543:29: warning: main actor-isolated property 'scrubState' can not be referenced from a Sendable closure
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
| `- note: property declared here
110 | didSet {
111 | switch scrubState {
:
541 | }
542 |
543 | switch self.scrubState {
| `- warning: main actor-isolated property 'scrubState' can not be referenced from a Sendable closure
544 | case .notScrubbing:
545 | self.currentTime = time.seconds
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:545:26: warning: main actor-isolated property 'currentTime' can not be mutated from a Sendable closure
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
| `- note: mutation of this property is only permitted within the actor
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
:
543 | switch self.scrubState {
544 | case .notScrubbing:
545 | self.currentTime = time.seconds
| `- warning: main actor-isolated property 'currentTime' can not be mutated from a Sendable closure
546 | break
547 | case .scrubStarted: return
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:560:27: warning: main actor-isolated property 'duration' can not be mutated from a Sendable closure
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
| `- note: mutation of this property is only permitted within the actor
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
:
558 | let duration = CMTimeGetSeconds(item.duration)
559 | if !duration.isNaN {
560 | self?.duration = duration
| `- warning: main actor-isolated property 'duration' can not be mutated from a Sendable closure
561 | }
562 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:570:23: warning: main actor-isolated property 'loading' can not be mutated from a Sendable closure
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
| `- note: mutation of this property is only permitted within the actor
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
:
568 | options: [.new, .initial]
569 | ) { [weak self] item, _ in
570 | self?.loading = item.status == .unknown
| `- warning: main actor-isolated property 'loading' can not be mutated from a Sendable closure
571 | if item.status == .failed, let error = item.error {
572 | print("Error: failed to load media: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:573:27: warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
| `- note: mutation of this property is only permitted within the actor
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
:
571 | if item.status == .failed, let error = item.error {
572 | print("Error: failed to load media: \(error.localizedDescription)")
573 | self?.error = error
| `- warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
574 | } else {
575 | self?.error = nil
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:575:27: warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
| `- note: mutation of this property is only permitted within the actor
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
:
573 | self?.error = error
574 | } else {
575 | self?.error = nil
| `- warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
576 | }
577 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:585:23: warning: main actor-isolated property 'buffering' can not be mutated from a Sendable closure
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
| `- note: mutation of this property is only permitted within the actor
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
:
583 | options: [.new, .old, .initial]
584 | ) { [weak self] player, status in
585 | self?.buffering = player.timeControlStatus == .waitingToPlayAtSpecifiedRate
| `- warning: main actor-isolated property 'buffering' can not be mutated from a Sendable closure
586 | // buffering doesn't bring up the control panel but prevents auto dismiss.
587 | // auto dismiss after play resumed.
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:589:27: warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
587 | // auto dismiss after play resumed.
588 | if (status.oldValue, status.newValue) == (.waitingToPlayAtSpecifiedRate, .playing) {
589 | self?.restartControlPanelTask()
| `- warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
590 | }
591 | }
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: calls to instance method 'restartControlPanelTask()' from outside of its actor context are implicitly asynchronous
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:625:35: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:625:35: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:24: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:29: error: 'sleep(for:tolerance:clock:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'sleep(for:tolerance:clock:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:41: error: 'seconds' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'seconds' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:628:17: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
629 | hideControlPanel()
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:628:22: error: 'isCancelled' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
| |- error: 'isCancelled' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
629 | hideControlPanel()
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:636:34: error: 'cancel()' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
633 |
634 | /// Cancel the current task to dismiss the control panel, if any.
635 | private func cancelControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
636 | dismissControlPanelTask?.cancel()
| |- error: 'cancel()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
637 | dismissControlPanelTask = nil
638 | }
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/AVMetadataIdentifier+Codable.swift:11:1: warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
9 |
10 | /// Codable extension of AVMetadataIdentifier so it can be used in VideoItem
11 | extension AVMetadataIdentifier: Codable {
| |- warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
12 | public typealias RawValue = String
13 |
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
[24/24] Compiling OpenImmersive AVMetadataIdentifier+Codable.swift
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:36:27: error: 'ARKitSession' is only available in macOS 26.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
34 | }
35 |
36 | private let session = ARKitSession()
| `- error: 'ARKitSession' is only available in macOS 26.0 or newer
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:36:27: error: 'init()' is unavailable in macOS
34 | }
35 |
36 | private let session = ARKitSession()
| `- error: 'init()' is unavailable in macOS
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
ARKit.ARKitSession.init:3:22: note: 'init()' has been explicitly marked unavailable here
1 | class ARKitSession {
2 | @available(macOS, unavailable)
3 | public convenience init()}
| `- note: 'init()' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:37:33: error: 'WorldTrackingProvider' is only available in macOS 26.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
35 |
36 | private let session = ARKitSession()
37 | private let worldTracking = WorldTrackingProvider()
| `- error: 'WorldTrackingProvider' is only available in macOS 26.0 or newer
38 | private var subscription: EventSubscription?
39 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:38:31: error: 'EventSubscription' is only available in macOS 15.0 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
36 | private let session = ARKitSession()
37 | private let worldTracking = WorldTrackingProvider()
38 | private var subscription: EventSubscription?
| `- error: 'EventSubscription' is only available in macOS 15.0 or newer
39 |
40 | /// Starts head tracking by starting the underlying `ARKitSession` and subscribes to pose update events.
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:44:32: error: cannot find type 'RealityViewContent' in scope
42 | /// - content: The `RealityViewContent` provided by the `RealityView`'s `body` closure.
43 | /// - handler: A closure that runs when the head pose update occurs.
44 | public func start(content: RealityViewContent, _ handler: @escaping (SceneEvents.Update) -> Void) {
| `- error: cannot find type 'RealityViewContent' in scope
45 | guard state == .stopped else { return }
46 | state = .starting
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/HeadTracker.swift:44:74: error: 'SceneEvents' is only available in macOS 10.15 or newer
11 |
12 | /// Provides a convenience interface to obtain head pose transforms and subscribing a closure to handle pose update events.
13 | public class HeadTracker {
| `- note: add '@available' attribute to enclosing class
14 | public enum State {
15 | /// Head tracking is stopped.
:
42 | /// - content: The `RealityViewContent` provided by the `RealityView`'s `body` closure.
43 | /// - handler: A closure that runs when the head pose update occurs.
44 | public func start(content: RealityViewContent, _ handler: @escaping (SceneEvents.Update) -> Void) {
| | `- error: 'SceneEvents' is only available in macOS 10.15 or newer
| `- note: add '@available' attribute to enclosing instance method
45 | guard state == .stopped else { return }
46 | state = .starting
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
15 | //MARK: Video Player and Video Renderer
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:19:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'injector' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
17 | public let player = AVPlayer()
18 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
19 | private var injector: APMPInjector?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:27:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'title' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
25 | //MARK: Variables accessible to the UI
26 | /// The title of the current video (empty string if none).
27 | private(set) public var title: String = ""
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:29:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'description' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
27 | private(set) public var title: String = ""
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
30 | /// The url of the current video.
31 | private(set) public var url: URL?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:31:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'url' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
29 | private(set) public var description: String = ""
30 | /// The url of the current video.
31 | private(set) public var url: URL?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:33:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'metadata' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
31 | private(set) public var url: URL?
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:35:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'framePacking' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:37:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'projection' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:39:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'error' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:41:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'duration' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:43:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'paused' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
41 | private(set) public var duration: Double = 0
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:45:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'loading' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:47:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'buffering' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:49:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'hasReachedEnd' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
47 | private(set) public var buffering: Bool = false
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:51:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'playbackEndedAction' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
49 | private(set) public var hasReachedEnd: Bool = false
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:53:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'aspectRatio' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
51 | public var playbackEndedAction: CustomAction?
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:55:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'horizontalFieldOfView' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
53 | private(set) public var aspectRatio: Float?
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
56 | /// The vertical field of view for the current media (equirectangular projection only).
57 | public var verticalFieldOfView: Float {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:66:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bitrate' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:68:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bitrateLadder' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
66 | private(set) public var bitrate: Double = 0
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:70:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'selectedBitrateRungIndex' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
68 | private(set) public var bitrateLadder: [BitrateRung] = []
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:72:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'audioOptions' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
70 | private(set) public var selectedBitrateRungIndex: Int = -1
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:74:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'selectedAudioIndex' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
72 | private(set) public var audioOptions: [AudioOption] = []
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:76:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'shouldShowControlPanel' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
74 | private(set) public var selectedAudioIndex: Int = -1
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:78:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'shouldShowPlaybackOptions' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
76 | private(set) public var shouldShowControlPanel: Bool = true
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
79 | /// `true` if the HLS stream has a bitrate ladder with at least 2 rungs and the custom configuration doesn't prevent user selection.
80 | public var canChooseResolution: Bool {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:99:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'currentTime' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:109:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'scrubState' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
110 | didSet {
111 | switch scrubState {
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'displayLink' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:134:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'videoOutput' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:135:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'timeObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:136:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'durationObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:137:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'mediaStatusObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:138:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'bufferingObserver' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'dismissControlPanelTask' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:140:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'playlistReader' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
141 | private var delegate: PlaylistLoaderDelegate?
142 |
macro expansion @Observable:1:2: error: 'ObservationTracked()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:141:5: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on property 'delegate' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
+--- macro expansion @Observable -----------------------------------
|1 | @ObservationTracked
| | `- error: 'ObservationTracked()' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
142 |
143 | //MARK: Public methods
macro expansion @Observable:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:639:1: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on class 'VideoPlayer' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
637 | dismissControlPanelTask = nil
638 | }
639 | }
+--- macro expansion @Observable -----------------------------------
| 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
| 2 |
| 3 | internal nonisolated func access<$s13OpenImmersive11VideoPlayer10ObservablefMm_6MemberfMu_>(
+-------------------------------------------------------------------
640 |
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:19:40: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
17 | public let player = AVPlayer()
18 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
19 | private var injector: APMPInjector?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The APMP tag injector used in video streams that are frame-packed side by side or over under.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _injector: APMPInjector?
+-------------------------------------------------------------------
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
macro expansion @ObservationTracked:4:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:27:47: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
25 | //MARK: Variables accessible to the UI
26 | /// The title of the current video (empty string if none).
27 | private(set) public var title: String = ""
+--- macro expansion @ObservationTracked ---------------------------
|2 | /// The title of the current video (empty string if none).
|3 |
|4 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|5 | private var _title: String = ""
+-------------------------------------------------------------------
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:29:53: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
27 | private(set) public var title: String = ""
28 | /// A short description of the current video, displayed under the title (empty string if none).
29 | private(set) public var description: String = ""
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// A short description of the current video, displayed under the title (empty string if none).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _description: String = ""
+-------------------------------------------------------------------
30 | /// The url of the current video.
31 | private(set) public var url: URL?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:31:38: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
29 | private(set) public var description: String = ""
30 | /// The url of the current video.
31 | private(set) public var url: URL?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The url of the current video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _url: URL?
+-------------------------------------------------------------------
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:33:75: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
31 | private(set) public var url: URL?
32 | /// The AVFoundation metadata of the current video.
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The AVFoundation metadata of the current video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _metadata: [AVMetadataIdentifier: String] = [:]
+-------------------------------------------------------------------
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:35:73: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
33 | private(set) public var metadata: [AVMetadataIdentifier: String] = [:]
34 | /// The frame packing type of the video media, if any.
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The frame packing type of the video media, if any.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _framePacking: VideoItem.FramePacking = .none
+-------------------------------------------------------------------
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:37:98: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
35 | private(set) public var framePacking: VideoItem.FramePacking = .none
36 | /// The projection type of the video media, defaults to VR180.
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The projection type of the video media, defaults to VR180.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
+-------------------------------------------------------------------
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:39:42: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// A playback error, if any.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _error: Error?
+-------------------------------------------------------------------
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:41:49: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The duration in seconds of the current video (0 if none).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _duration: Double = 0
+-------------------------------------------------------------------
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:43:49: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
41 | private(set) public var duration: Double = 0
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is currently paused, or if playback has completed.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _paused: Bool = false
+-------------------------------------------------------------------
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:45:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is waiting to load the media.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _loading: Bool = false
+-------------------------------------------------------------------
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:47:52: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _buffering: Bool = false
+-------------------------------------------------------------------
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:49:56: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
47 | private(set) public var buffering: Bool = false
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if playback reached the end of the video and is no longer playing.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _hasReachedEnd: Bool = false
+-------------------------------------------------------------------
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:51:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
49 | private(set) public var hasReachedEnd: Bool = false
50 | /// The callback to execute when playback reaches the end of the video.
51 | public var playbackEndedAction: CustomAction?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The callback to execute when playback reaches the end of the video.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _playbackEndedAction: CustomAction?
+-------------------------------------------------------------------
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:53:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
51 | public var playbackEndedAction: CustomAction?
52 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
53 | private(set) public var aspectRatio: Float?
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The aspect ratio of the current media (width / height) (equirectangular projection only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _aspectRatio: Float?
+-------------------------------------------------------------------
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:55:65: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
53 | private(set) public var aspectRatio: Float?
54 | /// The horizontal field of view for the current media (equirectangular projection only).
55 | private(set) public var horizontalFieldOfView: Float = 180.0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The horizontal field of view for the current media (equirectangular projection only).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _horizontalFieldOfView: Float = 180.0
+-------------------------------------------------------------------
56 | /// The vertical field of view for the current media (equirectangular projection only).
57 | public var verticalFieldOfView: Float {
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:66:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _bitrate: Double = 0
+-------------------------------------------------------------------
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:68:62: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
66 | private(set) public var bitrate: Double = 0
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _bitrateLadder: [BitrateRung] = []
+-------------------------------------------------------------------
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:70:63: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
68 | private(set) public var bitrateLadder: [BitrateRung] = []
69 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
70 | private(set) public var selectedBitrateRungIndex: Int = -1
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The currently selected bitrate rung index, if any. Only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _selectedBitrateRungIndex: Int = -1
+-------------------------------------------------------------------
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:72:61: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
70 | private(set) public var selectedBitrateRungIndex: Int = -1
71 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
72 | private(set) public var audioOptions: [AudioOption] = []
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// Audio options available for the video stream, only available if streaming from a HLS server (m3u8) and with separate audio playlists.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _audioOptions: [AudioOption] = []
+-------------------------------------------------------------------
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:74:57: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
72 | private(set) public var audioOptions: [AudioOption] = []
73 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
74 | private(set) public var selectedAudioIndex: Int = -1
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// The currently selected audio index, if any. Only available if streaming from a HLS server (m3u8).
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _selectedAudioIndex: Int = -1
+-------------------------------------------------------------------
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:76:64: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
74 | private(set) public var selectedAudioIndex: Int = -1
75 | /// `true` if the control panel should be visible to the user.
76 | private(set) public var shouldShowControlPanel: Bool = true
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if the control panel should be visible to the user.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _shouldShowControlPanel: Bool = true
+-------------------------------------------------------------------
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:78:68: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
76 | private(set) public var shouldShowControlPanel: Bool = true
77 | /// `true` if the control panel should present resolution & audio options to the user.
78 | private(set) public var shouldShowPlaybackOptions: Bool = false
+--- macro expansion @ObservationTracked ---------------------------
|1 | /// `true` if the control panel should present resolution & audio options to the user.
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _shouldShowPlaybackOptions: Bool = false
+-------------------------------------------------------------------
79 | /// `true` if the HLS stream has a bitrate ladder with at least 2 rungs and the custom configuration doesn't prevent user selection.
80 | public var canChooseResolution: Bool {
macro expansion @ObservationTracked:5:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:99:39: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
+--- macro expansion @ObservationTracked ---------------------------
|3 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
|4 |
|5 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|6 | private var _currentTime: Double = 0
+-------------------------------------------------------------------
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
| 1 | /// The current state of the scrubber.
| 2 |
| 3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
| 4 | private var _scrubState: ScrubState = .notScrubbing {
| 5 |
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
macro expansion @ObservationTracked:3:6: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:44: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @ObservationTracked ---------------------------
|1 | //MARK: Private variables
|2 |
|3 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|4 | private var _displayLink: CADisplayLink?
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:134:54: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _videoOutput: AVPlayerItemVideoOutput?
+-------------------------------------------------------------------
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:135:35: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
133 | private var displayLink: CADisplayLink?
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _timeObserver: Any?
+-------------------------------------------------------------------
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:136:57: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _durationObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:137:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
135 | private var timeObserver: Any?
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _mediaStatusObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:138:58: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
136 | private var durationObserver: NSKeyValueObservation?
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _bufferingObserver: NSKeyValueObservation?
+-------------------------------------------------------------------
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _dismissControlPanelTask: Task<Void, Never>?
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:140:48: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _playlistReader: PlaylistReader?
+-------------------------------------------------------------------
141 | private var delegate: PlaylistLoaderDelegate?
142 |
macro expansion @ObservationTracked:1:2: error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:141:50: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
139 | private var dismissControlPanelTask: Task<Void, Never>?
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
| | `- error: 'ObservationIgnored()' is only available in macOS 14.0 or newer
|2 | private var _delegate: PlaylistLoaderDelegate?
+-------------------------------------------------------------------
142 |
143 | //MARK: Public methods
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:21:26: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| | `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing property
22 | injector?.renderer
23 | }
OpenImmersive/VideoPlayer.swift:123:36: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|18 | return
|19 | }
|20 | self?.renderer?.flush()
| | `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
|21 | self?.scrubState = .notScrubbing
|22 | self?.restartControlPanelTask()
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
OpenImmersive/VideoPlayer.swift:124:36: warning: main actor-isolated property 'scrubState' can not be mutated from a Sendable closure
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
| `- note: mutation of this property is only permitted within the actor
110 | didSet {
111 | switch scrubState {
:
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|19 | }
|20 | self?.renderer?.flush()
|21 | self?.scrubState = .notScrubbing
| | `- warning: main actor-isolated property 'scrubState' can not be mutated from a Sendable closure
|22 | self?.restartControlPanelTask()
|23 | }
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
OpenImmersive/VideoPlayer.swift:125:36: warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:130:6: note: expanded code originates here
128 | }
129 | }
130 | }
+--- macro expansion @ObservationTracked ---------------------------
|20 | self?.renderer?.flush()
|21 | self?.scrubState = .notScrubbing
|22 | self?.restartControlPanelTask()
| | `- warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
|23 | }
|24 | hasReachedEnd = false
+-------------------------------------------------------------------
131 |
132 | //MARK: Private variables
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: calls to instance method 'restartControlPanelTask()' from outside of its actor context are implicitly asynchronous
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:30: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing property
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
macro expansion @ObservationTracked:4:28: error: 'CADisplayLink' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:133:44: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
131 |
132 | //MARK: Private variables
133 | private var displayLink: CADisplayLink?
+--- macro expansion @ObservationTracked ---------------------------
|2 |
|3 | @ObservationIgnored
|4 | private var _displayLink: CADisplayLink?
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
+-------------------------------------------------------------------
134 | private var videoOutput: AVPlayerItemVideoOutput?
135 | private var timeObserver: Any?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:42: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
| | `- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add '@available' attribute to enclosing property
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
macro expansion @ObservationTracked:2:40: error: 'Task' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:139:60: note: expanded code originates here
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
137 | private var mediaStatusObserver: NSKeyValueObservation?
138 | private var bufferingObserver: NSKeyValueObservation?
139 | private var dismissControlPanelTask: Task<Void, Never>?
+--- macro expansion @ObservationTracked ---------------------------
|1 | @ObservationIgnored
|2 | private var _dismissControlPanelTask: Task<Void, Never>?
| | `- error: 'Task' is only available in macOS 10.15 or newer
+-------------------------------------------------------------------
140 | private var playlistReader: PlaylistReader?
141 | private var delegate: PlaylistLoaderDelegate?
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:493:37: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
491 |
492 | /// Callback from the display link. This will execute for each display frame, which may be a different rate from the video.
493 | @objc private func tick(_ link: CADisplayLink) {
| | `- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add '@available' attribute to enclosing instance method
494 | guard framePacking != .none, let videoOutput, let injector else {
495 | return
macro expansion @Observable:1:70: error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:639:1: note: expanded code originates here
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- note: in expansion of macro 'Observable' on class 'VideoPlayer' here
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
637 | dismissControlPanelTask = nil
638 | }
639 | }
+--- macro expansion @Observable -----------------------------------
| 1 | @ObservationIgnored private let _$observationRegistrar = Observation.ObservationRegistrar()
| | `- error: 'ObservationRegistrar' is only available in macOS 14.0 or newer
| 2 |
| 3 | internal nonisolated func access<$s13OpenImmersive11VideoPlayer10ObservablefMm_6MemberfMu_>(
+-------------------------------------------------------------------
640 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:13:2: error: 'Observable()' is only available in macOS 14.0 or newer
11 |
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
| `- error: 'Observable()' is only available in macOS 14.0 or newer
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
/Users/admin/builder/spi-builder-workspace/Sources/Utils/APMPInjector.swift:22:27: error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
11 |
12 | /// Injects APMP metadata into frames to render stereo frame-packed media efficiently.
13 | public class APMPInjector {
| `- note: add '@available' attribute to enclosing class
14 | /// Errors specific to APMP Injector.
15 | public enum APMPInjectorError: Error {
:
20 | /// The renderer to use for enqueueing. Expose this so callers can
21 | /// associate it with a display layer or RealityKit component.
22 | public let renderer = AVSampleBufferVideoRenderer()
| `- error: 'AVSampleBufferVideoRenderer' is only available in macOS 14.0 or newer
23 | /// The source media's frame packing type, must be .sideBySide or .overUnder.
24 | private let packing: VideoItem.FramePacking
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:152:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
148 |
149 | /// Instruct the UI to reveal the control panel.
150 | public func showControlPanel() {
| `- note: add '@available' attribute to enclosing instance method
151 | shouldShowPlaybackOptions = false
152 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
153 | shouldShowControlPanel = true
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:160:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
157 |
158 | /// Instruct the UI to hide the control panel.
159 | public func hideControlPanel() {
| `- note: add '@available' attribute to enclosing instance method
160 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
161 | shouldShowPlaybackOptions = false
162 | shouldShowControlPanel = false
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:180:13: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
176 | ///
177 | /// This will only do something if resolution or audio options are available.
178 | public func togglePlaybackOptions() {
| `- note: add '@available' attribute to enclosing instance method
179 | if bitrateLadder.count > 1 || audioOptions.count > 1 {
180 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
181 | shouldShowPlaybackOptions.toggle()
182 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:192:27: error: 'AVAudioSession' is unavailable in macOS
190 | // Configure the audio session for playback. Set the `moviePlayback` mode
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
| `- error: 'AVAudioSession' is unavailable in macOS
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h:29:12: note: 'AVAudioSession' has been explicitly marked unavailable here
27 | NS_SWIFT_SENDABLE
28 | API_AVAILABLE(ios(3.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos)
29 | @interface AVAudioSession : NSObject {
| `- note: 'AVAudioSession' has been explicitly marked unavailable here
30 | @private
31 | void *_impl;
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:192:42: error: 'sharedInstance()' is unavailable in macOS
190 | // Configure the audio session for playback. Set the `moviePlayback` mode
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
| `- error: 'sharedInstance()' is unavailable in macOS
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
AVFAudio.AVAudioSession.sharedInstance:3:19: note: 'sharedInstance()' has been explicitly marked unavailable here
1 | class AVAudioSession {
2 | @available(macOS, unavailable)
3 | open class func sharedInstance() -> AVAudioSession}
| `- note: 'sharedInstance()' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:25: error: 'setCategory(_:mode:policy:options:)' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'setCategory(_:mode:policy:options:)' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
AVFAudio.AVAudioSession.setCategory:3:13: note: 'setCategory(_:mode:policy:options:)' has been explicitly marked unavailable here
1 | class AVAudioSession {
2 | @available(macOS, unavailable)
3 | open func setCategory(_ category: AVAudioSession.Category, mode: AVAudioSession.Mode, policy: AVAudioSession.RouteSharingPolicy, options: AVAudioSession.CategoryOptions = []) throws}
| `- note: 'setCategory(_:mode:policy:options:)' has been explicitly marked unavailable here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:38: error: 'playback' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'playback' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h:100:40: note: 'playback' has been explicitly marked unavailable here
98 |
99 | /*! Use this category for music tracks.*/
100 | OS_EXPORT AVAudioSessionCategory const AVAudioSessionCategoryPlayback API_AVAILABLE(ios(3.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
| `- note: 'playback' has been explicitly marked unavailable here
101 |
102 | /*! Use this category when recording audio. */
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:55: error: 'moviePlayback' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'moviePlayback' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h:165:36: note: 'moviePlayback' has been explicitly marked unavailable here
163 | Setting this mode engages appropriate output signal processing for movie playback scenarios.
164 | Content using this mode is eligible for Enhance Dialogue processing on supported routes with capable hardware */
165 | OS_EXPORT AVAudioSessionMode const AVAudioSessionModeMoviePlayback API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
| `- note: 'moviePlayback' has been explicitly marked unavailable here
166 |
167 | /*! Only valid with kAudioSessionCategory_PlayAndRecord. Reduces the number of allowable audio
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:193:79: error: 'longFormVideo' is unavailable in macOS
191 | // to reduce the audio's dynamic range to help normalize audio levels.
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
| `- error: 'longFormVideo' is unavailable in macOS
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
AVFAudio.AVAudioSession.RouteSharingPolicy.longFormVideo:4:10: note: 'longFormVideo' has been explicitly marked unavailable here
2 | enum RouteSharingPolicy {
3 | @available(macOS, unavailable)
4 | case longFormVideo }
| `- note: 'longFormVideo' has been explicitly marked unavailable here
5 | }
6 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:194:25: error: value of type 'AVAudioSession' has no member 'setIntendedSpatialExperience'
192 | let session = AVAudioSession.sharedInstance()
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
| `- error: value of type 'AVAudioSession' has no member 'setIntendedSpatialExperience'
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
196 | )
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:18: error: cannot infer contextual base in reference to member 'headTracked'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'headTracked'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:47: error: cannot infer contextual base in reference to member 'automatic'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'automatic'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:195:78: error: cannot infer contextual base in reference to member 'automatic'
193 | try session.setCategory(.playback, mode: .moviePlayback, policy: .longFormVideo)
194 | try session.setIntendedSpatialExperience(
195 | .headTracked(soundStageSize: .automatic, anchoringStrategy: .automatic)
| `- error: cannot infer contextual base in reference to member 'automatic'
196 | )
197 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:231:13: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
229 |
230 | // Detect resolution and field of view, if available
231 | Task { [weak self] in
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
232 | guard let self,
233 | let asset = playerItem.asset as? AVURLAsset,
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
229 |
230 | // Detect resolution and field of view, if available
231 | Task { [weak self] in
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
232 | guard let self,
233 | let asset = playerItem.asset as? AVURLAsset,
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:250:21: error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
203 | /// - Parameters:
204 | /// - item: The object describing the video.
205 | public func openItem(_ item: VideoItem) {
| `- note: add '@available' attribute to enclosing instance method
206 | // Clean up the AVPlayer first, avoid bad states
207 | stop()
:
248 | selectedBitrateRungIndex = -1
249 | selectedAudioIndex = -1
250 | if item.url.host() != nil {
| |- error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
251 | playlistReader = PlaylistReader(url: item.url) { reader in
252 | if case .success = reader.state {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:274:9: error: 'withAnimation' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
266 |
267 | /// Load an HLS stream variant for the currently selected resolution and audio options, preserving other states.
268 | private func playSelectedVariant() {
| `- note: add '@available' attribute to enclosing instance method
269 | guard let url,
270 | let playerItem = makePlayerItem(url) else {
:
272 | }
273 |
274 | withAnimation {
| |- error: 'withAnimation' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
275 | shouldShowPlaybackOptions = false
276 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:305:16: error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
302 | /// - Parameters:
303 | /// - url: the URL to the media.
304 | private func makePlayerItem(_ url: URL) -> AVPlayerItem? {
| `- note: add '@available' attribute to enclosing instance method
305 | if url.host() == nil, url.pathExtension != "m3u8" {
| |- error: 'host(percentEncoded:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
306 | return AVPlayerItem(url: url)
307 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:370:23: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
368 | return
369 | }
370 | self?.renderer?.flush()
| `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
371 | }
372 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:402:19: warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
19 | private var injector: APMPInjector?
20 | /// The video renderer to use for media that are frame-packed side by side or over under.
21 | public var renderer: AVSampleBufferVideoRenderer? {
| `- note: property declared here
22 | injector?.renderer
23 | }
:
400 | return
401 | }
402 | self?.renderer?.flush()
| `- warning: main actor-isolated property 'renderer' can not be referenced from a Sendable closure
403 | }
404 | restartControlPanelTask()
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:486:31: error: 'CADisplayLink' is only available in macOS 14.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
465 | /// - Parameters:
466 | /// - playerItem: the player item of the media that needs APMP injection.
467 | private func setupInjector(_ playerItem: AVPlayerItem) {
| `- note: add '@available' attribute to enclosing instance method
468 | guard framePacking != .none else {
469 | return
:
484 |
485 | displayLink = {
486 | let displayLink = CADisplayLink(target: self, selector: #selector(tick))
| |- error: 'CADisplayLink' is only available in macOS 14.0 or newer
| `- note: add 'if #available' version check
487 | displayLink.add(to: .main, forMode: .common)
488 | return displayLink
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:486:31: error: 'init(target:selector:)' is unavailable in macOS
484 |
485 | displayLink = {
486 | let displayLink = CADisplayLink(target: self, selector: #selector(tick))
| `- error: 'init(target:selector:)' is unavailable in macOS
487 | displayLink.add(to: .main, forMode: .common)
488 | return displayLink
/Applications/Xcode-26.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CADisplayLink.h:32:1: note: 'init(target:selector:)' has been explicitly marked unavailable here
30 | * For macOS, see NSView/NSWindow/NSScreen.displayLink(withTarget:selector:). */
31 |
32 | + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel
| `- note: 'init(target:selector:)' has been explicitly marked unavailable here
33 | API_UNAVAILABLE(macos);
34 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:500:17: warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
498 | let itemTime = videoOutput.itemTime(forHostTime: link.targetTimestamp)
499 | do {
500 | let result = try injector.processFrame(
| `- warning: initialization of immutable value 'result' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
501 | videoOutput: videoOutput,
502 | at: itemTime
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:536:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
534 | // but some HLS manifests only advertise bitrate.
535 | if let event, event.indicatedAverageBitrate > 0 {
536 | self.bitrate = event.indicatedAverageBitrate
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
537 | } else if let event, event.indicatedBitrate > 0 {
538 | self.bitrate = event.indicatedBitrate
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:538:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
536 | self.bitrate = event.indicatedAverageBitrate
537 | } else if let event, event.indicatedBitrate > 0 {
538 | self.bitrate = event.indicatedBitrate
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
539 | } else {
540 | self.bitrate = 0
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:540:26: warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
64 | }
65 | /// The bitrate of the current video stream (0 if none), only available if streaming from a HLS server (m3u8).
66 | private(set) public var bitrate: Double = 0
| `- note: mutation of this property is only permitted within the actor
67 | /// Bitrate/resolution ladder available for the video stream, only available if streaming from a HLS server (m3u8).
68 | private(set) public var bitrateLadder: [BitrateRung] = []
:
538 | self.bitrate = event.indicatedBitrate
539 | } else {
540 | self.bitrate = 0
| `- warning: main actor-isolated property 'bitrate' can not be mutated from a Sendable closure
541 | }
542 |
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:543:29: warning: main actor-isolated property 'scrubState' can not be referenced from a Sendable closure
107 | }
108 | /// The current state of the scrubber.
109 | public var scrubState: ScrubState = .notScrubbing {
| `- note: property declared here
110 | didSet {
111 | switch scrubState {
:
541 | }
542 |
543 | switch self.scrubState {
| `- warning: main actor-isolated property 'scrubState' can not be referenced from a Sendable closure
544 | case .notScrubbing:
545 | self.currentTime = time.seconds
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:545:26: warning: main actor-isolated property 'currentTime' can not be mutated from a Sendable closure
97 | ///
98 | /// This variable is updated by video playback but can be overwritten by a scrubber, in conjunction with `scrubState`.
99 | public var currentTime: Double = 0
| `- note: mutation of this property is only permitted within the actor
100 | public enum ScrubState {
101 | /// The scrubber is not active and reflects the video's current playback time.
:
543 | switch self.scrubState {
544 | case .notScrubbing:
545 | self.currentTime = time.seconds
| `- warning: main actor-isolated property 'currentTime' can not be mutated from a Sendable closure
546 | break
547 | case .scrubStarted: return
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:560:27: warning: main actor-isolated property 'duration' can not be mutated from a Sendable closure
39 | private(set) public var error: Error?
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
| `- note: mutation of this property is only permitted within the actor
42 | /// `true` if playback is currently paused, or if playback has completed.
43 | private(set) public var paused: Bool = false
:
558 | let duration = CMTimeGetSeconds(item.duration)
559 | if !duration.isNaN {
560 | self?.duration = duration
| `- warning: main actor-isolated property 'duration' can not be mutated from a Sendable closure
561 | }
562 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:570:23: warning: main actor-isolated property 'loading' can not be mutated from a Sendable closure
43 | private(set) public var paused: Bool = false
44 | /// `true` if playback is waiting to load the media.
45 | private(set) public var loading: Bool = false
| `- note: mutation of this property is only permitted within the actor
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
:
568 | options: [.new, .initial]
569 | ) { [weak self] item, _ in
570 | self?.loading = item.status == .unknown
| `- warning: main actor-isolated property 'loading' can not be mutated from a Sendable closure
571 | if item.status == .failed, let error = item.error {
572 | print("Error: failed to load media: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:573:27: warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
| `- note: mutation of this property is only permitted within the actor
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
:
571 | if item.status == .failed, let error = item.error {
572 | print("Error: failed to load media: \(error.localizedDescription)")
573 | self?.error = error
| `- warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
574 | } else {
575 | self?.error = nil
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:575:27: warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
37 | private(set) public var projection: VideoItem.Projection = .equirectangular(fieldOfView: 180)
38 | /// A playback error, if any.
39 | private(set) public var error: Error?
| `- note: mutation of this property is only permitted within the actor
40 | /// The duration in seconds of the current video (0 if none).
41 | private(set) public var duration: Double = 0
:
573 | self?.error = error
574 | } else {
575 | self?.error = nil
| `- warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
576 | }
577 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:585:23: warning: main actor-isolated property 'buffering' can not be mutated from a Sendable closure
45 | private(set) public var loading: Bool = false
46 | /// `true` if playback is temporarily interrupted due to buffering (HLS only).
47 | private(set) public var buffering: Bool = false
| `- note: mutation of this property is only permitted within the actor
48 | /// `true` if playback reached the end of the video and is no longer playing.
49 | private(set) public var hasReachedEnd: Bool = false
:
583 | options: [.new, .old, .initial]
584 | ) { [weak self] player, status in
585 | self?.buffering = player.timeControlStatus == .waitingToPlayAtSpecifiedRate
| `- warning: main actor-isolated property 'buffering' can not be mutated from a Sendable closure
586 | // buffering doesn't bring up the control panel but prevents auto dismiss.
587 | // auto dismiss after play resumed.
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:589:27: warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
587 | // auto dismiss after play resumed.
588 | if (status.oldValue, status.newValue) == (.waitingToPlayAtSpecifiedRate, .playing) {
589 | self?.restartControlPanelTask()
| `- warning: call to main actor-isolated instance method 'restartControlPanelTask()' in a synchronous nonisolated context [#ActorIsolatedCall]
590 | }
591 | }
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: calls to instance method 'restartControlPanelTask()' from outside of its actor context are implicitly asynchronous
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:625:35: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:625:35: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
| |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:24: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:29: error: 'sleep(for:tolerance:clock:)' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'sleep(for:tolerance:clock:)' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:626:41: error: 'seconds' is only available in macOS 13.0 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
| |- error: 'seconds' is only available in macOS 13.0 or newer
| `- note: add 'if #available' version check
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:628:17: error: 'Task' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
| |- error: 'Task' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
629 | hideControlPanel()
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:628:22: error: 'isCancelled' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
621 |
622 | /// Restart a task with a 10-second timer to auto-hide the control panel.
623 | public func restartControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
624 | cancelControlPanelTask()
625 | dismissControlPanelTask = Task {
626 | try? await Task.sleep(for: .seconds(10))
627 | let videoIsPlaying = error == nil && !loading && !paused && !hasReachedEnd && !buffering
628 | if !Task.isCancelled, videoIsPlaying {
| |- error: 'isCancelled' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
629 | hideControlPanel()
630 | }
/Users/admin/builder/spi-builder-workspace/Sources/Controllers/VideoPlayer.swift:636:34: error: 'cancel()' is only available in macOS 10.15 or newer
12 | /// Video Player Controller interfacing the underlying `AVPlayer`, exposing states and controls to the UI.
13 | @Observable
14 | public class VideoPlayer: Sendable {
| `- note: add '@available' attribute to enclosing class
15 | //MARK: Video Player and Video Renderer
16 | /// The video player.
:
633 |
634 | /// Cancel the current task to dismiss the control panel, if any.
635 | private func cancelControlPanelTask() {
| `- note: add '@available' attribute to enclosing instance method
636 | dismissControlPanelTask?.cancel()
| |- error: 'cancel()' is only available in macOS 10.15 or newer
| `- note: add 'if #available' version check
637 | dismissControlPanelTask = nil
638 | }
/Users/admin/builder/spi-builder-workspace/Sources/Extensions/AVMetadataIdentifier+Codable.swift:11:1: warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
9 |
10 | /// Codable extension of AVMetadataIdentifier so it can be used in VideoItem
11 | extension AVMetadataIdentifier: Codable {
| |- warning: extension declares a conformance of imported type 'AVMetadataIdentifier' to imported protocols 'Decodable', 'Encodable'; this will not behave correctly if the owners of 'AVFoundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
12 | public typealias RawValue = String
13 |
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
BUILD FAILURE 6.3 macosSpm