-
Notifications
You must be signed in to change notification settings - Fork 570
ScreenCaptureKit macOS 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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCClipBufferingOutput.h 2026-05-22 06:14:56
@@ -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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h 2026-04-19 02:39:09
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCContentSharingPicker.h 2026-05-22 08:44:53
@@ -22,7 +22,7 @@
SCContentSharingPickerModeSingleApplication = 1 << 2,
SCContentSharingPickerModeMultipleApplications = 1 << 3,
SCContentSharingPickerModeSingleDisplay = 1 << 4
-} API_AVAILABLE(macos(14.0), macCatalyst(18.2));
+} API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
@protocol SCContentSharingPickerObserver;
@@ -30,36 +30,46 @@
@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))
+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;
+@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;
+@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;
+@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;
+@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))
+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;
@@ -77,14 +87,20 @@
/*!
@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 NS_REFINED_FOR_SWIFT;
+@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 for its UI to appear. If `startPickingContent` is called and the picker is not marked as active, the picker will not appear.
+ @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
@@ -110,21 +126,21 @@
@abstract present
@discussion show content sharing picker to get content for updating a new stream
*/
-- (void)present;
+- (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;
+- (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;
+- (void)presentPickerForStream:(SCStream *)stream API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
/*!
@abstract presentPickerForStream:usingContentStyle:
@@ -132,14 +148,20 @@
@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;
+- (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))
+API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@protocol SCContentSharingPickerObserver <NSObject>
/*!
@abstract contentSharingPicker:didCancelforStream:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h 2026-04-19 02:02:28
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCError.h 2026-05-22 06:14:56
@@ -6,11 +6,11 @@
//
#import <Foundation/Foundation.h>
-API_AVAILABLE(macos(12.3), macCatalyst(18.2))
-extern NSString *const __nonnull SCStreamErrorDomain;
+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))
+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
@@ -29,10 +29,13 @@
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
+ 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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingEditor.h 2026-05-22 06:14:56
@@ -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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h 2026-04-19 02:02:28
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCRecordingOutput.h 2026-05-22 07:08:16
@@ -15,12 +15,13 @@
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))
+API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@interface SCRecordingOutputConfiguration : NSObject
/*!
@@ -49,6 +50,11 @@
*/
@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
/*!
@@ -56,7 +62,7 @@
@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))
+API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@protocol SCRecordingOutputDelegate <NSObject>
@optional
@@ -83,7 +89,7 @@
@end
-API_AVAILABLE(macos(15.0), macCatalyst(18.2))
+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.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h 2026-04-19 02:02:28
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCScreenshotManager.h 2026-05-22 07:08:15
@@ -7,6 +7,7 @@
#import <Foundation/Foundation.h>
#import <ScreenCaptureKit/ScreenCaptureKit.h>
+#import <UniformTypeIdentifiers/UTType.h>
NS_ASSUME_NONNULL_BEGIN
@@ -16,11 +17,11 @@
@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_AVAILABLE(macos(26.0), macCatalyst(26.0)) API_UNAVAILABLE(ios, visionos, tvos);
typedef NS_ENUM(NSInteger, SCScreenshotDisplayIntent) {
SCScreenshotDisplayIntentCanonical,
SCScreenshotDisplayIntentLocal
-} NS_SWIFT_NAME(SCScreenshotConfiguration.DisplayIntent);;
+} NS_SWIFT_NAME(SCScreenshotConfiguration.DisplayIntent);
/*!
@typedef SCScreenshotDynamicRange
@@ -29,7 +30,7 @@
@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_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),
@@ -41,7 +42,7 @@
@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_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.
@@ -113,7 +114,7 @@
@abstract SCScreenshotOutput
@discussion SCScreenshotOutput is an object that contains the CGImages requested by the client.
*/
-API_AVAILABLE(macos(26.0), macCatalyst(26.0));
+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
@@ -130,9 +131,9 @@
@property (nullable, nonatomic, assign) NSURL *fileURL;
@end
-API_AVAILABLE(macos(14.0), macCatalyst(18.2))
+API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
@interface SCScreenshotManager : NSObject
-- (instancetype)init API_UNAVAILABLE(ios, tvos, macCatalyst, macos);
+- (instancetype)init NS_UNAVAILABLE;
/*!
@abstract captureSampleBufferWithFilter:configuration:completionHandler:
@param contentFilter is the filter containing the content to take a screenshot of
@@ -140,7 +141,7 @@
@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:)) API_AVAILABLE(macos(14.0));
++ (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:
@@ -149,7 +150,7 @@
@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:)) API_AVAILABLE(macos(14.0));
++ (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:
@@ -157,7 +158,7 @@
@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));
++ (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:
@@ -166,7 +167,7 @@
@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));
++ (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:
@@ -175,7 +176,7 @@
@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));
++ (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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h 2026-04-19 02:39:09
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCShareableContent.h 2026-05-22 12:45:36
@@ -6,8 +6,10 @@
//
#import <Foundation/Foundation.h>
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
#import <CoreGraphics/CGWindow.h>
#import <CoreGraphics/CGDirectDisplay.h>
+#endif
NS_ASSUME_NONNULL_BEGIN
@@ -19,16 +21,16 @@
@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,
- SCShareableContentStyleDisplay,
- SCShareableContentStyleApplication
-} API_AVAILABLE(macos(12.3), macCatalyst(18.2));
+ 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_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
@interface SCRunningApplication : NSObject
/*!
@abstract bundleIdentifier the bundleIdentifier for the SCRunningApplication
@@ -48,12 +50,14 @@
+ (instancetype)new NS_UNAVAILABLE;
@end
-API_AVAILABLE(macos(12.3), macCatalyst(18.2))
+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
@@ -83,17 +87,19 @@
/*!
@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));
+@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_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
@@ -117,7 +123,7 @@
@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_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
@interface SCShareableContentInfo : NSObject
/*!
@abstract style of stream
@@ -136,7 +142,7 @@
@end
-API_AVAILABLE(macos(12.3), macCatalyst(18.2))
+API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos)
@interface SCShareableContent : NSObject
/*!
@abstract getShareableContentWithCompletionHandler:completionHandler
@@ -150,7 +156,7 @@
@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));
++ (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
@@ -184,7 +190,7 @@
@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));
++ (SCShareableContentInfo *)infoForFilter:(nonnull SCContentFilter *)filter API_AVAILABLE(macos(14.0), macCatalyst(18.2));
/*!
@abstract windows SCShareableContent property that contains all the sharable SCWindows
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h 2026-04-19 02:39:09
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCStream.h 2026-05-28 02:08:30
@@ -6,12 +6,18 @@
//
#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
/*!
@@ -27,9 +33,9 @@
*/
typedef NS_ENUM(NSInteger, SCStreamOutputType) {
SCStreamOutputTypeScreen,
- SCStreamOutputTypeAudio API_AVAILABLE(macos(13.0), macCatalyst(18.2)),
- SCStreamOutputTypeMicrophone API_AVAILABLE(macos(15.0), macCatalyst(18.2))
-} API_AVAILABLE(macos(12.3), macCatalyst(18.2));
+ 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
@@ -48,7 +54,7 @@
SCFrameStatusSuspended,
SCFrameStatusStarted,
SCFrameStatusStopped
-} API_AVAILABLE(macos(12.3), macCatalyst(18.2));
+} API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0));
/*!
@typedef SCPresenterOverlayAlertSetting
@@ -62,7 +68,7 @@
SCPresenterOverlayAlertSettingSystem,
SCPresenterOverlayAlertSettingNever,
SCPresenterOverlayAlertSettingAlways
-} API_AVAILABLE(macos(14.0), macCatalyst(18.2));
+} API_AVAILABLE(macos(14.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
/*!
@typedef SCStreamType
@@ -72,13 +78,13 @@
typedef NS_ENUM(NSInteger, SCStreamType) {
SCStreamTypeWindow,
SCStreamTypeDisplay
-} API_DEPRECATED("Use SCShareableContentStyle instead", macos(14.0, 15.0));
+} 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_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
/*!
@typedef SCCaptureDynamicRange
@@ -89,61 +95,61 @@
*/
typedef NS_ENUM(NSInteger, SCCaptureDynamicRange) {
SCCaptureDynamicRangeSDR,
- SCCaptureDynamicRangeHDRLocalDisplay,
+ SCCaptureDynamicRangeHDRLocalDisplay API_AVAILABLE(macos(15.0), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos),
SCCaptureDynamicRangeHDRCanonicalDisplay
-} API_AVAILABLE(macos(15.0), macCatalyst(18.2));
+} 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))
+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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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;
+- (instancetype)initWithDesktopIndependentWindow:(SCWindow *)window API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
/*!
@abstract initWithDisplay:excludingWindows
@@ -151,7 +157,7 @@
@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;
+- (instancetype)initWithDisplay:(SCDisplay *)display excludingWindows:(NSArray<SCWindow *>*)excluded API_AVAILABLE(macos(12.3), macCatalyst(18.2)) API_UNAVAILABLE(ios, visionos, tvos);
/*!
@abstract initWithDisplay:includingWindows
@@ -159,7 +165,7 @@
@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;
+- (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
@@ -168,7 +174,7 @@
@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;
+- (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
@@ -177,15 +183,27 @@
@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;
+- (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))
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@interface SCStreamConfiguration : NSObject
/*!
@@ -199,175 +217,177 @@
*/
typedef NS_ENUM(NSInteger, SCStreamConfigurationPreset) {
- SCStreamConfigurationPresetCaptureHDRStreamLocalDisplay,
- SCStreamConfigurationPresetCaptureHDRStreamCanonicalDisplay,
- SCStreamConfigurationPresetCaptureHDRScreenshotLocalDisplay,
- SCStreamConfigurationPresetCaptureHDRScreenshotCanonicalDisplay,
- SCStreamConfigurationPresetCaptureHDRRecordingPreservedSDRHDR10 API_AVAILABLE(macos(26.0), macCatalyst(26.0))
-} NS_SWIFT_NAME(SCStreamConfiguration.Preset) API_AVAILABLE(macos(15.0), macCatalyst(18.2));
+ 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. Default is set to 1920.
+ @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;
+@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. Default is set to 1080.
+ @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;
+@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;
+@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
- 'l10r': Packed Little Endian ARGB2101010
- '420v': 2-plane "video" range YCbCr 4:2:0
- '420f': 2-plane "full" range YCbCr 4:2:0
- 'xf44': 2 plane "full" range YCbCr10 4:4:4
- 'RGhA': 64 bit RGBA IEEE half-precision float, 16-bit little-endian
+ @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;
+@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;
+@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));
+@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));
+@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;
+@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));
+@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;
+@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;
+@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;
+@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;
+@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;
+@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;
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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));
+@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.
+ @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));
+@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);
+@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));
+@property(nonatomic, assign) SCCaptureDynamicRange captureDynamicRange API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
/*!
@method streamConfigurationWithPreset:
@@ -375,7 +395,7 @@
@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));
++ (instancetype)streamConfigurationWithPreset:(SCStreamConfigurationPreset)preset API_AVAILABLE(macos(15.0), macCatalyst(18.2), ios(27.0)) API_UNAVAILABLE(visionos, tvos);
@end
@@ -383,75 +403,87 @@
@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))
+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))
+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));
+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));
+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));
+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));
+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));
+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));
+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));
+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));
+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));
+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))
+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));
+@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;
/*!
@@ -489,7 +521,7 @@
@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:));
+- (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:
@@ -497,7 +529,7 @@
@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:));
+- (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:
@@ -520,7 +552,7 @@
@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));
+- (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
@@ -529,11 +561,47 @@
@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));
+- (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))
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@protocol SCStreamOutput <NSObject>
@optional
/*!
@@ -548,7 +616,7 @@
@abstract SCStreamDelegate
@discussion SCStreamDelegate is the object that adheres to the SCStream delegate call backs
*/
-API_AVAILABLE(macos(12.3), macCatalyst(18.2))
+API_AVAILABLE(macos(12.3), macCatalyst(18.2), ios(27.0), visionos(27.0), tvos(27.0))
@protocol SCStreamDelegate <NSObject>
@optional
/*!
@@ -564,28 +632,36 @@
@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));
+- (void)outputVideoEffectDidStartForStream:(SCStream *)stream API_AVAILABLE(macos(14.0), macCatalyst(18.2), ios(27.0));
/*!
- @abstract stream:outputVideoEffectDidStart:
+ @abstract outputVideoEffectDidStopForStream:
@param stream the SCStream object
- @discussion notifies the delegate that the stream's overlay video effect has stopped.
+ @discussion notifies the delegate that the stream's overlay video effect has stopped.
*/
-- (void)outputVideoEffectDidStopForStream:(SCStream *)stream API_AVAILABLE(macos(14.0));
+- (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));
+- (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));
+- (void)streamDidBecomeInactive:(SCStream *)stream API_AVAILABLE(macos(15.2), macCatalyst(18.2));
@end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/SCVideoEffectOutput.h 2026-05-22 06:14:56
@@ -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/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h 2026-04-19 02:02:28
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/ScreenCaptureKit.framework/Headers/ScreenCaptureKit.h 2026-05-22 06:14:56
@@ -13,6 +13,8 @@
#import <ScreenCaptureKit/SCContentSharingPicker.h>
#import <ScreenCaptureKit/SCScreenshotManager.h>
#import <ScreenCaptureKit/SCRecordingOutput.h>
-
+#import <ScreenCaptureKit/SCRecordingEditor.h>
+#import <ScreenCaptureKit/SCClipBufferingOutput.h>
+#import <ScreenCaptureKit/SCVideoEffectOutput.h>