Build Information
Failed to build Prism, reference 0.2.0 (5004fe), with Swift 6.4 for tvOS using Xcode 27.0 on 12 Oct 2026 18:40:53 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun xcodebuild -IDEClonedSourcePackagesDirPathOverride=$PWD/.dependencies -skipMacroValidation -skipPackagePluginValidation -derivedDataPath $PWD/.derivedData build -scheme Prism-Package -destination generic/platform=tvOSBuild Log
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:139:29: error: 'supportsExposureModeCustom(lensAperture:duration:iso:)' is only available in tvOS 27.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
134 | /// `NSInvalidArgumentException` on a manual bracket from a format that refuses custom
135 | /// exposure at the current values, so on iOS 27 the active format also has to accept it.
136 | var prm_supportsManualExposureCapture: Bool {
| `- note: add '@available' attribute to enclosing property
137 | guard isExposureModeSupported(.custom), !prm_isVirtualMultiCameraDevice else { return false }
138 | guard #available(iOS 27.0, *) else { return true }
139 | return activeFormat.supportsExposureModeCustom(
| |- error: 'supportsExposureModeCustom(lensAperture:duration:iso:)' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
140 | lensAperture: Self.currentLensAperture,
141 | duration: Self.currentExposureDuration,
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:140:32: error: 'currentLensAperture' is only available in tvOS 27.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
134 | /// `NSInvalidArgumentException` on a manual bracket from a format that refuses custom
135 | /// exposure at the current values, so on iOS 27 the active format also has to accept it.
136 | var prm_supportsManualExposureCapture: Bool {
| `- note: add '@available' attribute to enclosing property
137 | guard isExposureModeSupported(.custom), !prm_isVirtualMultiCameraDevice else { return false }
138 | guard #available(iOS 27.0, *) else { return true }
139 | return activeFormat.supportsExposureModeCustom(
140 | lensAperture: Self.currentLensAperture,
| |- error: 'currentLensAperture' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
141 | duration: Self.currentExposureDuration,
142 | iso: Self.currentISO
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:219:20: error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
217 | try prm_withConfigurationLock {
218 | if isFocusPointOfInterestSupported, isFocusModeSupported(focusMode) {
219 | if isFocusRectOfInterestSupported {
| |- error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
220 | focusRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minFocusRectOfInterestSize)
221 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:220:21: error: 'focusRectOfInterest' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
218 | if isFocusPointOfInterestSupported, isFocusModeSupported(focusMode) {
219 | if isFocusRectOfInterestSupported {
220 | focusRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minFocusRectOfInterestSize)
| |- error: 'focusRectOfInterest' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
221 | } else {
222 | focusPointOfInterest = center
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:220:93: error: 'minFocusRectOfInterestSize' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
218 | if isFocusPointOfInterestSupported, isFocusModeSupported(focusMode) {
219 | if isFocusRectOfInterestSupported {
220 | focusRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minFocusRectOfInterestSize)
| |- error: 'minFocusRectOfInterestSize' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
221 | } else {
222 | focusPointOfInterest = center
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:227:20: error: 'isExposureRectOfInterestSupported' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
225 | }
226 | if let exposureMode, isExposurePointOfInterestSupported, isExposureModeSupported(exposureMode) {
227 | if isExposureRectOfInterestSupported {
| |- error: 'isExposureRectOfInterestSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
228 | exposureRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minExposureRectOfInterestSize)
229 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:228:21: error: 'exposureRectOfInterest' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
226 | if let exposureMode, isExposurePointOfInterestSupported, isExposureModeSupported(exposureMode) {
227 | if isExposureRectOfInterestSupported {
228 | exposureRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minExposureRectOfInterestSize)
| |- error: 'exposureRectOfInterest' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
229 | } else {
230 | exposurePointOfInterest = center
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:228:96: error: 'minExposureRectOfInterestSize' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
199 | /// iOS 26 or the device doesn't support rects for that axis. A `nil` `exposureMode`
200 | /// focuses without touching exposure.
201 | func prm_setFocusAndExposure(
| `- note: add '@available' attribute to enclosing instance method
202 | focusMode: AVCaptureDevice.FocusMode,
203 | exposureMode: AVCaptureDevice.ExposureMode?,
:
226 | if let exposureMode, isExposurePointOfInterestSupported, isExposureModeSupported(exposureMode) {
227 | if isExposureRectOfInterestSupported {
228 | exposureRectOfInterest = Self.prm_clampedRectOfInterest(rect, minimumSize: minExposureRectOfInterestSize)
| |- error: 'minExposureRectOfInterestSize' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
229 | } else {
230 | exposurePointOfInterest = center
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:242:40: error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
239 | /// device space. Use it to size a focus indicator to what the camera actually meters.
240 | /// `nil` before iOS 26 or when the device doesn't support focus rects.
241 | func prm_defaultFocusRect(for devicePoint: CGPoint) -> CGRect? {
| `- note: add '@available' attribute to enclosing instance method
242 | guard #available(iOS 26.0, *), isFocusRectOfInterestSupported else { return nil }
| |- error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
243 | let rect = defaultRectForFocusPoint(ofInterest: devicePoint)
244 | return rect.isNull ? nil : rect
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift:243:20: error: 'defaultRectForFocusPoint(ofInterest:)' is only available in tvOS 26.0 or newer
2 | import CoreMedia
3 |
4 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
5 | // MARK: - Exposure Mode
6 |
:
239 | /// device space. Use it to size a focus indicator to what the camera actually meters.
240 | /// `nil` before iOS 26 or when the device doesn't support focus rects.
241 | func prm_defaultFocusRect(for devicePoint: CGPoint) -> CGRect? {
| `- note: add '@available' attribute to enclosing instance method
242 | guard #available(iOS 26.0, *), isFocusRectOfInterestSupported else { return nil }
243 | let rect = defaultRectForFocusPoint(ofInterest: devicePoint)
| |- error: 'defaultRectForFocusPoint(ofInterest:)' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
244 | return rect.isNull ? nil : rect
245 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:13:29: error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
| `- note: add '@available' attribute to enclosing property
12 | guard #available(iOS 27.0, *) else { return false }
13 | return activeFormat.isContinuousAutoFocusTrackingSupported
| |- error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
14 | }
15 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:19:16: error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
15 |
16 | /// Whether tracking is enabled (iOS 27). `false` before that.
17 | var prm_isContinuousAutoFocusTrackingEnabled: Bool {
| `- note: add '@available' attribute to enclosing property
18 | guard #available(iOS 27.0, *) else { return false }
19 | return isContinuousAutoFocusTrackingEnabled
| |- error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
20 | }
21 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:25:16: error: 'isContinuousAutoFocusTrackingSubjectAcquired' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
21 |
22 | /// Whether a subject is being tracked right now (iOS 27). `false` before that.
23 | var prm_isContinuousAutoFocusTrackingSubjectAcquired: Bool {
| `- note: add '@available' attribute to enclosing property
24 | guard #available(iOS 27.0, *) else { return false }
25 | return isContinuousAutoFocusTrackingSubjectAcquired
| |- error: 'isContinuousAutoFocusTrackingSubjectAcquired' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
26 | }
27 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:31:16: error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
27 |
28 | /// Current tracking lens-position bias (iOS 27). `0` before that.
29 | var prm_continuousAutoFocusTrackingBias: Float {
| `- note: add '@available' attribute to enclosing property
30 | guard #available(iOS 27.0, *) else { return 0 }
31 | return continuousAutoFocusTrackingLensPositionBias
| |- error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
32 | }
33 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:51:35: error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
45 | /// active format doesn't support tracking. AVFoundation also refuses while Cinematic
46 | /// Video is enabled; the session layer guards that.
47 | func prm_setContinuousAutoFocusTracking(_ enabled: Bool) throws {
| `- note: add '@available' attribute to enclosing instance method
48 | guard #available(iOS 27.0, *) else {
49 | throw PRMSessionError.unsupportedConfiguration("Continuous autofocus tracking requires iOS 27")
50 | }
51 | if enabled, !activeFormat.isContinuousAutoFocusTrackingSupported {
| |- error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
52 | throw PRMSessionError.unsupportedConfiguration("The active format doesn't support continuous autofocus tracking")
53 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:56:17: error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
45 | /// active format doesn't support tracking. AVFoundation also refuses while Cinematic
46 | /// Video is enabled; the session layer guards that.
47 | func prm_setContinuousAutoFocusTracking(_ enabled: Bool) throws {
| `- note: add '@available' attribute to enclosing instance method
48 | guard #available(iOS 27.0, *) else {
49 | throw PRMSessionError.unsupportedConfiguration("Continuous autofocus tracking requires iOS 27")
:
54 | try prm_withConfigurationLock {
55 | if enabled {
56 | isContinuousAutoFocusTrackingEnabled = true
| |- error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
57 | // Tracking would otherwise be retargeted to the frame center every time the
58 | // subject-area-change handler re-centers focus.
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:61:23: error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
45 | /// active format doesn't support tracking. AVFoundation also refuses while Cinematic
46 | /// Video is enabled; the session layer guards that.
47 | func prm_setContinuousAutoFocusTracking(_ enabled: Bool) throws {
| `- note: add '@available' attribute to enclosing instance method
48 | guard #available(iOS 27.0, *) else {
49 | throw PRMSessionError.unsupportedConfiguration("Continuous autofocus tracking requires iOS 27")
:
59 | isSubjectAreaChangeMonitoringEnabled = false
60 | } else {
61 | guard isContinuousAutoFocusTrackingEnabled else { return }
| |- error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
62 | continuousAutoFocusTrackingLensPositionBias = 0
63 | isContinuousAutoFocusTrackingEnabled = false
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:62:17: error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
45 | /// active format doesn't support tracking. AVFoundation also refuses while Cinematic
46 | /// Video is enabled; the session layer guards that.
47 | func prm_setContinuousAutoFocusTracking(_ enabled: Bool) throws {
| `- note: add '@available' attribute to enclosing instance method
48 | guard #available(iOS 27.0, *) else {
49 | throw PRMSessionError.unsupportedConfiguration("Continuous autofocus tracking requires iOS 27")
:
60 | } else {
61 | guard isContinuousAutoFocusTrackingEnabled else { return }
62 | continuousAutoFocusTrackingLensPositionBias = 0
| |- error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
63 | isContinuousAutoFocusTrackingEnabled = false
64 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:63:17: error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
45 | /// active format doesn't support tracking. AVFoundation also refuses while Cinematic
46 | /// Video is enabled; the session layer guards that.
47 | func prm_setContinuousAutoFocusTracking(_ enabled: Bool) throws {
| `- note: add '@available' attribute to enclosing instance method
48 | guard #available(iOS 27.0, *) else {
49 | throw PRMSessionError.unsupportedConfiguration("Continuous autofocus tracking requires iOS 27")
:
61 | guard isContinuousAutoFocusTrackingEnabled else { return }
62 | continuousAutoFocusTrackingLensPositionBias = 0
63 | isContinuousAutoFocusTrackingEnabled = false
| |- error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
64 | }
65 | if focusMode == .continuousAutoFocus {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:81:40: error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
78 | ///
79 | /// - Throws: ``PRMSessionError/unsupportedConfiguration(_:)`` unless tracking is enabled.
80 | func prm_setContinuousAutoFocusTrackingBias(_ bias: Float, retargetingAt devicePoint: CGPoint? = nil) throws {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 27.0, *), isContinuousAutoFocusTrackingEnabled else {
| |- error: 'isContinuousAutoFocusTrackingEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
82 | throw PRMSessionError.unsupportedConfiguration("Enable continuous autofocus tracking before setting its bias")
83 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift:85:13: error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
7 | // manage the metadata output yourself.
8 |
9 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
10 | /// Whether the active format supports continuous autofocus tracking (iOS 27).
11 | var prm_isContinuousAutoFocusTrackingSupported: Bool {
:
78 | ///
79 | /// - Throws: ``PRMSessionError/unsupportedConfiguration(_:)`` unless tracking is enabled.
80 | func prm_setContinuousAutoFocusTrackingBias(_ bias: Float, retargetingAt devicePoint: CGPoint? = nil) throws {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 27.0, *), isContinuousAutoFocusTrackingEnabled else {
82 | throw PRMSessionError.unsupportedConfiguration("Enable continuous autofocus tracking before setting its bias")
83 | }
84 | try prm_withConfigurationLock {
85 | continuousAutoFocusTrackingLensPositionBias = Self.prm_clampedTrackingBias(bias)
| |- error: 'continuousAutoFocusTrackingLensPositionBias' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
86 | if let devicePoint, isFocusPointOfInterestSupported {
87 | focusPointOfInterest = Self.prm_clampedUnitPoint(devicePoint)
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+Exposure.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+FocusTracking.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FrameRate.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+FrameRate.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+HDR.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+HDR.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+ISO.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+ISO.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Lens.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+Lens.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Modes.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+Modes.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+SmudgeDetection.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+SmudgeDetection.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Torch.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+Torch.swift
SwiftCompile normal arm64 Compiling\ PRMCameraDevice.swift,\ PRMCameraSession+Cinematic.swift,\ PRMCameraSession+Controls.swift,\ PRMCameraSession+DeviceObservers.swift,\ PRMCameraSession+Features.swift,\ PRMCameraSession+Format.swift,\ PRMCameraSession+Metadata.swift,\ PRMCameraSession+NightCapture.swift,\ PRMCameraSession+State.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Controls.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+State.swift (in target 'PrismCore' from project 'Prism')
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:291:47: error: 'recommendedLensApertureStops' is only available in tvOS 27.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
289 | if #available(iOS 27.0, *) {
290 | apertureRange = device.prm_lensApertureRange
291 | recommendedApertureStops = format.recommendedLensApertureStops
| |- error: 'recommendedLensApertureStops' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
292 | supportedExposureSignals = PRMExposureSignal.set(from: device.supportedExposureSignals)
293 | supportsPrimaryConstituentLock = device.isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:292:75: error: 'supportedExposureSignals' is only available in tvOS 27.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
290 | apertureRange = device.prm_lensApertureRange
291 | recommendedApertureStops = format.recommendedLensApertureStops
292 | supportedExposureSignals = PRMExposureSignal.set(from: device.supportedExposureSignals)
| |- error: 'supportedExposureSignals' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
293 | supportsPrimaryConstituentLock = device.isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported
294 | supportsLowLightVideoNoiseReduction = format.isLowLightVideoNoiseReductionSupported
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:293:53: error: 'isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported' is only available in tvOS 27.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
291 | recommendedApertureStops = format.recommendedLensApertureStops
292 | supportedExposureSignals = PRMExposureSignal.set(from: device.supportedExposureSignals)
293 | supportsPrimaryConstituentLock = device.isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported
| |- error: 'isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
294 | supportsLowLightVideoNoiseReduction = format.isLowLightVideoNoiseReductionSupported
295 | supportsContinuousAutoFocusTracking = format.isContinuousAutoFocusTrackingSupported
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:294:58: error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
292 | supportedExposureSignals = PRMExposureSignal.set(from: device.supportedExposureSignals)
293 | supportsPrimaryConstituentLock = device.isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported
294 | supportsLowLightVideoNoiseReduction = format.isLowLightVideoNoiseReductionSupported
| |- error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
295 | supportsContinuousAutoFocusTracking = format.isContinuousAutoFocusTrackingSupported
296 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:295:58: error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
293 | supportsPrimaryConstituentLock = device.isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported
294 | supportsLowLightVideoNoiseReduction = format.isLowLightVideoNoiseReductionSupported
295 | supportsContinuousAutoFocusTracking = format.isContinuousAutoFocusTrackingSupported
| |- error: 'isContinuousAutoFocusTrackingSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
296 | } else {
297 | apertureRange = nil
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:305:50: error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
303 | }
304 | if #available(iOS 26.0, *) {
305 | supportsFocusRectOfInterest = device.isFocusRectOfInterestSupported
| |- error: 'isFocusRectOfInterestSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
306 | supportsExposureRectOfInterest = device.isExposureRectOfInterestSupported
307 | supportsLensSmudgeDetection = format.isCameraLensSmudgeDetectionSupported
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:306:53: error: 'isExposureRectOfInterestSupported' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
304 | if #available(iOS 26.0, *) {
305 | supportsFocusRectOfInterest = device.isFocusRectOfInterestSupported
306 | supportsExposureRectOfInterest = device.isExposureRectOfInterestSupported
| |- error: 'isExposureRectOfInterestSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
307 | supportsLensSmudgeDetection = format.isCameraLensSmudgeDetectionSupported
308 | // The format `PRMCameraSession` would switch to, so the ranges match what
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:307:50: error: 'isCameraLensSmudgeDetectionSupported' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
305 | supportsFocusRectOfInterest = device.isFocusRectOfInterestSupported
306 | supportsExposureRectOfInterest = device.isExposureRectOfInterestSupported
307 | supportsLensSmudgeDetection = format.isCameraLensSmudgeDetectionSupported
| |- error: 'isCameraLensSmudgeDetectionSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
308 | // The format `PRMCameraSession` would switch to, so the ranges match what
309 | // enabling Cinematic Video actually gives. Without one here, the ranges are the
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:312:45: error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
310 | // camera's that enabling switches to.
311 | let preferredDimensions = CMVideoFormatDescriptionGetDimensions(format.formatDescription)
312 | let ownCinematicFormat = format.isCinematicVideoCaptureSupported
| |- error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
313 | ? format
314 | : AVCaptureDevice.prm_bestCinematicFormat(from: device.formats, preferredDimensions: preferredDimensions)
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:327:47: error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
325 | }
326 | if let cinematicFormat {
327 | let minZoom = cinematicFormat.videoMinZoomFactorForCinematicVideo
| |- error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
328 | let maxZoom = cinematicFormat.videoMaxZoomFactorForCinematicVideo
329 | cinematicZoomRange = minZoom <= maxZoom ? minZoom ... maxZoom : nil
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:328:47: error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
5 | /// `AVCaptureDevice` itself is not `Sendable` and is owned by ``PRMCameraSession``. This
6 | /// struct is the safe-to-cross-actor view into the device used by ``PRMCamera`` consumers.
7 | public struct PRMCameraDevice: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing struct
8 | /// Underlying device unique ID (`AVCaptureDevice.uniqueID`).
9 | public let uniqueID: String
:
238 | /// Constructs a snapshot from an `AVCaptureDevice`. Call from session-actor context where
239 | /// reading the device's mutable properties is safe.
240 | public init(snapshotting device: AVCaptureDevice) {
| `- note: add '@available' attribute to enclosing initializer
241 | uniqueID = device.uniqueID
242 | deviceType = device.deviceType
:
326 | if let cinematicFormat {
327 | let minZoom = cinematicFormat.videoMinZoomFactorForCinematicVideo
328 | let maxZoom = cinematicFormat.videoMaxZoomFactorForCinematicVideo
| |- error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
329 | cinematicZoomRange = minZoom <= maxZoom ? minZoom ... maxZoom : nil
330 | simulatedApertureRange = cinematicFormat.prm_simulatedApertureRange
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift:431:30: error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
390 | /// and ``PRMCameraDevice/depthDeviceType(at:)``: each discovery walks every format of several
391 | /// cameras.
392 | private enum DeviceTypeCache {
| `- note: add '@available' attribute to enclosing enum
393 | enum Capability: Hashable {
394 | case cinematicVideo
:
414 | }
415 |
416 | private static func discover(_ capability: Capability, at position: AVCaptureDevice.Position) -> AVCaptureDevice.DeviceType? {
| `- note: add '@available' attribute to enclosing static method
417 | let preference: [AVCaptureDevice.DeviceType]
418 | let hasFormat: (AVCaptureDevice.Format) -> Bool
:
429 | .builtInTelephotoCamera,
430 | ]
431 | hasFormat = { $0.isCinematicVideoCaptureSupported }
| |- error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
432 | case .depth:
433 | preference = [
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:29:22: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
26 | /// Whether Cinematic Video capture is enabled on the current video input.
27 | var isCinematicVideoCaptureActive: Bool {
| `- note: add '@available' attribute to enclosing property
28 | guard #available(iOS 26.0, *), let input = videoDeviceInput else { return false }
29 | return input.isCinematicVideoCaptureEnabled
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
30 | }
31 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:34:76: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
:
31 |
32 | /// Current Cinematic Video simulated aperture, or `0` when Cinematic Video is off.
33 | var cinematicSimulatedAperture: Float {
| `- note: add '@available' attribute to enclosing property
34 | guard #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled else { return 0 }
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
35 | return input.simulatedAperture
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:35:22: error: 'simulatedAperture' is only available in tvOS 26.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
:
31 |
32 | /// Current Cinematic Video simulated aperture, or `0` when Cinematic Video is off.
33 | var cinematicSimulatedAperture: Float {
| `- note: add '@available' attribute to enclosing property
34 | guard #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled else { return 0 }
35 | return input.simulatedAperture
| |- error: 'simulatedAperture' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
36 | }
37 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:41:23: error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
:
37 |
38 | /// Whether the movie output records Cinematic Video metadata (iOS 27).
39 | var isCinematicVideoMetadataCaptureEnabled: Bool {
| `- note: add '@available' attribute to enclosing property
40 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return false }
41 | return output.isCinematicVideoMetadataCaptureEnabled
| |- error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
42 | }
43 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:123:76: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
:
120 | /// enabled, not recording, and the format allows changing the aperture.
121 | @discardableResult
122 | func setCinematicSimulatedAperture(_ aperture: Float) throws -> Float {
| `- note: add '@available' attribute to enclosing instance method
123 | guard #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled,
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
124 | let device = videoDevice
125 | else {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:134:15: error: 'simulatedAperture' is only available in tvOS 26.0 or newer
21 | // don't.
22 |
23 | public extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
24 | // MARK: State
25 |
:
120 | /// enabled, not recording, and the format allows changing the aperture.
121 | @discardableResult
122 | func setCinematicSimulatedAperture(_ aperture: Float) throws -> Float {
| `- note: add '@available' attribute to enclosing instance method
123 | guard #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled,
124 | let device = videoDevice
:
132 | let clamped = min(max(aperture, range.lowerBound), range.upperBound)
133 | cinematicSimulatedApertureIntent = clamped
134 | input.simulatedAperture = clamped
| |- error: 'simulatedAperture' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
135 | return clamped
136 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:254:33: error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
252 | wantsContinuousAutoFocusTracking = false
253 |
254 | if !device.activeFormat.isCinematicVideoCaptureSupported {
| |- error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
255 | let dims = CMVideoFormatDescriptionGetDimensions(device.activeFormat.formatDescription)
256 | guard let format = AVCaptureDevice.prm_bestCinematicFormat(from: device.formats, preferredDimensions: dims) else {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:269:21: error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
267 | refreshOutputMaxPhotoDimensions()
268 | }
269 | guard input.isCinematicVideoCaptureSupported else {
| |- error: 'isCinematicVideoCaptureSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
270 | // This commit still changed the format; keep the format-dependent features in
271 | // step until the next pass enables Cinematic Video.
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:281:25: error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
279 | let zoom = Self.clampedZoom(
280 | device.videoZoomFactor,
281 | min: format.videoMinZoomFactorForCinematicVideo,
| |- error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
282 | max: format.videoMaxZoomFactorForCinematicVideo
283 | )
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:282:25: error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
280 | device.videoZoomFactor,
281 | min: format.videoMinZoomFactorForCinematicVideo,
282 | max: format.videoMaxZoomFactorForCinematicVideo
| |- error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
283 | )
284 | if zoom != device.videoZoomFactor {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:299:15: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
297 | }
298 |
299 | input.isCinematicVideoCaptureEnabled = true
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
300 | if let aperture = cinematicSimulatedApertureIntent, let range = format.prm_simulatedApertureRange {
301 | input.simulatedAperture = min(max(aperture, range.lowerBound), range.upperBound)
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:301:19: error: 'simulatedAperture' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
237 | /// and run another pass.
238 | @available(iOS 26.0, *)
239 | private func enableCinematicVideo(targetPhotoOutputAttached: Bool?, attachMovieOutput: Bool) throws -> Bool {
| `- note: add '@available' attribute to enclosing instance method
240 | guard let input = videoDeviceInput, let device = videoDevice else {
241 | throw PRMSessionError.unsupportedConfiguration("No video input")
:
299 | input.isCinematicVideoCaptureEnabled = true
300 | if let aperture = cinematicSimulatedApertureIntent, let range = format.prm_simulatedApertureRange {
301 | input.simulatedAperture = min(max(aperture, range.lowerBound), range.upperBound)
| |- error: 'simulatedAperture' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
302 | }
303 | // Includes the metadata output (Cinematic's required types) and the iOS 27 metadata
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:312:48: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
308 |
309 | @available(iOS 26.0, *)
310 | private func disableCinematicVideo(targetPhotoOutputAttached: Bool?) {
| `- note: add '@available' attribute to enclosing instance method
311 | wantsCinematicVideo = false
312 | if let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled {
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
313 | input.isCinematicVideoCaptureEnabled = false
314 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:313:19: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
308 |
309 | @available(iOS 26.0, *)
310 | private func disableCinematicVideo(targetPhotoOutputAttached: Bool?) {
| `- note: add '@available' attribute to enclosing instance method
311 | wantsCinematicVideo = false
312 | if let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled {
313 | input.isCinematicVideoCaptureEnabled = false
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
314 | }
315 | if let preset = configuredSessionPreset, session.sessionPreset != preset, session.canSetSessionPreset(preset) {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:354:73: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
347 | /// back to the snapshot. Outputs the app arranged (a detached photo output, an attached
348 | /// movie output) stay as they are. Call inside an open begin/commit.
349 | private func rollBackCinematicAttempt(_ rollback: CinematicRollback) {
| `- note: add '@available' attribute to enclosing instance method
350 | wantsCinematicVideo = false
351 | // Enabling turned the tracking intent off up front; a failed attempt gives it back
352 | // (`applyFeatureIntents()` below re-applies it to the device).
353 | wantsContinuousAutoFocusTracking = rollback.wantsTracking
354 | if #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled {
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
355 | input.isCinematicVideoCaptureEnabled = false
356 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:355:19: error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
347 | /// back to the snapshot. Outputs the app arranged (a detached photo output, an attached
348 | /// movie output) stay as they are. Call inside an open begin/commit.
349 | private func rollBackCinematicAttempt(_ rollback: CinematicRollback) {
| `- note: add '@available' attribute to enclosing instance method
350 | wantsCinematicVideo = false
351 | // Enabling turned the tracking intent off up front; a failed attempt gives it back
:
353 | wantsContinuousAutoFocusTracking = rollback.wantsTracking
354 | if #available(iOS 26.0, *), let input = videoDeviceInput, input.isCinematicVideoCaptureEnabled {
355 | input.isCinematicVideoCaptureEnabled = false
| |- error: 'isCinematicVideoCaptureEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
356 | }
357 | if session.sessionPreset != rollback.preset, session.canSetSessionPreset(rollback.preset) {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:387:25: error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
379 | /// `factor` clamped to the Cinematic Video zoom range while Cinematic Video is enabled;
380 | /// unchanged otherwise.
381 | func cinematicClampedZoom(_ factor: CGFloat) -> CGFloat {
| `- note: add '@available' attribute to enclosing instance method
382 | guard #available(iOS 26.0, *), isCinematicVideoCaptureActive, let format = videoDevice?.activeFormat else {
383 | return factor
:
385 | return Self.clampedZoom(
386 | factor,
387 | min: format.videoMinZoomFactorForCinematicVideo,
| |- error: 'videoMinZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
388 | max: format.videoMaxZoomFactorForCinematicVideo
389 | )
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:388:25: error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
379 | /// `factor` clamped to the Cinematic Video zoom range while Cinematic Video is enabled;
380 | /// unchanged otherwise.
381 | func cinematicClampedZoom(_ factor: CGFloat) -> CGFloat {
| `- note: add '@available' attribute to enclosing instance method
382 | guard #available(iOS 26.0, *), isCinematicVideoCaptureActive, let format = videoDevice?.activeFormat else {
383 | return factor
:
386 | factor,
387 | min: format.videoMinZoomFactorForCinematicVideo,
388 | max: format.videoMaxZoomFactorForCinematicVideo
| |- error: 'videoMaxZoomFactorForCinematicVideo' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
389 | )
390 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:402:24: error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
401 | case .automatic:
402 | if !output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled {
| |- error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
403 | output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled = true
404 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:403:24: error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
401 | case .automatic:
402 | if !output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled {
403 | output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled = true
| |- error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
404 | }
405 | case .enabled, .disabled:
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:406:23: error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
:
404 | }
405 | case .enabled, .disabled:
406 | if output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled {
| |- error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
407 | output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled = false
408 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:407:24: error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
:
405 | case .enabled, .disabled:
406 | if output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled {
407 | output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled = false
| |- error: 'automaticallyAdjustsCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
408 | }
409 | let enable = cinematicMetadataCapture == .enabled && output.isCinematicVideoMetadataCaptureSupported
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:409:73: error: 'isCinematicVideoMetadataCaptureSupported' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
:
407 | output.automaticallyAdjustsCinematicVideoMetadataCaptureEnabled = false
408 | }
409 | let enable = cinematicMetadataCapture == .enabled && output.isCinematicVideoMetadataCaptureSupported
| |- error: 'isCinematicVideoMetadataCaptureSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
410 | if output.isCinematicVideoMetadataCaptureEnabled != enable {
411 | output.isCinematicVideoMetadataCaptureEnabled = enable
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:410:23: error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
:
408 | }
409 | let enable = cinematicMetadataCapture == .enabled && output.isCinematicVideoMetadataCaptureSupported
410 | if output.isCinematicVideoMetadataCaptureEnabled != enable {
| |- error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
411 | output.isCinematicVideoMetadataCaptureEnabled = enable
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift:411:24: error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
150 | // MARK: - Internals
151 |
152 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
153 | /// What an enable attempt may change, so a failure can put it back exactly.
154 | private struct CinematicRollback {
:
396 | }
397 |
398 | func applyCinematicMetadataCapturePolicy() {
| `- note: add '@available' attribute to enclosing instance method
399 | guard #available(iOS 27.0, *), let output = movieFileOutput else { return }
400 | switch cinematicMetadataCapture {
:
409 | let enable = cinematicMetadataCapture == .enabled && output.isCinematicVideoMetadataCaptureSupported
410 | if output.isCinematicVideoMetadataCaptureEnabled != enable {
411 | output.isCinematicVideoMetadataCaptureEnabled = enable
| |- error: 'isCinematicVideoMetadataCaptureEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
412 | }
413 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift:41:50: error: 'cameraLensSmudgeDetectionStatus' is only available in tvOS 26.0 or newer
14 | // the closures carry no actor isolation: KVO fires them on arbitrary queues.
15 |
16 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
17 | /// Re-binds device KVO to the current `videoDevice`. Called from `videoDevice`'s
18 | /// `didSet` whenever the device identity changes.
19 | func installDeviceObservers() {
| `- note: add '@available' attribute to enclosing instance method
20 | for observation in deviceObservations {
21 | observation.invalidate()
:
39 | ]
40 | if #available(iOS 26.0, *) {
41 | observations.append(device.observe(\.cameraLensSmudgeDetectionStatus) { @Sendable _, _ in events.yield(()) })
| |- error: 'cameraLensSmudgeDetectionStatus' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
42 | observations.append(device.observe(\.cinematicVideoCaptureSceneMonitoringStatuses) { @Sendable _, _ in events.yield(()) })
43 | observations.append(device.observe(\.dynamicAspectRatio) { @Sendable _, _ in events.yield(()) })
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift:59:50: error: 'activeExposureSignals' is only available in tvOS 27.0 or newer
14 | // the closures carry no actor isolation: KVO fires them on arbitrary queues.
15 |
16 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
17 | /// Re-binds device KVO to the current `videoDevice`. Called from `videoDevice`'s
18 | /// `didSet` whenever the device identity changes.
19 | func installDeviceObservers() {
| `- note: add '@available' attribute to enclosing instance method
20 | for observation in deviceObservations {
21 | observation.invalidate()
:
57 | }
58 | if #available(iOS 27.0, *) {
59 | observations.append(device.observe(\.activeExposureSignals) { @Sendable _, _ in events.yield(()) })
| |- error: 'activeExposureSignals' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
60 | observations.append(device.observe(\.isContinuousAutoFocusTrackingSubjectAcquired) { @Sendable _, _ in events.yield(()) })
61 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift:60:50: error: 'isContinuousAutoFocusTrackingSubjectAcquired' is only available in tvOS 27.0 or newer
14 | // the closures carry no actor isolation: KVO fires them on arbitrary queues.
15 |
16 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
17 | /// Re-binds device KVO to the current `videoDevice`. Called from `videoDevice`'s
18 | /// `didSet` whenever the device identity changes.
19 | func installDeviceObservers() {
| `- note: add '@available' attribute to enclosing instance method
20 | for observation in deviceObservations {
21 | observation.invalidate()
:
58 | if #available(iOS 27.0, *) {
59 | observations.append(device.observe(\.activeExposureSignals) { @Sendable _, _ in events.yield(()) })
60 | observations.append(device.observe(\.isContinuousAutoFocusTrackingSubjectAcquired) { @Sendable _, _ in events.yield(()) })
| |- error: 'isContinuousAutoFocusTrackingSubjectAcquired' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
61 | }
62 | deviceObservations = observations
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:56:23: error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
48 |
49 | /// Applies ``PRMCameraConfiguration/deferredStart`` to a freshly added output.
50 | func applyDeferredStart(to output: AVCaptureOutput, isPreview: Bool) {
| `- note: add '@available' attribute to enclosing instance method
51 | guard #available(iOS 26.0, *), let mode = configuration?.deferredStart else { return }
52 | switch mode {
:
54 | return
55 | case .disabled:
56 | if output.isDeferredStartEnabled {
| |- error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
57 | output.isDeferredStartEnabled = false
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:57:24: error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
48 |
49 | /// Applies ``PRMCameraConfiguration/deferredStart`` to a freshly added output.
50 | func applyDeferredStart(to output: AVCaptureOutput, isPreview: Bool) {
| `- note: add '@available' attribute to enclosing instance method
51 | guard #available(iOS 26.0, *), let mode = configuration?.deferredStart else { return }
52 | switch mode {
:
55 | case .disabled:
56 | if output.isDeferredStartEnabled {
57 | output.isDeferredStartEnabled = false
| |- error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
58 | }
59 | case .photoAndMovie:
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:61:39: error: 'isDeferredStartSupported' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
48 |
49 | /// Applies ``PRMCameraConfiguration/deferredStart`` to a freshly added output.
50 | func applyDeferredStart(to output: AVCaptureOutput, isPreview: Bool) {
| `- note: add '@available' attribute to enclosing instance method
51 | guard #available(iOS 26.0, *), let mode = configuration?.deferredStart else { return }
52 | switch mode {
:
59 | case .photoAndMovie:
60 | let wantsDeferral = !isPreview && (output is AVCapturePhotoOutput || output is AVCaptureFileOutput)
61 | if wantsDeferral, !output.isDeferredStartSupported { return }
| |- error: 'isDeferredStartSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
62 | if output.isDeferredStartEnabled != wantsDeferral {
63 | output.isDeferredStartEnabled = wantsDeferral
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:62:23: error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
48 |
49 | /// Applies ``PRMCameraConfiguration/deferredStart`` to a freshly added output.
50 | func applyDeferredStart(to output: AVCaptureOutput, isPreview: Bool) {
| `- note: add '@available' attribute to enclosing instance method
51 | guard #available(iOS 26.0, *), let mode = configuration?.deferredStart else { return }
52 | switch mode {
:
60 | let wantsDeferral = !isPreview && (output is AVCapturePhotoOutput || output is AVCaptureFileOutput)
61 | if wantsDeferral, !output.isDeferredStartSupported { return }
62 | if output.isDeferredStartEnabled != wantsDeferral {
| |- error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
63 | output.isDeferredStartEnabled = wantsDeferral
64 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:63:24: error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
48 |
49 | /// Applies ``PRMCameraConfiguration/deferredStart`` to a freshly added output.
50 | func applyDeferredStart(to output: AVCaptureOutput, isPreview: Bool) {
| `- note: add '@available' attribute to enclosing instance method
51 | guard #available(iOS 26.0, *), let mode = configuration?.deferredStart else { return }
52 | switch mode {
:
61 | if wantsDeferral, !output.isDeferredStartSupported { return }
62 | if output.isDeferredStartEnabled != wantsDeferral {
63 | output.isDeferredStartEnabled = wantsDeferral
| |- error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
64 | }
65 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:82:35: error: 'isCameraLensSmudgeDetectionSupported' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
78 | }
79 |
80 | func applyLensSmudgeDetection() {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 26.0, *), let device = videoDevice,
82 | device.activeFormat.isCameraLensSmudgeDetectionSupported
| |- error: 'isCameraLensSmudgeDetectionSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
83 | else { return }
84 | let wanted = lensSmudgeDetectionInterval
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:85:30: error: 'isCameraLensSmudgeDetectionEnabled' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
78 | }
79 |
80 | func applyLensSmudgeDetection() {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 26.0, *), let device = videoDevice,
82 | device.activeFormat.isCameraLensSmudgeDetectionSupported
83 | else { return }
84 | let wanted = lensSmudgeDetectionInterval
85 | let enabled = device.isCameraLensSmudgeDetectionEnabled
| |- error: 'isCameraLensSmudgeDetectionEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
86 | if let wanted {
87 | guard !enabled || !Self.sameDetectionInterval(device.cameraLensSmudgeDetectionInterval, wanted) else { return }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:87:66: error: 'cameraLensSmudgeDetectionInterval' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
78 | }
79 |
80 | func applyLensSmudgeDetection() {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 26.0, *), let device = videoDevice,
82 | device.activeFormat.isCameraLensSmudgeDetectionSupported
:
85 | let enabled = device.isCameraLensSmudgeDetectionEnabled
86 | if let wanted {
87 | guard !enabled || !Self.sameDetectionInterval(device.cameraLensSmudgeDetectionInterval, wanted) else { return }
| |- error: 'cameraLensSmudgeDetectionInterval' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
88 | } else {
89 | guard enabled else { return }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:93:24: error: 'setCameraLensSmudgeDetectionEnabled(_:detectionInterval:)' is only available in tvOS 26.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
78 | }
79 |
80 | func applyLensSmudgeDetection() {
| `- note: add '@available' attribute to enclosing instance method
81 | guard #available(iOS 26.0, *), let device = videoDevice,
82 | device.activeFormat.isCameraLensSmudgeDetectionSupported
:
91 | do {
92 | try device.prm_withConfigurationLock {
93 | device.setCameraLensSmudgeDetectionEnabled(wanted != nil, detectionInterval: wanted ?? .invalid)
| |- error: 'setCameraLensSmudgeDetectionEnabled(_:detectionInterval:)' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
94 | }
95 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:120:64: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
116 |
117 | /// Whether noise reduction is active on the movie or video-data connection.
118 | public var isLowLightVideoNoiseReductionActive: Bool {
| `- note: add '@available' attribute to enclosing property
119 | guard #available(iOS 27.0, *) else { return false }
120 | let movie = movieFileOutput?.connection(with: .video)?.isLowLightVideoNoiseReductionEnabled ?? false
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
121 | let data = videoDataOutput?.connection(with: .video)?.isLowLightVideoNoiseReductionEnabled ?? false
122 | return movie || data
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:121:63: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
116 |
117 | /// Whether noise reduction is active on the movie or video-data connection.
118 | public var isLowLightVideoNoiseReductionActive: Bool {
| `- note: add '@available' attribute to enclosing property
119 | guard #available(iOS 27.0, *) else { return false }
120 | let movie = movieFileOutput?.connection(with: .video)?.isLowLightVideoNoiseReductionEnabled ?? false
121 | let data = videoDataOutput?.connection(with: .video)?.isLowLightVideoNoiseReductionEnabled ?? false
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
122 | return movie || data
123 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:133:54: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
131 | // The SDK default: automatic on movie connections. The preview connection goes
132 | // back to off if an earlier `.on` forced it.
133 | if let movieConnection, !movieConnection.automaticallyEnablesLowLightVideoNoiseReduction {
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
134 | movieConnection.automaticallyEnablesLowLightVideoNoiseReduction = true
135 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:134:33: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
132 | // back to off if an earlier `.on` forced it.
133 | if let movieConnection, !movieConnection.automaticallyEnablesLowLightVideoNoiseReduction {
134 | movieConnection.automaticallyEnablesLowLightVideoNoiseReduction = true
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
135 | }
136 | if let dataConnection, !dataConnection.automaticallyEnablesLowLightVideoNoiseReduction,
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:136:52: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
134 | movieConnection.automaticallyEnablesLowLightVideoNoiseReduction = true
135 | }
136 | if let dataConnection, !dataConnection.automaticallyEnablesLowLightVideoNoiseReduction,
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
137 | dataConnection.isLowLightVideoNoiseReductionEnabled {
138 | dataConnection.isLowLightVideoNoiseReductionEnabled = false
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:137:31: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
135 | }
136 | if let dataConnection, !dataConnection.automaticallyEnablesLowLightVideoNoiseReduction,
137 | dataConnection.isLowLightVideoNoiseReductionEnabled {
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
138 | dataConnection.isLowLightVideoNoiseReductionEnabled = false
139 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:138:32: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
136 | if let dataConnection, !dataConnection.automaticallyEnablesLowLightVideoNoiseReduction,
137 | dataConnection.isLowLightVideoNoiseReductionEnabled {
138 | dataConnection.isLowLightVideoNoiseReductionEnabled = false
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
139 | }
140 | case .on, .off:
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:144:60: error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
142 | // flag may lag the format's; require both before enabling (enabling an
143 | // unsupported connection raises).
144 | let formatSupports = videoDevice?.activeFormat.isLowLightVideoNoiseReductionSupported ?? false
| |- error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
145 | for connection in [movieConnection, dataConnection].compactMap(\.self) {
146 | if connection.automaticallyEnablesLowLightVideoNoiseReduction {
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:146:31: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
144 | let formatSupports = videoDevice?.activeFormat.isLowLightVideoNoiseReductionSupported ?? false
145 | for connection in [movieConnection, dataConnection].compactMap(\.self) {
146 | if connection.automaticallyEnablesLowLightVideoNoiseReduction {
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
147 | connection.automaticallyEnablesLowLightVideoNoiseReduction = false
148 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:147:32: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
145 | for connection in [movieConnection, dataConnection].compactMap(\.self) {
146 | if connection.automaticallyEnablesLowLightVideoNoiseReduction {
147 | connection.automaticallyEnablesLowLightVideoNoiseReduction = false
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
148 | }
149 | let enable = lowLightVideoNoiseReduction == .on && formatSupports
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:150:35: error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
148 | }
149 | let enable = lowLightVideoNoiseReduction == .on && formatSupports
150 | && connection.isLowLightVideoNoiseReductionSupported
| |- error: 'isLowLightVideoNoiseReductionSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
151 | if connection.isLowLightVideoNoiseReductionEnabled != enable {
152 | connection.isLowLightVideoNoiseReductionEnabled = enable
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:151:31: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
149 | let enable = lowLightVideoNoiseReduction == .on && formatSupports
150 | && connection.isLowLightVideoNoiseReductionSupported
151 | if connection.isLowLightVideoNoiseReductionEnabled != enable {
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
152 | connection.isLowLightVideoNoiseReductionEnabled = enable
153 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift:152:32: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
10 | // separately (`PRMCameraSession+Cinematic.swift`) because it switches formats itself.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Intents
14 |
:
123 | }
124 |
125 | func applyLowLightVideoNoiseReduction() {
| `- note: add '@available' attribute to enclosing instance method
126 | guard #available(iOS 27.0, *) else { return }
127 | let movieConnection = movieFileOutput?.connection(with: .video)
:
150 | && connection.isLowLightVideoNoiseReductionSupported
151 | if connection.isLowLightVideoNoiseReductionEnabled != enable {
152 | connection.isLowLightVideoNoiseReductionEnabled = enable
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
153 | }
154 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:91:35: error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
89 | let matte = output.isPortraitEffectsMatteDeliveryEnabled
90 | let zsl = output.isZeroShutterLagEnabled
91 | let deferred = output.isAutoDeferredPhotoDeliveryEnabled
| `- error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
92 | PRMLog.debug(
93 | .session,
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:392:70: note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
390 | Setting this value to either YES or NO requires a lengthy reconfiguration of the capture pipeline, so you should set this property before calling -[AVCaptureSession startRunning]. Setting this property to YES throws an NSInvalidArgumentException if autoDeferredPhotoDeliverySupported is NO.
391 | */
392 | @property(nonatomic, getter=isAutoDeferredPhotoDeliveryEnabled) BOOL autoDeferredPhotoDeliveryEnabled API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
393 |
394 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:112:27: error: 'isAutoDeferredPhotoDeliverySupported' is unavailable in tvOS
110 | output.isPortraitEffectsMatteDeliveryEnabled = false
111 | }
112 | if output.isAutoDeferredPhotoDeliverySupported, output.isAutoDeferredPhotoDeliveryEnabled {
| `- error: 'isAutoDeferredPhotoDeliverySupported' is unavailable in tvOS
113 | output.isAutoDeferredPhotoDeliveryEnabled = false
114 | }
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:382:82: note: 'isAutoDeferredPhotoDeliverySupported' has been explicitly marked unavailable here
380 | Automatic deferred photo delivery can produce a lightweight photo representation, called a "proxy", at the time of capture that can later be processed to completion while improving camera responsiveness. When it's appropriate for the receiver to deliver a photo proxy for deferred processing, the delegate callback -captureOutput:didFinishCapturingDeferredPhotoProxy:error: will be invoked instead of -captureOutput:didFinishProcessingPhoto:error:. See the documentation for AVCaptureDeferredPhotoProxy for more details.
381 | */
382 | @property(nonatomic, readonly, getter=isAutoDeferredPhotoDeliverySupported) BOOL autoDeferredPhotoDeliverySupported API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliverySupported' has been explicitly marked unavailable here
383 |
384 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:112:72: error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
110 | output.isPortraitEffectsMatteDeliveryEnabled = false
111 | }
112 | if output.isAutoDeferredPhotoDeliverySupported, output.isAutoDeferredPhotoDeliveryEnabled {
| `- error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
113 | output.isAutoDeferredPhotoDeliveryEnabled = false
114 | }
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:392:70: note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
390 | Setting this value to either YES or NO requires a lengthy reconfiguration of the capture pipeline, so you should set this property before calling -[AVCaptureSession startRunning]. Setting this property to YES throws an NSInvalidArgumentException if autoDeferredPhotoDeliverySupported is NO.
391 | */
392 | @property(nonatomic, getter=isAutoDeferredPhotoDeliveryEnabled) BOOL autoDeferredPhotoDeliveryEnabled API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
393 |
394 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:113:28: error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
111 | }
112 | if output.isAutoDeferredPhotoDeliverySupported, output.isAutoDeferredPhotoDeliveryEnabled {
113 | output.isAutoDeferredPhotoDeliveryEnabled = false
| `- error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
114 | }
115 | if output.isZeroShutterLagSupported, output.isZeroShutterLagEnabled {
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:392:70: note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
390 | Setting this value to either YES or NO requires a lengthy reconfiguration of the capture pipeline, so you should set this property before calling -[AVCaptureSession startRunning]. Setting this property to YES throws an NSInvalidArgumentException if autoDeferredPhotoDeliverySupported is NO.
391 | */
392 | @property(nonatomic, getter=isAutoDeferredPhotoDeliveryEnabled) BOOL autoDeferredPhotoDeliveryEnabled API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
393 |
394 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:132:27: error: 'isAutoDeferredPhotoDeliverySupported' is unavailable in tvOS
130 | }
131 | }
132 | if output.isAutoDeferredPhotoDeliverySupported {
| `- error: 'isAutoDeferredPhotoDeliverySupported' is unavailable in tvOS
133 | let want = configuration.enableAutoDeferredPhotoDelivery
134 | if output.isAutoDeferredPhotoDeliveryEnabled != want {
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:382:82: note: 'isAutoDeferredPhotoDeliverySupported' has been explicitly marked unavailable here
380 | Automatic deferred photo delivery can produce a lightweight photo representation, called a "proxy", at the time of capture that can later be processed to completion while improving camera responsiveness. When it's appropriate for the receiver to deliver a photo proxy for deferred processing, the delegate callback -captureOutput:didFinishCapturingDeferredPhotoProxy:error: will be invoked instead of -captureOutput:didFinishProcessingPhoto:error:. See the documentation for AVCaptureDeferredPhotoProxy for more details.
381 | */
382 | @property(nonatomic, readonly, getter=isAutoDeferredPhotoDeliverySupported) BOOL autoDeferredPhotoDeliverySupported API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliverySupported' has been explicitly marked unavailable here
383 |
384 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:134:31: error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
132 | if output.isAutoDeferredPhotoDeliverySupported {
133 | let want = configuration.enableAutoDeferredPhotoDelivery
134 | if output.isAutoDeferredPhotoDeliveryEnabled != want {
| `- error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
135 | output.isAutoDeferredPhotoDeliveryEnabled = want
136 | }
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:392:70: note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
390 | Setting this value to either YES or NO requires a lengthy reconfiguration of the capture pipeline, so you should set this property before calling -[AVCaptureSession startRunning]. Setting this property to YES throws an NSInvalidArgumentException if autoDeferredPhotoDeliverySupported is NO.
391 | */
392 | @property(nonatomic, getter=isAutoDeferredPhotoDeliveryEnabled) BOOL autoDeferredPhotoDeliveryEnabled API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
393 |
394 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift:135:32: error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
133 | let want = configuration.enableAutoDeferredPhotoDelivery
134 | if output.isAutoDeferredPhotoDeliveryEnabled != want {
135 | output.isAutoDeferredPhotoDeliveryEnabled = want
| `- error: 'isAutoDeferredPhotoDeliveryEnabled' is unavailable in tvOS
136 | }
137 | }
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:392:70: note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
390 | Setting this value to either YES or NO requires a lengthy reconfiguration of the capture pipeline, so you should set this property before calling -[AVCaptureSession startRunning]. Setting this property to YES throws an NSInvalidArgumentException if autoDeferredPhotoDeliverySupported is NO.
391 | */
392 | @property(nonatomic, getter=isAutoDeferredPhotoDeliveryEnabled) BOOL autoDeferredPhotoDeliveryEnabled API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'isAutoDeferredPhotoDeliveryEnabled' has been explicitly marked unavailable here
393 |
394 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift:56:91: error: 'isDeferredStartSupported' is only available in tvOS 26.0 or newer
10 | // pipeline rebuild for no benefit.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Consumer types
14 |
:
28 | /// Call inside an open begin/commit; the available types change with the input and
29 | /// active format, and the type setter raises on anything not currently available.
30 | func reconcileMetadataOutput() {
| `- note: add '@available' attribute to enclosing instance method
31 | let cinematicActive = isCinematicVideoCaptureActive
32 | let needsOutput = configuration?.includesMetadataOutput == true
:
54 | // output also holds deferred start back until it delivers something, which a
55 | // metadata output may never do in an empty scene.
56 | if #available(iOS 26.0, *), configuration?.deferredStart != .disabled, output.isDeferredStartSupported {
| |- error: 'isDeferredStartSupported' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
57 | output.isDeferredStartEnabled = true
58 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift:57:24: error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
10 | // pipeline rebuild for no benefit.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Consumer types
14 |
:
28 | /// Call inside an open begin/commit; the available types change with the input and
29 | /// active format, and the type setter raises on anything not currently available.
30 | func reconcileMetadataOutput() {
| `- note: add '@available' attribute to enclosing instance method
31 | let cinematicActive = isCinematicVideoCaptureActive
32 | let needsOutput = configuration?.includesMetadataOutput == true
:
55 | // metadata output may never do in an empty scene.
56 | if #available(iOS 26.0, *), configuration?.deferredStart != .disabled, output.isDeferredStartSupported {
57 | output.isDeferredStartEnabled = true
| |- error: 'isDeferredStartEnabled' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
58 | }
59 | metadataOutput = output
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift:65:40: error: 'requiredMetadataObjectTypesForCinematicVideoCapture' is only available in tvOS 26.0 or newer
10 | // pipeline rebuild for no benefit.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Consumer types
14 |
:
28 | /// Call inside an open begin/commit; the available types change with the input and
29 | /// active format, and the type setter raises on anything not currently available.
30 | func reconcileMetadataOutput() {
| `- note: add '@available' attribute to enclosing instance method
31 | let cinematicActive = isCinematicVideoCaptureActive
32 | let needsOutput = configuration?.includesMetadataOutput == true
:
63 | var cinematicRequired: [AVMetadataObject.ObjectType] = []
64 | if #available(iOS 26.0, *) {
65 | cinematicRequired = output.requiredMetadataObjectTypesForCinematicVideoCapture
| |- error: 'requiredMetadataObjectTypesForCinematicVideoCapture' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
66 | }
67 | var trackingType: AVMetadataObject.ObjectType?
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift:69:29: error: 'focusTrackedObject' is only available in tvOS 27.0 or newer
10 | // pipeline rebuild for no benefit.
11 |
12 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
13 | // MARK: Consumer types
14 |
:
28 | /// Call inside an open begin/commit; the available types change with the input and
29 | /// active format, and the type setter raises on anything not currently available.
30 | func reconcileMetadataOutput() {
| `- note: add '@available' attribute to enclosing instance method
31 | let cinematicActive = isCinematicVideoCaptureActive
32 | let needsOutput = configuration?.includesMetadataOutput == true
:
67 | var trackingType: AVMetadataObject.ObjectType?
68 | if #available(iOS 27.0, *), wantsContinuousAutoFocusTracking {
69 | trackingType = .focusTrackedObject
| |- error: 'focusTrackedObject' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
70 | }
71 | let types = Self.effectiveMetadataObjectTypes(
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift:181:52: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
28 | }
29 |
30 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
31 | // MARK: - Planning
32 |
:
160 | /// stabilization and low-light noise reduction off the frames (both blend frames over
161 | /// time). Returns once a frame confirmed the exposure.
162 | func applyNightExposure(_ lease: PRMNightCaptureLease) async throws {
| `- note: add '@available' attribute to enclosing instance method
163 | let device = lease.device
164 | try device.prm_withConfigurationLock {
:
179 | changes = true
180 | }
181 | if #available(iOS 27.0, *), connection.automaticallyEnablesLowLightVideoNoiseReduction || connection.isLowLightVideoNoiseReductionEnabled {
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
182 | changes = true
183 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift:181:114: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
28 | }
29 |
30 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
31 | // MARK: - Planning
32 |
:
160 | /// stabilization and low-light noise reduction off the frames (both blend frames over
161 | /// time). Returns once a frame confirmed the exposure.
162 | func applyNightExposure(_ lease: PRMNightCaptureLease) async throws {
| `- note: add '@available' attribute to enclosing instance method
163 | let device = lease.device
164 | try device.prm_withConfigurationLock {
:
179 | changes = true
180 | }
181 | if #available(iOS 27.0, *), connection.automaticallyEnablesLowLightVideoNoiseReduction || connection.isLowLightVideoNoiseReductionEnabled {
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
182 | changes = true
183 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift:188:32: error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
28 | }
29 |
30 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
31 | // MARK: - Planning
32 |
:
160 | /// stabilization and low-light noise reduction off the frames (both blend frames over
161 | /// time). Returns once a frame confirmed the exposure.
162 | func applyNightExposure(_ lease: PRMNightCaptureLease) async throws {
| `- note: add '@available' attribute to enclosing instance method
163 | let device = lease.device
164 | try device.prm_withConfigurationLock {
:
186 | connection.prm_setStabilization(.off)
187 | if #available(iOS 27.0, *) {
188 | connection.automaticallyEnablesLowLightVideoNoiseReduction = false
| |- error: 'automaticallyEnablesLowLightVideoNoiseReduction' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
189 | if connection.isLowLightVideoNoiseReductionEnabled {
190 | connection.isLowLightVideoNoiseReductionEnabled = false
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift:189:35: error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
28 | }
29 |
30 | extension PRMCameraSession {
| `- note: add '@available' attribute to enclosing extension
31 | // MARK: - Planning
32 |
:
160 | /// stabilization and low-light noise reduction off the frames (both blend frames over
161 | /// time). Returns once a frame confirmed the exposure.
162 | func applyNightExposure(_ lease: PRMNightCaptureLease) async throws {
| `- note: add '@available' attribute to enclosing instance method
163 | let device = lease.device
164 | try device.prm_withConfigurationLock {
:
187 | if #available(iOS 27.0, *) {
188 | connection.automaticallyEnablesLowLightVideoNoiseReduction = false
189 | if connection.isLowLightVideoNoiseReductionEnabled {
| |- error: 'isLowLightVideoNoiseReductionEnabled' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
190 | connection.isLowLightVideoNoiseReductionEnabled = false
191 | }
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraDevice.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+Cinematic.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Controls.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+Controls.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+DeviceObservers.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+Features.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+Format.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+Metadata.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+NightCapture.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+State.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMCameraSession+State.swift
SwiftCompile normal arm64 Compiling\ PRMRenderContext.swift,\ PRMVideoFrame.swift,\ PRMBurstLog.swift,\ PRMImage.swift,\ PRMLog+Categories.swift,\ PRMLog.swift,\ PRMStreamRegistry.swift,\ PRMTempFile.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMRenderContext.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMVideoFrame.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMBurstLog.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMImage.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog+Categories.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMStreamRegistry.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMTempFile.swift (in target 'PrismCore' from project 'Prism')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMRenderContext.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMRenderContext.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMVideoFrame.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMVideoFrame.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMBurstLog.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMBurstLog.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMImage.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMImage.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog+Categories.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMLog+Categories.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMLog.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMStreamRegistry.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMStreamRegistry.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMTempFile.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMTempFile.swift
SwiftEmitModule normal arm64 Emitting\ module\ for\ PrismCore (in target 'PrismCore' from project 'Prism')
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCinematicVideo.swift:18:34: error: 'CinematicVideoFocusMode' is only available in tvOS 26.0 or newer
15 |
16 | @available(iOS 26.0, *)
17 | extension PRMCinematicFocusMode {
| `- note: add '@available' attribute to enclosing extension
18 | init(_ mode: AVCaptureDevice.CinematicVideoFocusMode) {
| | `- error: 'CinematicVideoFocusMode' is only available in tvOS 26.0 or newer
| `- note: add '@available' attribute to enclosing initializer
19 | switch mode {
20 | case .strong: self = .strong
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCinematicVideo.swift:26:33: error: 'CinematicVideoFocusMode' is only available in tvOS 26.0 or newer
15 |
16 | @available(iOS 26.0, *)
17 | extension PRMCinematicFocusMode {
| `- note: add '@available' attribute to enclosing extension
18 | init(_ mode: AVCaptureDevice.CinematicVideoFocusMode) {
19 | switch mode {
:
24 | }
25 |
26 | var avMode: AVCaptureDevice.CinematicVideoFocusMode {
| | `- error: 'CinematicVideoFocusMode' is only available in tvOS 26.0 or newer
| `- note: add '@available' attribute to enclosing property
27 | switch self {
28 | case .none: .none
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCinematicVideo.swift:59:20: error: 'AVCaptureSceneMonitoringStatus' is only available in tvOS 26.0 or newer
50 | /// A scene condition that keeps Cinematic Video from working well. Mirrors
51 | /// `AVCaptureSceneMonitoringStatus` (iOS 26). Surface it as a "scene too dark" hint.
52 | public enum PRMSceneMonitoringStatus: Sendable, Hashable {
| `- note: add '@available' attribute to enclosing enum
53 | /// The scene is too dark for Cinematic Video to work optimally.
54 | case notEnoughLight
:
57 |
58 | @available(iOS 26.0, *)
59 | init(_ status: AVCaptureSceneMonitoringStatus) {
| | `- error: 'AVCaptureSceneMonitoringStatus' is only available in tvOS 26.0 or newer
| `- note: add '@available' attribute to enclosing initializer
60 | self = status == .notEnoughLight ? .notEnoughLight : .other(status.rawValue)
61 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMFraming.swift:34:36: error: 'AspectRatio' is unavailable in tvOS
32 | @available(iOS 26.0, *)
33 | extension PRMAspectRatio {
34 | init?(_ ratio: AVCaptureDevice.AspectRatio) {
| `- error: 'AspectRatio' is unavailable in tvOS
35 | switch ratio {
36 | case .ratio1x1: self = .ratio1x1
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:2838:19: note: 'AspectRatio' has been explicitly marked unavailable here
2836 |
2837 | /// String constants describing the different video aspect ratios you can configure for a particular device.
2838 | typedef NSString *AVCaptureAspectRatio NS_TYPED_ENUM NS_SWIFT_NAME(AVCaptureDevice.AspectRatio) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'AspectRatio' has been explicitly marked unavailable here
2839 |
2840 | /// An aspect ratio of 1x1.
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMFraming.swift:45:40: error: 'AspectRatio' is unavailable in tvOS
43 | }
44 |
45 | var avAspectRatio: AVCaptureDevice.AspectRatio {
| `- error: 'AspectRatio' is unavailable in tvOS
46 | switch self {
47 | case .ratio1x1: .ratio1x1
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:2838:19: note: 'AspectRatio' has been explicitly marked unavailable here
2836 |
2837 | /// String constants describing the different video aspect ratios you can configure for a particular device.
2838 | typedef NSString *AVCaptureAspectRatio NS_TYPED_ENUM NS_SWIFT_NAME(AVCaptureDevice.AspectRatio) API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'AspectRatio' has been explicitly marked unavailable here
2839 |
2840 | /// An aspect ratio of 1x1.
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMFraming.swift:70:22: error: 'AVCaptureFraming' is unavailable in tvOS
68 |
69 | @available(iOS 26.0, *)
70 | init?(_ framing: AVCaptureFraming) {
| `- error: 'AVCaptureFraming' is unavailable in tvOS
71 | guard let ratio = PRMAspectRatio(framing.aspectRatio) else { return nil }
72 | self.init(aspectRatio: ratio, zoomFactor: framing.zoomFactor)
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:2940:12: note: 'AVCaptureFraming' has been explicitly marked unavailable here
2938 | /// An ``AVCaptureSmartFramingMonitor`` provides framing recommendations using this object.
2939 | API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos)
2940 | @interface AVCaptureFraming : NSObject
| `- note: 'AVCaptureFraming' has been explicitly marked unavailable here
2941 |
2942 | AV_INIT_UNAVAILABLE
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMRotationCoordinator.swift:82:60: error: 'AVCaptureVideoOrientation' is unavailable in tvOS
80 | /// one orientation. External cameras return 0.
81 | @available(iOS 27.0, *)
82 | public func videoRotationAngle(relativeTo orientation: AVCaptureVideoOrientation) -> CGFloat {
| `- error: 'AVCaptureVideoOrientation' is unavailable in tvOS
83 | coordinator.videoRotationAngleRelative(toDeviceOrientation: orientation)
84 | }
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:104:28: note: 'AVCaptureVideoOrientation' has been explicitly marked unavailable here
102 |
103 | /// Constants indicating video orientation, for use with AVCaptureDeviceRotationCoordinator.
104 | typedef NS_ENUM(NSInteger, AVCaptureVideoOrientation) {
| `- note: 'AVCaptureVideoOrientation' has been explicitly marked unavailable here
105 | /// Indicates that video should be oriented vertically, port on the bottom.
106 | AVCaptureVideoOrientationPortrait = 1,
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMSessionHealth.swift:32:20: error: 'AVCaptureCameraLensSmudgeDetectionStatus' is only available in tvOS 26.0 or newer
19 |
20 | /// Result of iOS 26 camera-lens smudge detection.
21 | public enum PRMLensSmudgeStatus: Sendable, Equatable {
| `- note: add '@available' attribute to enclosing enum
22 | /// Detection is off, or unsupported on this device / format / OS.
23 | case disabled
:
30 |
31 | @available(iOS 26.0, *)
32 | init(_ status: AVCaptureCameraLensSmudgeDetectionStatus) {
| | `- error: 'AVCaptureCameraLensSmudgeDetectionStatus' is only available in tvOS 26.0 or newer
| `- note: add '@available' attribute to enclosing initializer
33 | switch status {
34 | case .smudgeNotDetected: self = .clean
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoCapture+Delegate.swift:44:66: error: 'AVCaptureDeferredPhotoProxy' is unavailable in tvOS
42 | public func photoOutput(
43 | _ output: AVCapturePhotoOutput,
44 | didFinishCapturingDeferredPhotoProxy deferredPhotoProxy: AVCaptureDeferredPhotoProxy?,
| `- error: 'AVCaptureDeferredPhotoProxy' is unavailable in tvOS
45 | error: (any Error)?
46 | ) {
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:2343:12: note: 'AVCaptureDeferredPhotoProxy' has been explicitly marked unavailable here
2341 | */
2342 | API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos)
2343 | @interface AVCaptureDeferredPhotoProxy : AVCapturePhoto
| `- note: 'AVCaptureDeferredPhotoProxy' has been explicitly marked unavailable here
2344 |
2345 | AV_INIT_UNAVAILABLE
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoCapture+Delegate.swift:42:17: error: cannot override 'photoOutput' which has been marked unavailable
40 | /// proxy is a failure with no follow-up; the capture is identified (and failed) in
41 | /// `didFinishCaptureFor`, which carries the resolved settings this callback lacks.
42 | public func photoOutput(
| `- error: cannot override 'photoOutput' which has been marked unavailable
43 | _ output: AVCapturePhotoOutput,
44 | didFinishCapturingDeferredPhotoProxy deferredPhotoProxy: AVCaptureDeferredPhotoProxy?,
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h:1071:1: note: 'photoOutput(_:didFinishCapturingDeferredPhotoProxy:error:)' has been explicitly marked unavailable here
1069 | Delegates are required to implement this method if they opt in for deferred photo processing, otherwise an NSInvalidArgumentException will be thrown from the -[AVCapturePhotoOutput capturePhotoWithSettings:delegate:] method.
1070 | */
1071 | - (void)captureOutput:(AVCapturePhotoOutput *)output didFinishCapturingDeferredPhotoProxy:(nullable AVCaptureDeferredPhotoProxy *)deferredPhotoProxy error:(nullable NSError *)error NS_SWIFT_NAME(photoOutput(_:didFinishCapturingDeferredPhotoProxy:error:)) API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'photoOutput(_:didFinishCapturingDeferredPhotoProxy:error:)' has been explicitly marked unavailable here
1072 |
1073 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:101:21: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:112:19: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:122:39: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
120 | }
121 |
122 | static func set(from signals: Set<AVCaptureDeviceExposureSignal>) -> Set<Self> {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing static method
123 | Set(signals.compactMap(Self.init))
124 | }
Failed frontend command:
/Applications/Xcode-27.0.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/DerivedSources/resource_bundle_accessor.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera+Framing.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera+ManualControls.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera+Observers.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera+SessionHealth.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera+Tracking.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCamera.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraActor.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraDevice.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Cinematic.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Controls.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+DeviceObservers.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Features.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Format.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+Metadata.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+NightCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession+State.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraSession.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCameraState.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMCinematicVideo.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMDetectedObject.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMFraming.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMMetadataRouter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMPermissions.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMRotationCoordinator.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMSessionError.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMSessionHealth.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Camera/PRMVideoFrameRouter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightMerger.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightPlanner.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightRegistration.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightStacker.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightTone.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/Night/PRMNightTypes.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMDepthCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMLivePhoto.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMNightModeCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMOutputResolver.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhoto.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoCapture+Delegate.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoCapture+Encoding.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoCapture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPhotoSettings.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPortraitPhoto.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMPortraitReadiness.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMRecording.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Capture/PRMVideoRecorder.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureConnection+Stabilization.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Aperture.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+AspectRatio.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Cinematic.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Configuration.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Depth.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Exposure.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FocusTracking.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+FrameRate.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+HDR.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+ISO.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Lens.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Modes.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+SmudgeDetection.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Torch.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCapturePhotoOutput+Readiness.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMLens.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMBlurFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMColorFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMDistortionFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMPortraitBokehFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMStylizeFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBasicFilterRenderer.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBufferPoolAllocator.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterChain.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterPipeline.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterRenderer.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMRenderContext.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMVideoFrame.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMBurstLog.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMImage.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog+Categories.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMLog.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMStreamRegistry.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Utilities/PRMTempFile.swift -target arm64-apple-tvos18.0 -module-can-import-version UIKit 9127.0.84.1 9127.0.84 -disable-cross-import-overlay-search -swift-module-cross-import Vision /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/Vision.framework/Modules/Vision.swiftcrossimport/FoundationModels.swiftoverlay -swift-module-cross-import Vision /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/Vision.framework/Modules/Vision.swiftcrossimport/FoundationModels.swiftoverlay -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libPreviewsMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#PreviewsMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -load-resolved-plugin /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftUIMacros.dylib\#/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftUIMacros -disable-implicit-swift-modules -Xcc -fno-implicit-modules -Xcc -fno-implicit-module-maps -explicit-swift-module-map-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore-dependencies-1.json -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos -Isystem /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos -F /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/Library/Frameworks -F /Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/Developer/Library/Frameworks -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -no-color-diagnostics -Xcc -fno-color-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=5 -profile-generate -profile-coverage-mapping -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_AVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -enable-anonymous-context-mangled-names -file-compilation-dir /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/appletvos27.0-24J360-e829b21a6f8c9b70876ba0858053c044509235ffd515576fb835ffc8f67461e5.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-appletvos/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name PrismCore -package-name spi_builder_workspace -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore_const_extract_protocols.json -disable-clang-spi -clang-target arm64-apple-tvos27.0 -target-sdk-version 27.0 -target-sdk-name appletvos27.0 -in-process-plugin-server-path /Applications/Xcode-27.0.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -emit-module-doc-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/Prism.build/Debug-appletvos/PrismCore-t.build/Objects-normal/arm64/PrismCore.abi.json
SwiftCompile normal arm64 (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
SwiftCompile normal arm64 Compiling\ AVCaptureDevice+WhiteBalance.swift,\ AVCaptureDevice+Zoom.swift,\ AVCapturePhotoOutput+Readiness.swift,\ PRMExposureValue.swift,\ PRMLens.swift,\ PRMBlurFilter.swift,\ PRMColorFilter.swift,\ PRMDistortionFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCapturePhotoOutput+Readiness.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMLens.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMBlurFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMColorFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMDistortionFilter.swift (in target 'PrismCore' from project 'Prism')
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift:48:30: error: 'tungsten' is only available in tvOS 26.0 or newer
25 | /// non-zero tint. ``temperatureAndTint`` returns those values; ``temperature`` stays the
26 | /// nominal Kelvin used on earlier systems.
27 | enum PRMWhiteBalancePreset: Sendable, CaseIterable {
| `- note: add '@available' attribute to enclosing enum
28 | case tungsten // ~3200K
29 | case fluorescent // ~4000K
:
44 |
45 | @available(iOS 26.0, *)
46 | private var systemValues: AVCaptureDevice.WhiteBalanceTemperatureAndTintValues? {
| `- note: add '@available' attribute to enclosing property
47 | switch self {
48 | case .tungsten: .tungsten
| |- error: 'tungsten' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
49 | case .fluorescent: .fluorescent
50 | case .daylight: .daylight
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift:49:33: error: 'fluorescent' is only available in tvOS 26.0 or newer
25 | /// non-zero tint. ``temperatureAndTint`` returns those values; ``temperature`` stays the
26 | /// nominal Kelvin used on earlier systems.
27 | enum PRMWhiteBalancePreset: Sendable, CaseIterable {
| `- note: add '@available' attribute to enclosing enum
28 | case tungsten // ~3200K
29 | case fluorescent // ~4000K
:
44 |
45 | @available(iOS 26.0, *)
46 | private var systemValues: AVCaptureDevice.WhiteBalanceTemperatureAndTintValues? {
| `- note: add '@available' attribute to enclosing property
47 | switch self {
48 | case .tungsten: .tungsten
49 | case .fluorescent: .fluorescent
| |- error: 'fluorescent' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
50 | case .daylight: .daylight
51 | case .cloudy: .cloudy
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift:50:30: error: 'daylight' is only available in tvOS 26.0 or newer
25 | /// non-zero tint. ``temperatureAndTint`` returns those values; ``temperature`` stays the
26 | /// nominal Kelvin used on earlier systems.
27 | enum PRMWhiteBalancePreset: Sendable, CaseIterable {
| `- note: add '@available' attribute to enclosing enum
28 | case tungsten // ~3200K
29 | case fluorescent // ~4000K
:
44 |
45 | @available(iOS 26.0, *)
46 | private var systemValues: AVCaptureDevice.WhiteBalanceTemperatureAndTintValues? {
| `- note: add '@available' attribute to enclosing property
47 | switch self {
48 | case .tungsten: .tungsten
49 | case .fluorescent: .fluorescent
50 | case .daylight: .daylight
| |- error: 'daylight' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
51 | case .cloudy: .cloudy
52 | case .shade: .shadow
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift:51:28: error: 'cloudy' is only available in tvOS 26.0 or newer
25 | /// non-zero tint. ``temperatureAndTint`` returns those values; ``temperature`` stays the
26 | /// nominal Kelvin used on earlier systems.
27 | enum PRMWhiteBalancePreset: Sendable, CaseIterable {
| `- note: add '@available' attribute to enclosing enum
28 | case tungsten // ~3200K
29 | case fluorescent // ~4000K
:
44 |
45 | @available(iOS 26.0, *)
46 | private var systemValues: AVCaptureDevice.WhiteBalanceTemperatureAndTintValues? {
| `- note: add '@available' attribute to enclosing property
47 | switch self {
48 | case .tungsten: .tungsten
49 | case .fluorescent: .fluorescent
50 | case .daylight: .daylight
51 | case .cloudy: .cloudy
| |- error: 'cloudy' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
52 | case .shade: .shadow
53 | case .flash: nil
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift:52:27: error: 'shadow' is only available in tvOS 26.0 or newer
25 | /// non-zero tint. ``temperatureAndTint`` returns those values; ``temperature`` stays the
26 | /// nominal Kelvin used on earlier systems.
27 | enum PRMWhiteBalancePreset: Sendable, CaseIterable {
| `- note: add '@available' attribute to enclosing enum
28 | case tungsten // ~3200K
29 | case fluorescent // ~4000K
:
44 |
45 | @available(iOS 26.0, *)
46 | private var systemValues: AVCaptureDevice.WhiteBalanceTemperatureAndTintValues? {
| `- note: add '@available' attribute to enclosing property
47 | switch self {
48 | case .tungsten: .tungsten
:
50 | case .daylight: .daylight
51 | case .cloudy: .cloudy
52 | case .shade: .shadow
| |- error: 'shadow' is only available in tvOS 26.0 or newer
| `- note: add 'if #available' version check
53 | case .flash: nil
54 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift:140:23: error: 'nominalFocalLengthIn35mmFilm' is unavailable in tvOS
138 | var prm_nominalFocalLength35mm: Double {
139 | guard #available(iOS 26.0, *) else { return 0 }
140 | return Double(nominalFocalLengthIn35mmFilm)
| `- error: 'nominalFocalLengthIn35mmFilm' is unavailable in tvOS
141 | }
142 |
/Applications/Xcode-27.0.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:2963:38: note: 'nominalFocalLengthIn35mmFilm' has been explicitly marked unavailable here
2961 | ///
2962 | /// This property value is `0` for virtual devices and external cameras.
2963 | @property(nonatomic, readonly) float nominalFocalLengthIn35mmFilm API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
| `- note: 'nominalFocalLengthIn35mmFilm' has been explicitly marked unavailable here
2964 | @end
2965 |
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift:158:40: error: 'isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported' is only available in tvOS 27.0 or newer
4 | private let sensorWidth35mm: Double = 36.0
5 |
6 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
7 | // MARK: - Set Zoom
8 |
:
155 | /// - Throws: ``PRMSessionError/unsupportedConfiguration(_:)`` before iOS 27, when the
156 | /// device doesn't support locking, or when it has no constituent of `type`.
157 | func prm_lockPrimaryConstituent(to type: AVCaptureDevice.DeviceType?) throws {
| `- note: add '@available' attribute to enclosing instance method
158 | guard #available(iOS 27.0, *), isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported else {
| |- error: 'isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
159 | throw PRMSessionError.unsupportedConfiguration("Locking to one lens requires iOS 27 and a virtual camera that supports it")
160 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift:171:13: error: 'setPrimaryConstituentDeviceSwitchingBehaviorLockedWith' is only available in tvOS 27.0 or newer
4 | private let sensorWidth35mm: Double = 36.0
5 |
6 | public extension AVCaptureDevice {
| `- note: add '@available' attribute to enclosing extension
7 | // MARK: - Set Zoom
8 |
:
155 | /// - Throws: ``PRMSessionError/unsupportedConfiguration(_:)`` before iOS 27, when the
156 | /// device doesn't support locking, or when it has no constituent of `type`.
157 | func prm_lockPrimaryConstituent(to type: AVCaptureDevice.DeviceType?) throws {
| `- note: add '@available' attribute to enclosing instance method
158 | guard #available(iOS 27.0, *), isPrimaryConstituentDeviceSwitchingBehaviorLockedWithDeviceSupported else {
159 | throw PRMSessionError.unsupportedConfiguration("Locking to one lens requires iOS 27 and a virtual camera that supports it")
:
169 | }
170 | try prm_withConfigurationLock {
171 | setPrimaryConstituentDeviceSwitchingBehaviorLockedWith(constituent)
| |- error: 'setPrimaryConstituentDeviceSwitchingBehaviorLockedWith' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
172 | }
173 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:101:21: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:112:19: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:122:39: error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
120 | }
121 |
122 | static func set(from signals: Set<AVCaptureDeviceExposureSignal>) -> Set<Self> {
| | `- error: 'AVCaptureDeviceExposureSignal' is only available in tvOS 27.0 or newer
| `- note: add '@available' attribute to enclosing static method
123 | Set(signals.compactMap(Self.init))
124 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:103:15: error: 'subjectMotion' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
| |- error: 'subjectMotion' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
104 | case .groupPhoto: self = .groupPhoto
105 | case .document: self = .document
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:104:15: error: 'groupPhoto' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
104 | case .groupPhoto: self = .groupPhoto
| |- error: 'groupPhoto' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
105 | case .document: self = .document
106 | case .starburst: self = .starburst
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:105:15: error: 'document' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
104 | case .groupPhoto: self = .groupPhoto
105 | case .document: self = .document
| |- error: 'document' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
106 | case .starburst: self = .starburst
107 | case .flicker: self = .flicker
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:106:15: error: 'starburst' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
104 | case .groupPhoto: self = .groupPhoto
105 | case .document: self = .document
106 | case .starburst: self = .starburst
| |- error: 'starburst' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
107 | case .flicker: self = .flicker
108 | default: return nil
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:107:15: error: 'flicker' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
| `- note: add '@available' attribute to enclosing initializer
102 | switch signal {
103 | case .subjectMotion: self = .subjectMotion
:
105 | case .document: self = .document
106 | case .starburst: self = .starburst
107 | case .flicker: self = .flicker
| |- error: 'flicker' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
108 | default: return nil
109 | }
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:114:31: error: 'subjectMotion' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
| |- error: 'subjectMotion' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
115 | case .groupPhoto: .groupPhoto
116 | case .document: .document
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:115:28: error: 'groupPhoto' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
115 | case .groupPhoto: .groupPhoto
| |- error: 'groupPhoto' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
116 | case .document: .document
117 | case .starburst: .starburst
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:116:26: error: 'document' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
115 | case .groupPhoto: .groupPhoto
116 | case .document: .document
| |- error: 'document' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
117 | case .starburst: .starburst
118 | case .flicker: .flicker
/Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift:117:27: error: 'starburst' is only available in tvOS 27.0 or newer
98 |
99 | @available(iOS 27.0, *)
100 | extension PRMExposureSignal {
| `- note: add '@available' attribute to enclosing extension
101 | init?(_ signal: AVCaptureDeviceExposureSignal) {
102 | switch signal {
:
110 | }
111 |
112 | var avSignal: AVCaptureDeviceExposureSignal {
| `- note: add '@available' attribute to enclosing property
113 | switch self {
114 | case .subjectMotion: .subjectMotion
115 | case .groupPhoto: .groupPhoto
116 | case .document: .document
117 | case .starburst: .starburst
| |- error: 'starburst' is only available in tvOS 27.0 or newer
| `- note: add 'if #available' version check
118 | case .flicker: .flicker
119 | }
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+WhiteBalance.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+WhiteBalance.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCaptureDevice+Zoom.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCaptureDevice+Zoom.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/AVCapturePhotoOutput+Readiness.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVCapturePhotoOutput+Readiness.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMExposureValue.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMExposureValue.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Device/PRMLens.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMLens.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMBlurFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMBlurFilter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMColorFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMColorFilter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMDistortionFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMDistortionFilter.swift
SwiftCompile normal arm64 Compiling\ PRMPortraitBokehFilter.swift,\ PRMStylizeFilter.swift,\ PRMBasicFilterRenderer.swift,\ PRMBufferPoolAllocator.swift,\ PRMFilter.swift,\ PRMFilterChain.swift,\ PRMFilterPipeline.swift,\ PRMFilterRenderer.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMPortraitBokehFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMStylizeFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBasicFilterRenderer.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBufferPoolAllocator.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilter.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterChain.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterPipeline.swift /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterRenderer.swift (in target 'PrismCore' from project 'Prism')
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMPortraitBokehFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMPortraitBokehFilter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/Filters/PRMStylizeFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMStylizeFilter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBasicFilterRenderer.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMBasicFilterRenderer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMBufferPoolAllocator.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMBufferPoolAllocator.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilter.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMFilter.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterChain.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMFilterChain.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterPipeline.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMFilterPipeline.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/PrismCore/Filter/PRMFilterRenderer.swift (in target 'PrismCore' from project 'Prism')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PRMFilterRenderer.swift
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
2026-10-12 14:40:52.051 xcodebuild[773:4676] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
** BUILD FAILED **
The following build commands failed:
SwiftEmitModule normal arm64 Emitting\ module\ for\ PrismCore (in target 'PrismCore' from project 'Prism')
SwiftCompile normal arm64 (in target 'PrismCore' from project 'Prism')
Building workspace Prism with scheme Prism-Package
(3 failures)
BUILD FAILURE 6.4 tvOS