-
Notifications
You must be signed in to change notification settings - Fork 569
ScreenCaptureKit iOS xcode27.0 b1
Alex Soto edited this page Jun 9, 2026
·
1 revision
#ScreenCaptureKit.framework
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h 2026-05-22 12:45:36
@@ -0,0 +1,79 @@
+//
+// SCClipBufferingOutput.h
+// ScreenCaptureKit
+//
+// Copyright © 2025 Apple Inc. All rights reserved.
+//
+
+#ifndef SCClipBufferingOutput_h
+#define SCClipBufferingOutput_h
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SCClipBufferingOutput;
+
+/*!
+ @protocol SCClipBufferingOutputDelegate
+ @abstract
+ Defines an interface for delegates of SCClipBufferingOutput to respond to events that occur during clip buffering.
+ */
+API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCClipBufferingOutputDelegate <NSObject>
+
+@optional
+/*!
+ @abstract clipBufferingOutputDidStartBuffering:
+ @param clipBufferingOutput the SCClipBufferingOutput object
+ @discussion Notifies the delegate that clip buffering has successfully started.
+*/
+- (void)clipBufferingOutputDidStartBuffering:(SCClipBufferingOutput *)clipBufferingOutput;
+
+/*!
+ @abstract clipBufferingOutput:didFailWithError:
+ @param clipBufferingOutput the SCClipBufferingOutput object
+ @param error error describing why clip buffering failed
+ @discussion Notifies the delegate that clip buffering has failed with an associated error.
+*/
+- (void)clipBufferingOutput:(SCClipBufferingOutput *)clipBufferingOutput didFailWithError:(NSError *)error;
+
+/*!
+ @abstract clipBufferingOutputDidStopBuffering:
+ @param clipBufferingOutput the SCClipBufferingOutput object
+ @discussion Notifies the delegate that clip buffering has finished successfully.
+*/
+- (void)clipBufferingOutputDidStopBuffering:(SCClipBufferingOutput *)clipBufferingOutput;
+
+@end
+
+/*!
+ @abstract SCClipBufferingOutput
+ @discussion SCClipBufferingOutput represents a clip buffering session on a SCStream.
+*/
+API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCClipBufferingOutput : NSObject
+
+/*!
+ @method initWithDelegate:
+ @abstract Initialize SCClipBufferingOutput object with SCClipBufferingOutputDelegate
+ @param delegate object conforming to SCClipBufferingOutputDelegate protocol. Clients may specify a delegate to receive notifications about clip buffering events.
+ @discussion Client can create a SCClipBufferingOutput with this initializer and add it to SCStream to start clip buffering.
+*/
+- (instancetype)initWithDelegate:(nullable id<SCClipBufferingOutputDelegate>)delegate;
+
+/*!
+ @method exportClipToURL:duration:completionHandler:
+ @abstract Export buffered content as a clip to the specified URL
+ @param url URL containing absolute path for where to save the clip. Must be a file URL. The file will be created; if it already exists, it will be overwritten.
+ @param duration Length of time in seconds for clip export. The clip will contain the most recent samples from the buffer for this duration. Maximum duration is 15 seconds. If the requested duration exceeds available buffered content, the clip will contain all available buffered content.
+ @param completionHandler handler called after clip export completes or fails. Will be passed an optional NSError in the SCStreamErrorDomain domain if there was an issue exporting the clip.
+ @discussion This method exports the most recent buffered samples as a video file. The export happens asynchronously and does not interrupt ongoing buffering - new samples continue to be buffered during export. The clip buffering output must be added to a stream before exports can be requested.
+*/
+- (void)exportClipToURL:(NSURL *)url duration:(NSTimeInterval)duration completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* SCClipBufferingOutput_h */
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h 2026-05-22 08:44:53
@@ -0,0 +1,191 @@
+//
+// SCContentSharingPicker.h
+// ScreenCaptureKit
+//
+// Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <ScreenCaptureKit/ScreenCaptureKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+/*!
+ @typedef SCContentSharingPickerMode
+ @abstract SCContentSharingPickerModeSingleWindow picker mode for single window selection
+ @constant SCContentSharingPickerModeMultipleWindows picker mode for multiple window selection
+ @constant SCContentSharingPickerModeSingleApplication picker mode for application selection
+ @constant SCContentSharingPickerModeSingleDisplay picker mode for full display selection
+*/
+typedef NS_OPTIONS(NSUInteger, SCContentSharingPickerMode) {
+ SCContentSharingPickerModeSingleWindow = 1 << 0,
+ SCContentSharingPickerModeMultipleWindows = 1 << 1,
+ SCContentSharingPickerModeSingleApplication = 1 << 2,
+ SCContentSharingPickerModeMultipleApplications = 1 << 3,
+ SCContentSharingPickerModeSingleDisplay = 1 << 4
+} API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+@protocol SCContentSharingPickerObserver;
+
+/*!
+ @abstract SCContentSharingPickerConfiguration
+ @discussion SCContentSharingPickerConfiguration is an object which can optionally be set on the SCContentSharingPicker for customized configuration.
+*/
+API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+NS_REFINED_FOR_SWIFT
+@interface SCContentSharingPickerConfiguration <NSCopying>: NSObject
+/*!
+ @abstract allowedPickerModes Limits the type of selections available to the user when the picker is presented. Default is 0, no excluded picking modes
+ */
+@property (nonatomic, assign) SCContentSharingPickerMode allowedPickerModes API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract excludedWindowIDs Excludes CGWindowIDs for picking
+ */
+@property (nonatomic, strong) NSArray<NSNumber *> *excludedWindowIDs API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract excludedBundleIDs Excludes bundle IDs for picking
+ */
+@property (nonatomic, strong) NSArray<NSString *> *excludedBundleIDs API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract allowsChangingSelectedContent Controls if the user can make updates to the content filter after the initial selection. Defaults is YES.
+ */
+@property (nonatomic, assign) BOOL allowsChangingSelectedContent API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract showsMicrophoneControl Indicates whether the system picker view will show microphone control for user. Default is YES.
+ */
+@property (nonatomic, assign) BOOL showsMicrophoneControl API_AVAILABLE(ios(27.0), visionos(27.0)) API_UNAVAILABLE(macos, macCatalyst, tvos);
+
+/*!
+ @abstract showsCameraControl Indicates whether the system picker will show camera control for user. Default is NO. Only applies when presenting the picker for the current application
+ */
+@property (nonatomic, assign) BOOL showsCameraControl API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos);
+
+@end
+
+/*!
+ @abstract SCContentSharingPicker
+ @discussion SCContentSharingPicker is an object created by client applications to opt-in to Control Center's content picker
+*/
+API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCContentSharingPicker : NSObject
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/*!
+ @abstract sharedPicker the singleton shared picker for the application
+ */
+@property (class, readonly) SCContentSharingPicker *sharedPicker;
+
+/*!
+ @abstract defaultConfiguration for the content sharing picker. If a stream does not have a configuration, the default configuration will be used.
+ */
+@property (nonatomic, copy) SCContentSharingPickerConfiguration *defaultConfiguration NS_REFINED_FOR_SWIFT;
+
+/*!
+ @abstract maximumStreamCount An integer value that, if set, limits when Control Center will show the UI to present a picker with no associated stream. If set to 0, Control Center will never ever show UI to present a picker without an associated stream.
+ */
+@property (nonatomic, nullable, strong) NSNumber *maximumStreamCount API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos) NS_REFINED_FOR_SWIFT;
+
+/*!
+ @abstract active A picker needs to be marked as active to enable user interaction with system UI (displayed picker, video menu bar, directly from a window). If the picker is not marked as active, when present is called, the displayed picker UI will not appear, and user will not be able to share content from system UI to your application.
+ */
+@property (nonatomic, assign, getter=isActive) BOOL active;
+
+/*!
+ @abstract available Indicates whether screen recording is available on this device.
+ @discussion Returns YES if screen recording is supported and allowed on this device.
+ */
+@property (nonatomic, readonly, getter=isAvailable) BOOL available API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract addObserver:
+ @param observer the observer object that adheres to SCContentSharingPickerObserver protocol
+ @discussion Adds an observer object that will receive the results of user interaction with a displayed picker
+*/
+- (void)addObserver:(id<SCContentSharingPickerObserver>)observer;
+
+/*!
+ @abstract removeObserver:
+ @param observer the observer object that adheres to SCContentSharingPickerObserver protocol
+ @discussion Removes an observer object that will receive the results of user interaction with a displayed picker
+*/
+- (void)removeObserver:(id<SCContentSharingPickerObserver>)observer;
+
+/*!
+ @abstract setConfiguration:forStream:
+ @param pickerConfig configuration for the picker
+ @param stream stream for optional picking configuration
+ @discussion Sets optional configuration for the picker for a specific stream. If this is not set, the stream will use the defaultConfiguration instead
+*/
+- (void)setConfiguration:(nullable SCContentSharingPickerConfiguration *)pickerConfig forStream:(SCStream *)stream NS_REFINED_FOR_SWIFT;
+
+/*!
+ @abstract present
+ @discussion show content sharing picker to get content for updating a new stream
+*/
+- (void)present API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0)) API_UNAVAILABLE(tvos);
+
+/*!
+ @abstract presentPickerUsingContentStyle:
+ @param contentStyle the mode in which picking should start
+ @discussion Takes a person straight into picking particular windows or displays
+*/
+- (void)presentPickerUsingContentStyle:(SCShareableContentStyle)contentStyle API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract presentPickerForStream:
+ @param stream the stream to update
+ @discussion show content sharing picker with an existing stream
+*/
+- (void)presentPickerForStream:(SCStream *)stream API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract presentPickerForStream:usingContentStyle:
+ @param stream the stream that the picker will display
+ @param contentStyle the mode in which picking should start
+ @discussion Takes a person straight into picking particular windows or displays
+*/
+- (void)presentPickerForStream:(SCStream *)stream usingContentStyle:(SCShareableContentStyle)contentStyle API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract presentPickerForCurrentApplication
+ @discussion Shows the content sharing picker for capturing the current application only.
+*/
+- (void)presentPickerForCurrentApplication API_AVAILABLE(ios(27.0), visionos(27.0), tvos(27.0)) API_UNAVAILABLE(macos, macCatalyst);
+@end
+
+/*!
+ @abstract SCContentSharingPickerObserver
+ @discussion SCContentSharingPickerObserver the protocol that is used to inform client when the picker did make selection or cancel
+*/
+API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCContentSharingPickerObserver <NSObject>
+/*!
+ @abstract contentSharingPicker:didCancelforStream:
+ @param picker the SCContentSharingPicker object
+ @param stream the optional associated stream for this picker
+ @discussion the observer callback method when the picker has been canceled with no selection.
+*/
+- (void)contentSharingPicker:(SCContentSharingPicker *)picker didCancelForStream:(nullable SCStream *)stream;
+
+/*!
+ @abstract contentSharingPicker:didUpdateWithFilter:forStream:
+ @param picker the SCContentSharingPicker object
+ @param filter the updated filter
+ @param stream the updated stream
+ @discussion the observer callback method when the user has finished updating content for a stream
+*/
+- (void)contentSharingPicker:(SCContentSharingPicker *)picker didUpdateWithFilter:(SCContentFilter *)filter forStream:(nullable SCStream *)stream;
+
+/*!
+ @abstract contentSharingPickerStartDidFailWithError:
+ @param error the error denoted for the failure to start picker
+ @discussion the observer callback method when the picker was asked to start but failed to do so.
+*/
+- (void)contentSharingPickerStartDidFailWithError:(NSError *)error;
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h 2026-05-22 12:45:36
@@ -0,0 +1,41 @@
+//
+// SCError.h
+// ScreenCaptureKit
+//
+// Copyright © 2021 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+extern NSErrorDomain const __nonnull SCStreamErrorDomain;
+
+NS_ASSUME_NONNULL_BEGIN
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+typedef NS_ERROR_ENUM (SCStreamErrorDomain, SCStreamErrorCode) {
+ SCStreamErrorUserDeclined API_AVAILABLE(macos(12.3)) = -3801, // The user chose not to authorize capture
+ SCStreamErrorFailedToStart API_AVAILABLE(macos(12.3)) = -3802, // The stream failed to start
+ SCStreamErrorMissingEntitlements API_AVAILABLE(macos(12.3)) = -3803, // The stream failed due to missing entitlements
+ SCStreamErrorFailedApplicationConnectionInvalid API_AVAILABLE(macos(12.3)) = -3804, // Failed during recording application connection invalid
+ SCStreamErrorFailedApplicationConnectionInterrupted API_AVAILABLE(macos(12.3)) = -3805, // Failed during recording appliation connection interrupted
+ SCStreamErrorFailedNoMatchingApplicationContext API_AVAILABLE(macos(12.3)) = -3806, // Failed during recording context id does not match application
+ SCStreamErrorAttemptToStartStreamState API_AVAILABLE(macos(12.3)) = -3807, // Failed due to attempting to start a stream thats already in a recording state
+ SCStreamErrorAttemptToStopStreamState API_AVAILABLE(macos(12.3)) = -3808, // Failed due to attempting to stop a stream thats already in a recording state
+ SCStreamErrorAttemptToUpdateFilterState API_AVAILABLE(macos(12.3)) = -3809, // Failed due to attempting to update the filter on a stream
+ SCStreamErrorAttemptToConfigState API_AVAILABLE(macos(12.3)) = -3810, // Failed due to attempting to update stream config on a stream
+ SCStreamErrorInternalError API_AVAILABLE(macos(12.3)) = -3811, // Failed to start due to video/audio capture failure
+ SCStreamErrorInvalidParameter API_AVAILABLE(macos(12.3)) = -3812, // Failed due to invalid parameter
+ SCStreamErrorNoWindowList API_AVAILABLE(macos(12.3)) = -3813, // Failed due to no window list
+ SCStreamErrorNoDisplayList API_AVAILABLE(macos(12.3)) = -3814, // Failed due to no display list
+ SCStreamErrorNoCaptureSource API_AVAILABLE(macos(12.3)) = -3815, // Failed due to no display or window list to capture
+ SCStreamErrorRemovingStream API_AVAILABLE(macos(12.3)) = -3816, // Failed to remove stream
+ SCStreamErrorUserStopped API_AVAILABLE(macos(12.3)) = -3817, // The stream was stopped by the user
+ SCStreamErrorFailedToStartAudioCapture API_AVAILABLE(macos(13.0)) = -3818, // The stream failed to start audio
+ SCStreamErrorFailedToStopAudioCapture API_AVAILABLE(macos(13.0)) = -3819, // The stream failed to stop audio
+ SCStreamErrorFailedToStartMicrophoneCapture API_AVAILABLE(macos(15.0)) = -3820, // The stream failed to start microphone
+ SCStreamErrorSystemStoppedStream API_AVAILABLE(macos(15.0)) = -3821, // The stream was stopped by the system
+ SCStreamErrorInsufficientStorage API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0)) = -3822, // The stream was stopped due to insufficient storage for recording
+ SCStreamErrorNotSupported API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0)) = -3823, // The operation is not supported on this platform
+ SCStreamErrorMissingBackgroundMode API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0)) = -3824, // The stream was stopped due to missing background mode
+};
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h 2026-05-22 12:45:37
@@ -0,0 +1,111 @@
+//
+// SCRecordingEditor.h
+// ScreenCaptureKit
+//
+// Copyright © 2025 Apple Inc. All rights reserved.
+//
+
+#import <TargetConditionals.h>
+
+#if TARGET_OS_OSX
+#import <AppKit/AppKit.h>
+#else
+#import <UIKit/UIKit.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @typedef SCRecordingEditorMode
+ @constant SCRecordingEditorModePreview Preview screen displayed when editing a recording.
+ @constant SCRecordingEditorModeShare Share/AirDrop screen displayed when editing a recording.
+ */
+typedef NS_ENUM(NSInteger, SCRecordingEditorMode) {
+ SCRecordingEditorModePreview, // Preview/trim editing UI (default)
+ SCRecordingEditorModeShare // Skip to share UI directly
+} NS_SWIFT_NAME(SCRecordingEditor.Mode)
+ API_AVAILABLE(tvos(27.0)) API_UNAVAILABLE(ios, visionos, macos, macCatalyst);
+
+@class SCRecordingEditor;
+
+API_AVAILABLE(ios(27.0), visionos(27.0), tvos(27.0), macCatalyst(27.0), macos(27.0))
+@protocol SCRecordingEditorDelegate <NSObject>
+@optional
+/*!
+ @abstract recordingEditorDidDismiss:
+ @discussion Called when the recording editor is dismissed.
+ */
+- (void)recordingEditorDidDismiss:(SCRecordingEditor *)editor;
+
+/*!
+ @abstract recordingEditor:didFailWithError:
+ @discussion Called when the recording editor encounters an error.
+ */
+- (void)recordingEditor:(SCRecordingEditor *)editor didFailWithError:(NSError *)error;
+@end
+
+/*!
+ @class SCRecordingEditor
+ @abstract Presents a system-owned preview UI for a completed recording via SCStream.
+ @discussion SCRecordingEditor owns the full presentation lifecycle of the preview UI.
+ Callers provide an optional anchor window (macOS) or scene; if none is provided, the foreground
+ window/scene is discovered automatically.
+ */
+API_AVAILABLE(ios(27.0), visionos(27.0), tvos(27.0), macCatalyst(27.0), macos(27.0))
+@interface SCRecordingEditor : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/*!
+ @method initWithURL:
+ @abstract Initialize an SCRecordingEditor with the file URL of a completed recording.
+ @param url The file URL of the completed recording, from SCRecordingOutput or SCClipBufferingOutput.
+ @result An initialized SCRecordingEditor.
+ */
+- (instancetype)initWithURL:(NSURL *)url NS_DESIGNATED_INITIALIZER;
+
+/*!
+ @abstract delegate The delegate for the recording preview.
+ */
+@property (nonatomic, weak, nullable) id<SCRecordingEditorDelegate> delegate;
+
+#if TARGET_OS_OSX
+
+/*!
+ @method presentFromWindow:completionHandler:
+ @abstract Present the recording editor from the specified window.
+ @param window The window to present from.
+ @param completionHandler Called when presentation completes. error is nil on success.
+ */
+- (void)presentFromWindow:(NSWindow *)window
+ completionHandler:(void (^)(NSError * _Nullable error))completionHandler
+ API_AVAILABLE(macos(27.0));
+
+- (void)presentFromWindow:(NSWindow *)window
+ mode:(SCRecordingEditorMode)mode
+ completionHandler:(void (^)(NSError * _Nullable error))completionHandler
+ NS_UNAVAILABLE;
+
+#else
+
+/*!
+ @method presentFromWindowScene:completionHandler:
+ @abstract Present the recording editor from the specified window scene.
+ @param windowScene The window scene to present from.
+ @param completionHandler Called when presentation completes. error is nil on success.
+ */
+- (void)presentFromWindowScene:(UIWindowScene *)windowScene
+ completionHandler:(void (^)(NSError * _Nullable error))completionHandler
+ API_AVAILABLE(ios(27.0), visionos(27.0), macCatalyst(27.0), tvos(27.0));
+
+- (void)presentFromWindowScene:(UIWindowScene *)windowScene
+ mode:(SCRecordingEditorMode)mode
+ completionHandler:(void (^)(NSError * _Nullable error))completionHandler
+ API_AVAILABLE(tvos(27.0)) API_UNAVAILABLE(macos, ios, visionos);
+
+#endif
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h 2026-05-22 07:08:16
@@ -0,0 +1,117 @@
+//
+// SCRecordingOutput.h
+// ScreenCaptureKit
+//
+// Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#ifndef SCRecordingOutput_h
+#define SCRecordingOutput_h
+
+#import <CoreMedia/CMTime.h>
+#import <AVFoundation/AVVideoSettings.h>
+#import <AVFoundation/AVMediaFormat.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SCRecordingOutput;
+@class SCPreviewViewController;
+
+/*!
+ @abstract SCRecordingOutputConfiguration
+ @discussion SCRecordingOutputConfiguration is an object that encapsulates the configuration for recording.
+*/
+API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCRecordingOutputConfiguration : NSObject
+
+/*!
+ @abstract Specifies output URL to save the recording.
+ */
+@property(nonatomic, copy) NSURL *outputURL;
+
+/*!
+ @abstract Specifies video codec for the recording output, default is AVVideoCodecTypeH264, supported values can be obtained using availableVideoCodecTypes
+ */
+@property(nonatomic, copy) AVVideoCodecType videoCodecType;
+
+/*!
+ @abstract Specifies file type for the recording output, default is AVFileTypeMPEG4, supported values can be obtained using availableOutputFileTypes
+ */
+@property(nonatomic, copy) AVFileType outputFileType;
+
+/*!
+ @abstract Returns an array of supported video codec formats that can be specified in SCRecordingOutputConfiguration for videoCodecType
+ */
+@property(nonatomic, readonly) NSArray<AVVideoCodecType> *availableVideoCodecTypes;
+
+/*!
+ @abstract Returns an array of supported file types that can be specified in SCRecordingOutputConfiguration for outputFileType
+ Provides the file types AVCaptureAudioFileOutput can write.
+ */
+@property(nonatomic, readonly) NSArray<AVFileType> *availableOutputFileTypes;
+
+/*!
+ @abstract if the stream being recorded captures both system audio and microphone audio, setting mixesAudioWithMicrophone to NO will keep two audio tracks for each audio stream in the recording output. Default value is YES, which will mix system and microphone audio, result one audio track in recording output.
+ */
+@property (nonatomic, assign) BOOL mixesAudioWithMicrophone API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0));
+
+@end
+
+/*!
+ @protocol SCRecordingOutputDelegate
+ @abstract
+ Defines an interface for delegates of SCRecordingOutput to respond to events that occur in the process of recording to file.
+ */
+API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCRecordingOutputDelegate <NSObject>
+
+@optional
+/*!
+ @abstract recordingOutputDidStartRecording:
+ @param recordingOutput the SCRecordingOutput object
+ @discussion notifies the delegate that recording has succesfully started.
+*/
+- (void)recordingOutputDidStartRecording:(SCRecordingOutput *)recordingOutput;
+
+/*!
+ @abstract recordingOutput:didFailWithError:
+ @param recordingOutput the SCRecordingOutput object
+ @param error error describing why the recording failed.
+ @discussion notifies the delegate that recording has failed with error associated.
+*/
+- (void)recordingOutput:(SCRecordingOutput *)recordingOutput didFailWithError:(NSError *)error;
+
+/*!
+ @abstract recordingOutputDidFinishRecording:
+ @discussion notifies the delegate that recording has finished successfully.
+*/
+- (void)recordingOutputDidFinishRecording:(SCRecordingOutput *)recordingOutput;
+
+@end
+
+API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCRecordingOutput : NSObject
+/*!
+ @abstract Indicates current duration of recording to the output file.
+ */
+@property(nonatomic, readonly) CMTime recordedDuration;
+
+/*!
+ @abstract Indicates current size, in bytes, of the data recorded to the output file.
+ */
+@property(nonatomic, readonly) NSInteger recordedFileSize;
+
+/*!
+ @method initWithConfiguration:delegate:
+ @abstract initialize SCRecordingOutput object with SCRecordingOutputConfiguration and SCRecordingOutputDelegate
+ @param recordingOutputConfiguration the requested recording configuration to be applied to the SCRecordingOutput
+ @parame delegate object conforming SCRecordingOutputDelegate protocol. Clients must specify a delegate so that they can be notified about recording event.
+ @discussion Client can create a SCRecordingOutput with this initializer and add to SCStream to record all captured media into one recording file given output url specified in recordingOutputConfig. The recording will be using H264 and file format is MPEG-4.
+*/
+- (instancetype)initWithConfiguration:(SCRecordingOutputConfiguration *)recordingOutputConfiguration delegate:(id<SCRecordingOutputDelegate>)delegate;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* SCRecordingOutput_h */
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h 2026-05-22 07:08:15
@@ -0,0 +1,182 @@
+//
+// SCScreenshotManager.h
+// ScreenCaptureKit
+//
+// Copyright © 2023 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <ScreenCaptureKit/ScreenCaptureKit.h>
+#import <UniformTypeIdentifiers/UTType.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @typedef SCScreenshotDisplayIntent
+ @abstract Client can use SCScreenshotDisplayIntent to specifiy rendering of the screenshot
+ @constant SCScreenshotDisplayIntentCanonical using this will specify the screenshot to be rendered on the canonical display
+ @constant SCScreenshotDisplayIntentLocal using this wil specifiy the screenshot to be rendered on the local display
+*/
+API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos);
+typedef NS_ENUM(NSInteger, SCScreenshotDisplayIntent) {
+ SCScreenshotDisplayIntentCanonical,
+ SCScreenshotDisplayIntentLocal
+} NS_SWIFT_NAME(SCScreenshotConfiguration.DisplayIntent);
+
+/*!
+ @typedef SCScreenshotDynamicRange
+ @abstract Client can use SCScreenshotDynamicRange to specifiy the images to return to them
+ @constant SCScreenshotDynamicRangeSDR using this will return an SDR CGimage to the client
+ @constant SCScreenshotDynamicRangeHDR using this will return an HDR CGimage to the client
+ @constant SCScreenshotDynamicRangeSDRAndHDR using this will return both SDR and HDR CGimage versions to the client
+*/
+API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos);
+ typedef NS_ENUM(NSInteger, SCScreenshotDynamicRange) {
+ SCScreenshotDynamicRangeSDR NS_SWIFT_NAME(sdr),
+ SCScreenshotDynamicRangeHDR NS_SWIFT_NAME(hdr),
+ SCScreenshotDynamicRangeSDRAndHDR NS_SWIFT_NAME(bothSDRAndHDR)
+ } NS_SWIFT_NAME(SCScreenshotConfiguration.DynamicRange);
+
+/*!
+ @abstract SCScreenshotConfiguration
+ @discussion SCScreenshotConfiguration is an object that the SCScreenshot properties such as output width, height, and others.
+*/
+NS_SWIFT_SENDABLE
+API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCScreenshotConfiguration : NSObject
+/*!
+ @abstract SCScreenshotProperty for output width as measured in pixels. Default is the width of the content being captured.
+ */
+@property(nonatomic, assign) NSInteger width;
+
+/*!
+ @abstract SCScreenshotProperty for output height as measured in pixels. Default is the height of the content being captured.
+ */
+@property(nonatomic, assign) NSInteger height;
+
+/*!
+ @abstract SCScreenshotProperty that specifies whether the cursor should appear in the screenshot. By default the cursor is visible.
+ */
+@property(nonatomic, assign) BOOL showsCursor;
+
+/*!
+ @abstract SCScreenshotProperty that specifies that the screenshot only samples a subset of the frame input. If not set, then the entire screenshot will be captured. The rectangle is specified in points in the display’s logical coordinate system.
+ */
+@property(nonatomic, assign) CGRect sourceRect;
+
+/*!
+ @abstract SCScreenshotProperty that specifies that the screenshot outputs into a subset of the output CGimage.If not set then the output surface is used. The rectangle is specified in pixels in the display's coordinate system.
+ */
+@property(nonatomic, assign) CGRect destinationRect;
+
+/*!
+ @abstract SCScreenshotProperty to ignore framing on windows (will ignore shadows).
+ */
+@property(nonatomic, assign) BOOL ignoreShadows;
+
+/*!
+ @abstract SCScreenshotProperty to ignore framing on windows in the display bounded sharing case (will ignore shadows).
+ */
+@property(nonatomic, assign) BOOL ignoreClipping;
+
+/*!
+ @abstract SCScreenshotProperty to show the child windows of the applications and windows being captured. Child windows are included by default.
+ */
+@property(nonatomic, assign) BOOL includeChildWindows;
+
+/*!
+ @abstract Specifies the render type of the screenshot.
+ */
+@property(nonatomic, assign) SCScreenshotDisplayIntent displayIntent;
+
+/*!
+ @abstract Specifies the CGImage to return to the client.
+ */
+@property(nonatomic, assign) SCScreenshotDynamicRange dynamicRange;
+
+/*!
+ @abstract Specifies the screenshot file format.
+ */
+@property(nonatomic, assign) UTType *contentType;
+
+/*!
+ @abstract Specifies output URL to save the screenshot. If the imageOutputURL is nil, then the file will not be saved.
+ */
+@property(nullable, nonatomic, strong) NSURL *fileURL;
+
+/*!
+ @abstract an array of UTTypes that corresponds to the file formats that are supported. ScreenCaptureKit can save the CGImage into heic, jpeg, and png
+ */
+@property(class, readonly) NSArray<UTType *> *supportedContentTypes;
+@end
+
+/*!
+ @abstract SCScreenshotOutput
+ @discussion SCScreenshotOutput is an object that contains the CGImages requested by the client.
+*/
+API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCScreenshotOutput : NSObject
+/*!
+ @abstract SCScreenshotOutput property that denotes the SDR CGimage. The output CGImage uses the same color space as the display
+ */
+@property (nonatomic, strong, nullable) CGImageRef sdrImage __attribute__((NSObject));
+/*!
+ @abstract SCScreenshotOutput property that denotes the HDR CGimage. The output CGImage uses the extended sRGB color space.
+ */
+@property (nonatomic, strong, nullable) CGImageRef hdrImage __attribute__((NSObject));
+
+/*!
+ @abstract SCScreenshotOutput property to specify the location where the image was saved. If a fileURL in the screenshot configuration was not specified, then the fileURL will be nil
+ */
+@property (nullable, nonatomic, assign) NSURL *fileURL;
+@end
+
+API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCScreenshotManager : NSObject
+- (instancetype)init NS_UNAVAILABLE;
+/*!
+ @abstract captureSampleBufferWithFilter:configuration:completionHandler:
+ @param contentFilter is the filter containing the content to take a screenshot of
+ @param config is the stream configuration containing information on how to format the screenshot
+ @param completionHandler is the handler that will deliver the screenshot to the user
+ @discussion this method takes a screenshot using the filter and configuration passed in and returns it as a CMSampleBuffer
+*/
++ (void)captureSampleBufferWithFilter:(SCContentFilter *)contentFilter configuration:(SCStreamConfiguration *)config completionHandler:(nullable void (^)(CMSampleBufferRef _Nullable sampleBuffer, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(captureSampleBuffer(contentFilter:configuration:completionHandler:));
+
+/*!
+ @abstract captureImageWithFilter:configuration:completionHandler:
+ @param contentFilter is the filter containing the content to take a screenshot of
+ @param config is the stream configuration containing information on how to format the screenshot
+ @param completionHandler is the handler that will deliver the screenshot to the user
+ @discussion this method takes a screenshot using the filter and configuration passed in and returns it as a CGImage in BGRA format if captureDynamicRange is SCCaptureDynamicRangeSDR, in RGhA format if captureDynamicRange is SCCaptureDynamicRangeHDRLocalDisplay/SCCaptureDynamicRangeHDRCanonicalDisplay
+*/
++ (void)captureImageWithFilter:(SCContentFilter *)contentFilter configuration:(SCStreamConfiguration *)config completionHandler:(nullable void (^)(CGImageRef _Nullable sampleBuffer, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(captureImage(contentFilter:configuration:completionHandler:));
+
+/*!
+ @abstract captureImageInRect:completionHandler:
+ @param rect the rect for the region in points on the screen space for the screen shot, this is display agnostic and supports multiple displays
+ @param completionHandler is the handler that will deliver the screenshot to the client
+ @discussion this method returns an image containing the contents of the rectangle in points, specified in display space
+*/
++ (void)captureImageInRect:(CGRect)rect completionHandler:(nullable void (^)(CGImageRef _Nullable image, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(captureImage(in:completionHandler:)) API_AVAILABLE(macos(15.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract captureScreenshotWithFilter:configuration:completionHandler:
+ @param contentFilter is the filter containing the content to take a screenshot of
+ @param config is the screenshot configuration containing information on how to format the screenshot
+ @param completionHandler is the handler that will deliver the SCScreenshotOutput object to the client
+ @discussion this method returns an SCScreenshotOutput object containing CGImages of the screenshot requested by the client
+*/
++ (void)captureScreenshotWithFilter:(SCContentFilter *)contentFilter configuration:(SCScreenshotConfiguration *)config completionHandler:(nullable void (^)(SCScreenshotOutput *_Nullable output, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(captureScreenshot(contentFilter:configuration:completionHandler:)) API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract captureScreenshotWithRect:configuration:completionHandler:
+ @param rect the rect for the region in points on the screen space for the screen shot, this is display agnostic and supports multiple displays
+ @param config is the screenshot configuration containing information on how to format the screenshot
+ @param completionHandler is the handler that will deliver the SCScreenshotOutput object to the client
+ @discussion this method returns an SCScreenshotOutput object containing CGImages of the screenshot requested by the client
+*/
++ (void)captureScreenshotWithRect:(CGRect)rect configuration:(SCScreenshotConfiguration *)config completionHandler:(nullable void (^)(SCScreenshotOutput *_Nullable output, NSError *_Nullable error))completionHandler NS_SWIFT_NAME(captureScreenshot(rect:configuration:completionHandler:)) API_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos);
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h 2026-05-22 12:45:36
@@ -0,0 +1,213 @@
+//
+// SCShareableContent.h
+// SCShareableContent
+//
+// Copyright © 2021 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
+#import <CoreGraphics/CGWindow.h>
+#import <CoreGraphics/CGDirectDisplay.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SCContentFilter;
+
+/*!
+ @typedef SCShareableContentStyle
+ @abstract Defines the type of content being shared
+ @constant SCShareableContentStyleNone content not specified
+ @constant SCShareableContentStyleWindow window bound content stream
+ @constant SCShareableContentStyleDisplay display bound content stream
+ @constant SCShareableContentStyleApplication display bound content stream
+*/
+typedef NS_ENUM(NSInteger, SCShareableContentStyle) {
+ SCShareableContentStyleNone,
+ SCShareableContentStyleWindow API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCShareableContentStyleDisplay API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0)) API_UNAVAILABLE(tvos),
+ SCShareableContentStyleApplication API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+} API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCRunningApplication : NSObject
+/*!
+ @abstract bundleIdentifier the bundleIdentifier for the SCRunningApplication
+ */
+@property (readonly) NSString *bundleIdentifier;
+
+/*!
+ @abstract applicationName the application name for the SCRunningApplication
+ */
+@property (readonly) NSString *applicationName;
+
+/*!
+ @abstract processID the SCRunningApplication
+ */
+@property (readonly) pid_t processID;
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+@end
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCWindow : NSObject
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
+/*!
+ @abstract windowID the CGWindowID for the SCWindow
+ */
+@property (readonly) CGWindowID windowID;
+#endif
+
+/*!
+ @abstract frame the CGRect for the SCWindow
+ */
+@property (readonly) CGRect frame;
+
+/*!
+ @abstract title the window title for the SCWindow
+ */
+@property (readonly, nullable) NSString *title;
+
+/*!
+ @abstract windowLayer the window layer for the SCWindow
+ */
+@property (readonly) NSInteger windowLayer;
+
+/*!
+ @abstract owningApplication is the SCRunningApplication that owns this SCWindow
+ */
+@property (readonly, nullable) SCRunningApplication *owningApplication;
+
+/*!
+ @abstract onScreen the bool property denoting of the SCWindow is on the screen
+ */
+@property (readonly, getter=isOnScreen) BOOL onScreen;
+
+/*!
+ @abstract active the bool property denoting of the SCWindow is active. with Stage Manager, SCWindow can be offScreen and active
+ */
+@property (readonly, getter=isActive) BOOL active API_AVAILABLE(macos(13.1), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+@end
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCDisplay : NSObject
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
+/*!
+ @abstract displayId the CGDirectDisplayID for the SCDisplay
+ */
+@property (readonly) CGDirectDisplayID displayID;
+#endif
+
+/*!
+ @abstract width the width, in points, for the SCDisplay
+ */
+@property (readonly) NSInteger width;
+
+/*!
+ @abstract height the height, in points, for the SCDisplay
+ */
+@property (readonly) NSInteger height;
+
+/*!
+ @abstract frame the CGRect frame for the SCDisplay
+ */
+@property (readonly) CGRect frame;
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+@end
+
+/*!
+ @abstract SCShareableContentInfo
+ @discussion SCShareableContentInformation is an object that has information about the content of the stream
+*/
+API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCShareableContentInfo : NSObject
+/*!
+ @abstract style of stream
+ */
+@property (nonatomic, readonly) SCShareableContentStyle style;
+
+/*!
+ @abstract Pixel to points scaling factor
+ */
+@property (nonatomic, readonly) float pointPixelScale;
+
+/*!
+ @abstract Size and location of content in points
+ */
+@property (nonatomic, readonly) CGRect contentRect;
+
+@end
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
+@interface SCShareableContent : NSObject
+/*!
+@abstract getShareableContentWithCompletionHandler:completionHandler
+@param completionHandler the call back that will hand you back a SCShareableContent object
+@discussion this method will create a SCShareableContent object that is called on the supplied queue. The SCShareableContent will contain the windows, displays and applications that are available to capture
+*/
++ (void)getShareableContentWithCompletionHandler:(void(^)(SCShareableContent * _Nullable shareableContent, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC(1) NS_SWIFT_ASYNC_NAME(getter:current());
+
+/*!
+@abstract getCurrentProcessShareableContentWithCompletionHandler:completionHandler
+@param completionHandler the call back that will hand you back a SCShareableContent object
+@discussion this method will create a SCShareableContent object that is called on the supplied queue. The SCShareableContent will contain redacted information about windows, displays and applications that are available to capture by current process without user consent via TCC
+*/
++ (void)getCurrentProcessShareableContentWithCompletionHandler:(void(^)(SCShareableContent * _Nullable shareableContent, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC(1) NS_SWIFT_ASYNC_NAME(getter:currentProcess()) API_AVAILABLE(macos(14.4), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+@abstract getShareableContentExcludingDesktopWindows:onScreenWindowsOnly:completionHandler
+@param excludeDesktopWindows a BOOL indicating if we should exclude desktop windows
+@param onScreenWindowsOnly filter only windows that are on screen
+@param completionHandler the call back that will hand you back a SCShareableContent object
+@discussion this method will create a SCShareableContent object that is called on the supplied queue. The SCShareableContent will contain the windows, displays and applications that are available to capture
+*/
++ (void)getShareableContentExcludingDesktopWindows:(BOOL)excludeDesktopWindows onScreenWindowsOnly:(BOOL)onScreenWindowsOnly completionHandler:(void(^)(SCShareableContent * _Nullable shareableContent, NSError * _Nullable error))completionHandler;
+
+/*!
+@abstract getShareableContentExcludingDesktopWindows:onScreenWindowsOnlyBelowWindow:completionHandler
+@param excludeDesktopWindows a BOOL indicating if we should exclude desktop windows
+@param window filter only windows below this SCWindow
+@param completionHandler the call back that will hand you back a SCShareableContent object
+@discussion this method will create a SCShareableContent object that is called on the supplied queue. The SCShareableContent will contain the windows, displays and applications that are available to capture
+*/
++ (void)getShareableContentExcludingDesktopWindows:(BOOL)excludeDesktopWindows onScreenWindowsOnlyBelowWindow:(SCWindow *)window completionHandler:(void(^)(SCShareableContent * _Nullable shareableContent, NSError * _Nullable error))completionHandler;
+
+/*!
+@abstract getShareableContentExcludingDesktopWindows:onScreenWindowsOnlyAboveWindow:completionHandler
+@param excludeDesktopWindows a BOOL indicating if we should exclude desktop windows
+@param window filter only windows above this SCWindow
+@param completionHandler the call back that will hand you back a SCShareableContent object
+@discussion this method will create a SCShareableContent object that is called on the supplied queue. The SCShareableContent will contain the windows, displays and applications that are available to capture
+*/
++ (void)getShareableContentExcludingDesktopWindows:(BOOL)excludeDesktopWindows onScreenWindowsOnlyAboveWindow:(SCWindow *)window completionHandler:(void(^)(SCShareableContent * _Nullable shareableContent, NSError * _Nullable error))completionHandler;
+
+/*!
+@abstract infoForFilter:
+@param filter content filter to translate to content details
+@discussion this method will create a SCShareableContentInformation object given a filter
+*/
++ (SCShareableContentInfo *)infoForFilter:(nonnull SCContentFilter *)filter API_AVAILABLE(macos(14.0), macCatalyst(18.2));
+
+/*!
+ @abstract windows SCShareableContent property that contains all the sharable SCWindows
+ */
+@property (readonly) NSArray<SCWindow *> *windows;
+
+/*!
+ @abstract displays SCShareableContent property that contains all the sharable SCDisplays
+ */
+@property (readonly) NSArray<SCDisplay *> *displays;
+
+/*!
+ @abstract applications SCShareableContent property that contains all the sharable SCRunningApplications
+ */
+@property (readonly) NSArray<SCRunningApplication *> *applications;
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h 2026-05-28 02:08:30
@@ -0,0 +1,669 @@
+//
+// SCStream.h
+// ScreenCaptureKit
+//
+// Copyright © 2021 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#if TARGET_OS_OSX
+#import <AppKit/AppKit.h>
+#endif
+#import <ScreenCaptureKit/SCShareableContent.h>
+#import <CoreMedia/CMSampleBuffer.h>
+#import <CoreMedia/CMSync.h>
+#import <ScreenCaptureKit/SCRecordingOutput.h>
+#import <ScreenCaptureKit/SCClipBufferingOutput.h>
+#import <ScreenCaptureKit/SCVideoEffectOutput.h>
+
+@class SCVideoEffectOutput;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @typedef SCStreamOutputType
+ @constant SCStreamOutputTypeScreen screen sample output type.
+ @discussion
+ SCStreamOutputTypeScreen is a screen capture sample buffer. This sample buffer that is wrapping a CMSampleBuffer that is backed by an IOSurface. The width and height of the sample buffer is what is defined in the SCStreamConfiguration for width and height. The sample buffer will be called back on the provided queue when adding a SCStreamOutput. The pixel format of the sample buffer will be what is defined in the SCStreamConfiguration. In the case of multiple window capture, the width and height will be that of the display passed in for the filter. The background color of multiwindow sample buffers will be default black and can be set through the SCStreamConfiguration.
+ @constant SCStreamOutputTypeAudio audio sample output type.
+ @constant SCStreamOutputTypeMicrophone microphone audio sample output type.
+ @discussion
+ SCStreamOutputTypeAudio is an audio capture sample buffer. This sample buffer that is wrapping an audio buffer list. The format of the audio buffer is based on sampleRate and channelCount set in SCStreamConfiguration.
+ SCStreamOutputTypeMicrophone is a microphone audio capture sample buffer. This sample buffer that is wrapping an audio buffer list. The format of the audio buffer is based on the selected microphone capture device's native format.
+*/
+typedef NS_ENUM(NSInteger, SCStreamOutputType) {
+ SCStreamOutputTypeScreen,
+ SCStreamOutputTypeAudio API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0)),
+ SCStreamOutputTypeMicrophone API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0)) API_UNAVAILABLE(tvos)
+} API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @typedef SCFrameStatus
+ @abstract SCFrameStatus denotes the status of frame sample buffer.
+ @constant SCFrameStatusComplete new frame was generated.
+ @constant SCFrameStatusIdle new frame was not generated because the display did not change.
+ @constant SCFrameStatusBlank new frame was not generated because the display has gone blank.
+ @constant SCFrameStatusSuspended new frame was not generated because updates haves been suspended
+ @constant SCFrameStatusStarted new frame that is indicated as the first frame sent after the stream has started.
+ @constant SCFrameStatusStopped the stream was stopped.
+*/
+typedef NS_ENUM(NSInteger, SCFrameStatus) {
+ SCFrameStatusComplete,
+ SCFrameStatusIdle,
+ SCFrameStatusBlank,
+ SCFrameStatusSuspended,
+ SCFrameStatusStarted,
+ SCFrameStatusStopped
+} API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @typedef SCPresenterOverlayAlertSetting
+ @abstract SCPresenterOverlayAlertSetting denotes the setting that can be set to determine when to show the presenter overlay alert for any stream
+ @constant SCPresenterOverlayAlertSettingSystem allow the system to determine when to show the presenter overlay privacy alert.
+ @constant SCPresenterOverlayAlertSettingNever never show the presenter overlay privacy alert.
+ @constant SCPresenterOverlayAlertAlways always show the presenter overlay privacy alert.
+*/
+
+typedef NS_ENUM(NSInteger, SCPresenterOverlayAlertSetting) {
+ SCPresenterOverlayAlertSettingSystem,
+ SCPresenterOverlayAlertSettingNever,
+ SCPresenterOverlayAlertSettingAlways
+} API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @typedef SCStreamType
+ @abstract SCStreamTypeWindow window stream
+ @constant SCStreamTypeDisplay display stream
+*/
+typedef NS_ENUM(NSInteger, SCStreamType) {
+ SCStreamTypeWindow,
+ SCStreamTypeDisplay
+} API_DEPRECATED("Use SCShareableContentStyle instead", macos(14.0, 15.0), macCatalyst(18.2, 18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+typedef NS_ENUM(NSInteger, SCCaptureResolutionType) {
+ SCCaptureResolutionAutomatic,
+ SCCaptureResolutionBest,
+ SCCaptureResolutionNominal
+} API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @typedef SCCaptureDynamicRange
+ @abstract SCCaptureDynamicRange client can specify whether the captured screen output will be SDR or HDR. When SCCaptureDynamicRangeHDR is set, the output screen capture buffer pixel format and color space will be updated in order to support HDR.
+ @constant SCCaptureDynamicRangeSDR by default, screen capture output will be SDR.
+ @constant SCCaptureDynamicRangeHDRLocalDisplay by default, screen capture output will be HDR, optimized for rendering on the local captured display
+ @constant SCCaptureDynamicRangeHDRCanonicalDisplay by default, screen capture output will be HDR, optimized for rendering on any HDR display
+*/
+typedef NS_ENUM(NSInteger, SCCaptureDynamicRange) {
+ SCCaptureDynamicRangeSDR,
+ SCCaptureDynamicRangeHDRLocalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCCaptureDynamicRangeHDRCanonicalDisplay
+} API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
+
+/*!
+ @abstract SCContentFilter
+ @discussion SCContentFilter is a object that determines the exact content to be captured in the SCStream. It can be filtered through displays, windows, excluded windows or applications.
+*/
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCContentFilter : NSObject
+/*!
+ @abstract streamType type of stream
+*/
+@property(nonatomic, readonly) SCStreamType streamType API_DEPRECATED("Use style instead", macos(14.0, 14.2), macCatalyst(18.2, 18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract style of stream
+ */
+@property (nonatomic, readonly) SCShareableContentStyle style API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+/*!
+ @abstract Pixel to points scaling factor
+ */
+@property (nonatomic, readonly) float pointPixelScale API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract Size and location of content in points
+ */
+@property (nonatomic, readonly) CGRect contentRect API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract To include menu bar as part of the capture. This property has no effect for the desktop independent window filter. For content filters created with initWithDisplay:excluding, the default value is YES. Display excluding content filters contains the desktop and dock. For content filters created with initWithDisplay:including, the default value is NO. Display including content filters do not contain the desktop and dock
+ */
+@property(nonatomic, assign) BOOL includeMenuBar API_AVAILABLE(macos(14.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCDisplays that are included in the content filter
+ */
+@property(nonnull, nonatomic, readonly) NSArray <SCDisplay *> *includedDisplays API_AVAILABLE(macos(15.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract Applications that are included in the content filter
+ */
+@property (nonnull, nonatomic, readonly) NSArray <SCRunningApplication *> *includedApplications API_AVAILABLE(macos(15.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract Windows that are included in the content filter
+ */
+@property (nonnull, nonatomic, readonly) NSArray <SCWindow *> *includedWindows API_AVAILABLE(macos(15.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract initWithDesktopIndependentWindow:
+ @param window the independent SCWindow you wish to capture
+ @discussion this method will create a SCContentFilter that captures just the independent window passed in.
+*/
+- (instancetype)initWithDesktopIndependentWindow:(SCWindow *)window API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract initWithDisplay:excludingWindows
+ @param display the SCDisplay you wish to capture
+ @param excluded the SCWindow(s) you wish to exclude from the passed in SCDisplay
+ @discussion This method will create a SCContentFilter that captures the SCDisplay, excluding the passed in excluded SCWindow(s). The desktop background and dock will be included with this content filter.
+*/
+- (instancetype)initWithDisplay:(SCDisplay *)display excludingWindows:(NSArray<SCWindow *>*)excluded API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract initWithDisplay:includingWindows
+ @param display the SCDisplay you wish to capture
+ @param includedWindows a set of SCWindows you wish to capture
+ @discussion This method will create a SCContentFilter that captures a group of SCWindows. The desktop background and dock will be excluded with this content filter.
+*/
+- (instancetype)initWithDisplay:(SCDisplay *)display includingWindows:(NSArray<SCWindow *>*)includedWindows API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract initWithDisplay:includingApplications:exceptingWindows
+ @param display the SCDisplay you wish to capture
+ @param applications the NSSet of SCRunningApplications that you wish to capture
+ @param exceptingWindows the NSSet of SCWindows that you wish to be an exception to the filter
+ @discussion This method creates a SCContentFilter that captures all windows owned by the passed in SCRunningApplications. Any windows that are an exception to the filter will not be shown if their owning application is in the provided list and will be shown otherwise. The desktop background and dock will be excluded with this content filter.
+*/
+- (instancetype)initWithDisplay:(SCDisplay *)display includingApplications:(NSArray<SCRunningApplication *>*)applications exceptingWindows:(NSArray<SCWindow *>*)exceptingWindows API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract initWithDisplay:excludingApplications:exceptingWindows
+ @param display the SCDisplay you wish to capture
+ @param applications the NSSet of SCRunningApplications that you do not wish to capture
+ @param exceptingWindows the NSSet of SCWindows that you wish to be an exception to the filter
+ @discussion This method creates a SCContentFilter that captures all windows not owned by the passed in SCRunningApplications. Any windows that are an exception to the filter will be shown if their owning application is in the provided list and will not be shown otherwise. The desktop background and dock will be included with this content filter.
+*/
+- (instancetype)initWithDisplay:(SCDisplay *)display excludingApplications:(NSArray<SCRunningApplication *>*)applications exceptingWindows:(NSArray<SCWindow *>*)exceptingWindows API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract Indicates whether the microphone is enabled via the picker.
+ @discussion Readonly - microphone enable state determined by user via system picker when showsMicrophoneControl is enabled in SCContentSharingPickerConfiguration.
+*/
+@property (nonatomic, readonly, getter=isMicrophoneEnabled) BOOL microphoneEnabled API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0)) API_UNAVAILABLE(tvos);
+
+/*!
+ @abstract Indicates whether the camera is enabled via the picker.
+ @discussion Readonly - camera enable state determined by user via system picker when showsCameraControl is enabled in SCContentSharingPickerConfiguration.
+*/
+@property (nonatomic, readonly, getter=isCameraEnabled) BOOL cameraEnabled API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0)) API_UNAVAILABLE(tvos, visionos);
+
+@end
+
+/*!
+ @abstract SCStreamConfiguration
+ @discussion SCStreamConfiguration is an object that encapsulates the SCStream properties such as output width, height, pixelformat and others.
+*/
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCStreamConfiguration : NSObject
+
+/*!
+ @typedef SCStreamConfigurationPreset
+ @abstract Client can use SCStreamConfigurationPreset to create SCStreamConfiguration with suggested values of properties for various use cases
+ @constant SCStreamConfigurationPresetCaptureHDRLocalDisplay using this preset will help client set suggested values for captureDynamicRange, pixelFormat, ColorSpace, colorMatrix in order to get HDR capture output with SCStream, optimized for rendering on the local captured display.
+ @constant SCStreamConfigurationPresetCaptureHDRCanonicalDisplay using this preset will help client set suggested values for captureDynamicRange, pixelFormat, ColorSpace, colorMatrix in order to get HDR capture output with SCStream, optimized for rendering on canonical HDR display
+ @constant SCStreamConfigurationPresetCaptureHDRScreenshotLocalDisplay using this preset will help client set suggested values for captureDynamicRange, pixelFormat, ColorSpace in order to get HDR screenshot with SCScreenshotManager, optimized for rendering on the local captured display.
+ @constant SCStreamConfigurationPresetCaptureHDRScreenshotCanonicalDisplay using this preset will help client set suggested values for captureDynamicRange, pixelFormat, ColorSpace in order to get HDR screenshot with SCScreenshotManager, optimized for rendering on canonical HDR display
+ @constant SCStreamConfigurationPresetCaptureHDRRecordingPreservedSDRHDR10 using this preset will help client set suggested values for captureDynamicRange, pixelFormat, and colorSpace intended for a stream recording in HDR10, optimized for rendering on the canonical HDR display. This preset will also add HDR10 metadata to the video recording that is designed to preserve the SDR range during video playback.
+
+*/
+typedef NS_ENUM(NSInteger, SCStreamConfigurationPreset) {
+ SCStreamConfigurationPresetCaptureHDRStreamLocalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCStreamConfigurationPresetCaptureHDRStreamCanonicalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCStreamConfigurationPresetCaptureHDRScreenshotLocalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCStreamConfigurationPresetCaptureHDRScreenshotCanonicalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
+ SCStreamConfigurationPresetCaptureHDRRecordingPreservedSDRHDR10 API_AVAILABLE(macos(26.0), macCatalyst(26.0), ios(27.0)) API_UNAVAILABLE(visionos, tvos)
+} NS_SWIFT_NAME(SCStreamConfiguration.Preset) API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty for output width as measured in pixels. On macOS default is set to 1920. In iOS/tvOS platforms, default is the native resolution width of the captured content. On supported embedded platforms, if either width or height is greater than native resolution, resulting frame will be capped at native resolution.
+ */
+@property(nonatomic, assign) size_t width API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), tvos(27.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @abstract SCStreamProperty for output height as measured in pixels. on macOS default is set to 1080. In iOS/tvOS platforms, default is the native resolution width of the captured content. On supported embedded platforms, if either width or height is greater than native resolution, resulting frame will be capped at native resolution.
+ */
+@property(nonatomic, assign) size_t height API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), tvos(27.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @abstract SCStreamProperty that specifies the desired minimum time in seconds between frame updates, allowing you to throttle the rate at which updates are received. The default value is 1/60, meaning that updates are coming in at or up to 60fps. Set this to kCMTimeZero to capture at display's native refresh rate.
+ */
+@property(nonatomic, assign) CMTime minimumFrameInterval API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(visionos, ios, tvos);
+
+/*!
+ @abstract SCStreamProperty for output pixel format.
+ Supported pixel formats are:
+ 'BGRA': Packed Little Endian ARGB8888 (macOS, iOS)
+ 'l10r': Packed Little Endian ARGB2101010 (macOS)
+ '420v': 2-plane "video" range YCbCr 4:2:0 (macOS, iOS)
+ '420f': 2-plane "full" range YCbCr 4:2:0 (macOS, iOS)
+ 'xf44': 2 plane "full" range YCbCr10 4:4:4 (macOS)
+ 'RGhA': 64 bit RGBA IEEE half-precision float, 16-bit little-endian (macOS)
+ 'x420': 2 plane "video" range YCbCr10 4:2:0 (macOS, iOS)
+ See https://developer.apple.com/documentation/coregraphics/1455170-cgdisplaystreamcreate
+ */
+@property(nonatomic, assign) OSType pixelFormat API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(visionos, ios, tvos);
+
+/*!
+ @abstract SCStreamProperty for output to be always scaled to fit into the provided width and height. For use for independent window capture. When true, the output scales up and down. When false, the output only scales down.
+ */
+@property(nonatomic, assign) BOOL scalesToFit API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies whether the stream preserves the aspect ratio of the source pixel data. By default the aspect ratio is preserved.
+ */
+@property(nonatomic, assign) BOOL preservesAspectRatio API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty the name of the stream
+ */
+@property(nonatomic, strong, nullable) NSString *streamName API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies whether the cursor should appear in the stream. By default the cursor is visible.
+ */
+@property(nonatomic, assign) BOOL showsCursor API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies whether to draw a circle around the cursor click, default is NO. This property will not be affected by showsCursor. This property currently applies when pixelFormat is set to BGRA.
+ */
+@property (nonatomic, assign) BOOL showMouseClicks API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty for background color. By default the background color is clear.
+ */
+@property(nonatomic, assign) CGColorRef backgroundColor API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies that the stream only samples a subset of the frame input. For display streams, if not set, then the entire display is streamed. For independent window streams, if not set, then the entire window is streamed. The rectangle is specified in points in the display’s logical coordinate system.
+ */
+@property(nonatomic, assign) CGRect sourceRect API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies that the stream outputs the frame data into a subset of the output IOSurface object. For both display streams and independent window streams, if not set, then the entire output surface is used. The rectangle is specified in pixels in the display's coordinate system.
+ */
+@property(nonatomic, assign) CGRect destinationRect API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies the number of frames to keep in the queue. If not set the default value is 8 frames. Specifying more frames uses more memory, but may allow you to process frame data without stalling the display stream and should not exceed 8 frames.
+ */
+@property(nonatomic, assign) NSInteger queueDepth API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies the YCbCr matrix applied to the output surface. The value must be one of the strings specified in https://developer.apple.com/documentation/coregraphics/quartz_display_services/display_stream_ycbcr_to_rgb_conversion_matrix_options. Should only be used if your pixel format is 420v or 420f.
+ */
+@property(nonatomic, assign) CFStringRef colorMatrix API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies the color space of the output buffer. If not set the output buffer uses the same color space as the display. The value must be one of the strings specified in
+ https://developer.apple.com/documentation/coregraphics/cgcolorspace/color_space_names.
+ */
+@property(nonatomic, assign) CFStringRef colorSpaceName API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies whether the audio will be captured. By default audio is not captured.
+ */
+@property(nonatomic, assign) BOOL capturesAudio API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract SCStreamProperty to specify the sample rate for audio. Default is set to 48000.
+ */
+@property(nonatomic, assign) NSInteger sampleRate API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract SCStreamProperty to specify channel count. Default is set to two.
+ */
+@property(nonatomic, assign) NSInteger channelCount API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract SCAudioProperty whether to exclude audio from current process. Default is set to NO.
+ */
+@property(nonatomic, assign) BOOL excludesCurrentProcessAudio API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract SCStreamProperty to ignore framing on windows in the display sharing case (will ignore shadows).
+ */
+@property(nonatomic, assign) BOOL ignoreShadowsDisplay API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to ignore framing on windows in the single window sharing case (will ignore shadows).
+ */
+@property(nonatomic, assign) BOOL ignoreShadowsSingleWindow API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract captureResolution Choose between automatic, best, and nominal.
+ */
+@property(nonatomic, assign) SCCaptureResolutionType captureResolution API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to capture only the shadows of windows.
+ */
+@property(nonatomic, assign) BOOL capturesShadowsOnly API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to ensure partially transparent areas on windows are backed by a solid white color so that the resulting image is fully opaque.
+ */
+@property(nonatomic, assign) BOOL shouldBeOpaque API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to ignore framing on windows in the display sharing case (will ignore shadows).
+ */
+@property(nonatomic, assign) BOOL ignoreGlobalClipDisplay API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to ignore global clipping when on single window share. When set to true, single window captures that are partially off the screen will not be clipped. (will ignore window placement in display context).
+ */
+@property(nonatomic, assign) BOOL ignoreGlobalClipSingleWindow API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that informs the system if a privacy alert should be shown when using presenter overlay for a stream. Defaults to SCPresenterOverlayAlertSettingSystem;
+ */
+@property(nonatomic, assign) SCPresenterOverlayAlertSetting presenterOverlayPrivacyAlertSetting API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty to show the child windows in display bound windows and applications sharing. Child windows are included by default.
+ */
+@property(nonatomic, assign) BOOL includeChildWindows API_AVAILABLE(macos(14.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies whether the microphone audio will be captured. By default microphone is not captured. on iOS and visionos, client can configure showsMicrophoneControl in SCContentSharingPickerConfiguration for user to choose enable microphone capture or not
+ */
+@property(nonatomic, assign) BOOL captureMicrophone API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty that specifies which microphone device to capture. This deviceID is the uniqueID from AVCaptureDevice for the microphone. System Default Microphone will be used if not specified by client. For Mac Catalyst apps, the System Default Microphone will be captured.
+ */
+@property(nonatomic, strong, nullable) NSString *microphoneCaptureDeviceID API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(macCatalyst, ios, visionos, tvos);
+
+/*!
+ @abstract SCStreamProperty client will choose captureDynamicRange between SCCaptureDynamicRangeSDR, SCCaptureDynamicRangeHDRLocalDisplay, SCCaptureDynamicRangeHDRCanonicalDisplay. By default, the stream is capturing with SCCaptureDynamicRangeSDR. HDR capture is only supported with Apple Silicon Mac, setting this property on Intel Mac will have no effect. HDR recording is not support yet, adding a recording output to a stream with SCCaptureDynamicRangeHDR set will fail.
+ */
+@property(nonatomic, assign) SCCaptureDynamicRange captureDynamicRange API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
+
+/*!
+ @method streamConfigurationWithPreset:
+ @abstract Returns an instance of SCStreamConfiguration corresponding to the given preset
+ @param preset The enum identifier for the desired preset
+ @discussion The SCStreamConfiguration of the returned object can be used as a guide for creating and configuring an SCStream. If all the suggested properties are respected in creating the SCStream, the resulting capture result will conform to the criteria implied by the preset.
+ */
++ (instancetype)streamConfigurationWithPreset:(SCStreamConfigurationPreset)preset API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
+
+@end
+
+/*!
+ @abstract SCStream
+ @discussion SCStream is the object that takes in an SCContentFilter and sets up a contentstream that gives the calling application back the screen captures based on the contentfilter and settings
+*/
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCStreamDelegate;
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+typedef NSString * SCStreamFrameInfo NS_TYPED_ENUM;
+/*!
+ @key SCStreamFrameInfoStatus
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer that denotes the frames SCFrameStatus
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoStatus API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoDisplayTime
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the mach absolute time when the event occurred. For a frame event, this is when the frame was displayed by the window server.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoDisplayTime API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoScaleFactor
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the display resolution associated with the frame. Display resolution is the pixel to point scaling factor. It should be in the range of [1, 4].
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoScaleFactor API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoContentScale
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the content scale associated with the frame. Content scale is the scaling factor from original content size to its size in surface.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoContentScale API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoContentRect
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the content rect associated with the frame. Content rect is the size and location of content in points in surface.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoContentRect API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoDirtyRects
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for an array of rectangles that is the union of both rectangles that were redrawn and rectangles that were moved. This is an array of CGRect in NSValue. The CGRects elements are specified in pixels.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoDirtyRects API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @key SCStreamFrameInfoScreenRect
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the onscreen location of the captured content
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoScreenRect API_AVAILABLE(macos(13.1), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @key SCStreamFrameInfoBoundingRect
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the bounding rect associated with the frame. Bounding rect is the size and location of smallest bounding box containing all captured windows in points and in surface coordinates.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoBoundingRect API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @key SCStreamFrameInfoPresenterOverlayContentRect
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the content rect associated with the frame while in presenter overlay. In presenter overlay small, this content rect is the size and location of smallest bounding box containing all captured windows plus small overlay window in points and in surface coordinates.
+ In presenter overlay large, this content rect is the size and location of shared content in points and in surface coordinates.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoPresenterOverlayContentRect API_AVAILABLE(macos(14.2), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @key SCStreamFrameInfoVideoOrientation
+ @abstract The key for the CFDictionary attached to the CMSampleBuffer for the video orientation.
+ */
+extern SCStreamFrameInfo const SCStreamFrameInfoVideoOrientation API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0)) API_UNAVAILABLE(tvos);
+
+@protocol SCStreamOutput;
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@interface SCStream : NSObject
+
+/*!
+ @abstract Synchronization clock used for media capture.
+ */
+@property(nonatomic, readonly, nullable) CMClockRef synchronizationClock API_AVAILABLE(macos(13.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @abstract indicates whether this stream is currently capturing screen content
+ @discussion Returns YES if the stream has been started and is actively capturing, NO otherwise.
+ */
+@property (nonatomic, readonly, getter=isCapturing) BOOL capturing API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0));
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+/*!
+ @abstract initWithFilter:configuration:delegate:
+ @param contentFilter the requested content filter to be captured
+ @param streamConfig the requested stream configuration to be applied to the SCStream
+ @param delegate the SCStream delegate object
+ @discussion this method create a SCStream object that has the particular output settings for the content stream
+*/
+- (instancetype)initWithFilter:(SCContentFilter *)contentFilter configuration:(SCStreamConfiguration *)streamConfig delegate:(id<SCStreamDelegate> _Nullable)delegate;
+
+/*!
+ @abstract addStreamOutput:type:sampleHandlerQueue:error:
+ @param output an object that adheres to the SCStreamOutput protocol that will receive the frames and call its delegate frame call back on its sample handler queue
+ @param type the SCStreamOutput type
+ @param sampleHandlerQueue the return queue for the sample handler
+ @param error the error pertaining to the add stream output
+ @discussion An SCStreamOutput protocol object instance can only be added to a session using -addStreamOutput: Returns a BOOL denoting if the add was successful
+*/
+- (BOOL)addStreamOutput:(id<SCStreamOutput>)output type:(SCStreamOutputType)type sampleHandlerQueue:(dispatch_queue_t _Nullable)sampleHandlerQueue error:(NSError **)error NS_SWIFT_ASYNC_NAME (addStreamOutput(_:type:sampleHandlerQueue:)) NS_SWIFT_NAME (addStreamOutput(_:type:sampleHandlerQueue:));
+
+/*!
+ @abstract removeStreamOutput:type:error:
+ @param output an object that adheres to the SCStreamOutput protocol that will received the frames and call its delegate frame call back on its sample handler queue
+ @param type the SCStreamOutput type
+ @param error the error pertaining to the removing stream output
+ @discussion An SCStreamOutput protocol object instance can only be removed to a session using -addStreamOutput: Returns a BOOL denoting if the remove was successful
+*/
+
+- (BOOL)removeStreamOutput:(id<SCStreamOutput>)output type:(SCStreamOutputType)type error:(NSError **)error NS_SWIFT_ASYNC_NAME(removeStreamOutput(_:type:)) NS_SWIFT_NAME(removeStreamOutput(_:type:));
+
+/*!
+ @abstract updateContentFilter:completionHandler:
+ @param contentFilter the requested content filter to be updated
+ @param completionHandler the handler to be called when the function completes
+ @discussion this method will update the content filter for a content stream. A completion handler will be called when the update is complete with an error denoting if the update has failed.
+*/
+- (void)updateContentFilter:(SCContentFilter *)contentFilter completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(updateContentFilter(_:)) NS_SWIFT_NAME(updateContentFilter(_:completionHandler:)) API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);;
+
+/*!
+ @abstract updateConfiguration:completionHandler:
+ @param streamConfig the requested content filter to be updated
+ @param completionHandler the handler to be called when the function completes
+ @discussion this method will update the stream configuration for a content stream. A completion handler will be called when the update is complete with an error denoting if the update has failed.
+*/
+- (void)updateConfiguration:(SCStreamConfiguration *)streamConfig completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(updateConfiguration(_:)) NS_SWIFT_NAME(updateConfiguration(_:completionHandler:)) API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
+
+/*!
+ @abstract startCaptureWithCompletionHandler:
+ @param completionHandler the handler to be called when the function completes
+ @discussion this method starts the content stream. The handler will be called when the content stream start has completed with an error denoting if the start has failed.
+*/
+- (void)startCaptureWithCompletionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
+
+/*!
+ @abstract stopCaptureWithCompletionHandler:
+ @param completionHandler the handler to be called when the function completes
+ @discussion this method stops the content stream. The handler will be called when the content stream stop has completed with an error denoting if the stop has failed.
+*/
+- (void)stopCaptureWithCompletionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;
+
+/*!
+ @method addRecordingOutput
+ @abstract Add a SCRecordingOutput to the SCStream. Starts Recording if stream is already capturing, otherwise recording will be started after capture starts. Recording will be written into a file url specified in SCRecordingOutput. Media(Screen/Audio/Microphone) to be recorded will be based on the SCStream configuration.
+ @param recordingOutput an SCRecordingOutput that including configuration of recording, and delegate for recording event.
+ @param error the error pertaining to the add recording output
+ @discussion Returns a BOOL denoting if the add was successful. Currently only support one recordingOutput on a stream. To guarantee the first sample captured in the stream to be written into the recording file, client need to add recordingOutput before startCapture. Delegate for recordingDidStart will be notified in SCRecordingOutput or recordingDidFinishWithError will be notified with an error associated if recording failed to start.
+*/
+- (BOOL)addRecordingOutput:(SCRecordingOutput *)recordingOutput error:(NSError **)error NS_SWIFT_NAME(addRecordingOutput(_:)) API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @method removeRecordingOutput
+ @abstract Remove SCRecordingOutput from the SCStream. Stops Recording if the stream is currently recording.
+ @param recordingOutput an SCRecordingOutput that including configuration of recording, and delegate for recording event.
+ @param error the error pertaining to the remove recording output
+ @discussion Returns a BOOL denoting if the remove was successful. Delegate for recordingDidFinishWithError will be notified in SCRecordingOutput, associate with an error code if recording failed to finish written to the file. If stopCapture is called without removing recordingOutput, recording will be stopped and finish writting into the file. In case client update the stream configuration during recording, recording will be stopped as well.
+*/
+- (BOOL)removeRecordingOutput:(SCRecordingOutput *)recordingOutput error:(NSError **)error NS_SWIFT_NAME(removeRecordingOutput(_:)) API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @method addClipBufferingOutput:error:
+ @abstract Add a SCClipBufferingOutput to the SCStream to start clip buffering. Samples will begin accumulating in a rolling buffer that retains the most recent content up to 15 seconds.
+ @param clipBufferingOutput a SCClipBufferingOutput object
+ @param error the error pertaining to adding clip buffering output
+ @discussion Returns a BOOL denoting if the add was successful. The stream must be actively capturing before clip buffering can be started. Only one clip buffering session can be active on a stream at a time. Once buffering is active, clips can be exported using the SCClipBufferingOutput's exportClipToURL:duration:completionHandler: method. Media to be buffered is based on the SCStream configuration.
+*/
+- (BOOL)addClipBufferingOutput:(SCClipBufferingOutput *)clipBufferingOutput error:(NSError **)error NS_SWIFT_NAME(addClipBufferingOutput(_:)) API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @method removeClipBufferingOutput:error:
+ @abstract Remove SCClipBufferingOutput from the SCStream to stop clip buffering and flush the buffer
+ @param clipBufferingOutput a SCClipBufferingOutput object
+ @param error the error pertaining to removing clip buffering output
+ @discussion Returns a BOOL denoting if the remove was successful. This method stops the accumulation of samples and releases all buffered content. Once removed, no new exports can be requested until clip buffering is added again. If the stream is stopped while clip buffering is active, clip buffering will be automatically stopped as well.
+*/
+- (BOOL)removeClipBufferingOutput:(SCClipBufferingOutput *)clipBufferingOutput error:(NSError **)error NS_SWIFT_NAME(removeClipBufferingOutput(_:)) API_AVAILABLE(macos(27.0), macCatalyst(27.0), ios(27.0), visionos(27.0), tvos(27.0));
+
+/*!
+ @method addVideoEffectOutput:error:
+ @abstract Add a SCVideoEffectOutput to the SCStream to start camera video effect. Only one video effect output can be active per stream.
+ @param videoEffectOutput a SCVideoEffectOutput object to add to the stream.
+ @param error the error pertaining to the add video effect output operation.
+ @discussion Returns a BOOL denoting if the add was successful. Video effect output is only supported on streams using in-app capture (presentPickerForCurrentApplication). Attempting to add a video effect output to a non-in-app capture stream will return NO with SCStreamErrorNotSupported. Camera video effect will start after successfully adding or if stream has not yet started, when stream starts capturing. Delegate for outputVideoEffectDidStartForStream: will be notified on the SCStreamDelegate, or outputVideoEffectDidFailForStream:withError: will be notified if camera video effect failed to start.
+*/
+- (BOOL)addVideoEffectOutput:(SCVideoEffectOutput *)videoEffectOutput error:(NSError **)error NS_SWIFT_NAME(addVideoEffectOutput(_:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, visionos, tvos);
+
+/*!
+ @method removeVideoEffectOutput:error:
+ @abstract Remove SCVideoEffectOutput from the SCStream. Stops camera video effect if currently active.
+ @param videoEffectOutput a SCVideoEffectOutput object to remove from the stream.
+ @param error the error pertaining to the remove video effect output operation.
+ @discussion Returns a BOOL denoting if the remove was successful. Delegate for outputVideoEffectDidStopForStream: will be notified on the SCStreamDelegate. If stopCapture is called without removing videoEffectOutput, camera video effect will be stopped automatically.
+*/
+- (BOOL)removeVideoEffectOutput:(SCVideoEffectOutput *)videoEffectOutput error:(NSError **)error NS_SWIFT_NAME(removeVideoEffectOutput(_:)) API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, visionos, tvos);
+
+@end
+
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCStreamOutput <NSObject>
+@optional
+/*!
+ @abstract stream:didOutputSampleBuffer:ofType:
+ @param sampleBuffer the sample buffer
+ @param type the sample buffer type
+ @discussion protocol method for passing back screen sample buffers
+*/
+- (void)stream:(SCStream *)stream didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer ofType:(SCStreamOutputType)type;
+@end
+/*!
+ @abstract SCStreamDelegate
+ @discussion SCStreamDelegate is the object that adheres to the SCStream delegate call backs
+*/
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
+@protocol SCStreamDelegate <NSObject>
+@optional
+/*!
+ @abstract stream:didStopStreamWithError:
+ @param stream the SCStream object
+ @param error the error denoted by the stopping of the stream
+ @discussion notifies the delegate that the stream has stopped and the error associated with it
+*/
+- (void)stream:(SCStream *)stream didStopWithError:(NSError *)error;
+
+/*!
+ @abstract outputVideoEffectDidStartForStream:
+ @param stream the SCStream object
+ @discussion notifies the delegate that the stream's overlay video effect has started.
+*/
+- (void)outputVideoEffectDidStartForStream:(SCStream *)stream API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0));
+
+/*!
+ @abstract outputVideoEffectDidStopForStream:
+ @param stream the SCStream object
+ @discussion notifies the delegate that the stream's overlay video effect has stopped.
+*/
+- (void)outputVideoEffectDidStopForStream:(SCStream *)stream API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0));
+
+/*!
+ @abstract outputVideoEffectDidFailForStream:withError:
+ @param stream the SCStream object
+ @param error the error describing why the video effect failed
+ @discussion Notifies the delegate that the video effect failed with an error. This can occur if the camera device is unavailable, permissions are missing, or an internal error occurs.
+*/
+- (void)outputVideoEffectDidFailForStream:(SCStream *)stream withError:(NSError *)error API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, visionos, tvos);
+
+/*!
+ @abstract streamDidBecomeActive:
+ @param stream the SCStream object
+ @discussion notifies the delegate the first time any window that was being shared in the stream is re-opened after all the windows being shared are closed. When all the windows being shared are closed, the client will receive streamDidBecomeInactive:.
+ */
+- (void)streamDidBecomeActive:(SCStream *)stream API_AVAILABLE(macos(15.2), macCatalyst(18.2));
+
+/*!
+ @abstract streamDidBecomeInactive:
+ @param stream the SCStream object
+ @discussion notifies the delegate that all the windows that are currently being shared are exited. This callback occurs for all content filter types.
+*/
+- (void)streamDidBecomeInactive:(SCStream *)stream API_AVAILABLE(macos(15.2), macCatalyst(18.2));
+
+@end
+
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h 2026-05-22 12:45:37
@@ -0,0 +1,45 @@
+//
+// SCVideoEffectOutput.h
+// ScreenCaptureKit
+//
+// Created by Angelina Ilijevski on 4/24/26.
+// Copyright © 2026 Apple Inc. All rights reserved.
+//
+
+#ifndef SCVideoEffectOutput_h
+#define SCVideoEffectOutput_h
+
+#import <Foundation/Foundation.h>
+
+@class AVCaptureDevice;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @abstract SCVideoEffectOutput
+ @discussion SCVideoEffectOutput represents a camera video effect session on a SCStream. Create an instance and add it to a stream using addVideoEffectOutput:error: to start the camera video effect. The camera preview is framework-managed and automatically added to the application's key window. Callbacks for video effect lifecycle events are delivered through the SCStreamDelegate protocol.
+*/
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, visionos, tvos)
+@interface SCVideoEffectOutput : NSObject
+
+/*!
+ @abstract initWithCameraDevice:
+ @param device The AVCaptureDevice to use for the camera video effect.
+ @discussion Creates an SCVideoEffectOutput configured to use the specified camera device for the video effect preview.
+*/
+- (instancetype)initWithCameraDevice:(AVCaptureDevice *)device;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/*!
+ @abstract cameraDevice
+ @discussion The camera device used for the video effect. Can be changed while the video effect is active to switch cameras.
+*/
+@property (nonatomic, strong) AVCaptureDevice *cameraDevice;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* SCVideoEffectOutput_h */
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h 2026-05-22 12:45:36
@@ -0,0 +1,20 @@
+//
+// ScreenCaptureKit.h
+// ScreenCaptureKit
+//
+// Copyright © 2021 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <TargetConditionals.h>
+#import <ScreenCaptureKit/SCStream.h>
+#import <ScreenCaptureKit/SCShareableContent.h>
+#import <ScreenCaptureKit/SCError.h>
+#import <ScreenCaptureKit/SCContentSharingPicker.h>
+#import <ScreenCaptureKit/SCScreenshotManager.h>
+#import <ScreenCaptureKit/SCRecordingOutput.h>
+#import <ScreenCaptureKit/SCRecordingEditor.h>
+#import <ScreenCaptureKit/SCClipBufferingOutput.h>
+#import <ScreenCaptureKit/SCVideoEffectOutput.h>
+
+