Skip to content

AVKit macOS xcode13.0 beta1

Manuel de la Pena edited this page Aug 25, 2021 · 3 revisions

#AVKit.framework https://github.com/xamarin/xamarin-macios/pull/12551

diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h	2021-03-16 04:44:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h	2021-06-01 21:34:52.000000000 -0400
@@ -9,17 +9,39 @@
 	
  */
 
+#import <Availability.h>
+#import <TargetConditionals.h>
+
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
 #import <AVKit/AVKitDefines.h>
+#if __has_include(<AVKit/AVKitCore.h>)
+#import <AVKit/AVKitCore.h>
+#else
+#import <AVKit/AVKitCore.h>
+#endif // __has_include(<AVKit/AVKitCore.h>)
+
+#else
+#import <AVKit/AVKitDefines.h>
+
+#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
+
 
 #if TARGET_OS_IPHONE
 #import <AVKit/AVError.h>
 #import <AVKit/AVPictureInPictureController.h>
+#import <AVKit/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h>
+#import <AVKit/AVPictureInPictureController_VideoCallSupport.h>
 #import <AVKit/AVPlayerItem+AVKitAdditions.h>
 #import <AVKit/AVPlayerViewController.h>
 #import <AVKit/AVPlaybackRouteSelecting.h>
+#import <AVKit/AVRoutePickerView.h>
+
 #else
+
 #import <AVKit/AVCaptureView.h>
 #import <AVKit/AVPictureInPictureController.h>
+#import <AVKit/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h>
 #import <AVKit/AVPlayerView.h>
-#endif // TARGET_OS_IPHONE
 #import <AVKit/AVRoutePickerView.h>
+
+#endif // TARGET_OS_IPHONE
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitCore.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitCore.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitCore.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitCore.h	2021-06-01 21:34:52.000000000 -0400
@@ -0,0 +1,9 @@
+//
+//  AVKitCore.h
+//  AVKitCore
+//
+//  Created by Jake DesJarlais on 10/29/20.
+//  Copyright © 2020 Apple Inc. All rights reserved.
+//
+
+#import <AVKit/AVKitDefines.h>
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h	2021-03-16 04:44:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h	2021-06-02 11:05:47.000000000 -0400
@@ -1,3 +1,4 @@
+#if !__has_include(<AVKitCore/AVKitDefines.h>)
 /*
 	File:  AVKitDefines.h
 	
@@ -15,3 +16,17 @@
 #else
 #define AVKIT_EXTERN	extern __attribute__((visibility ("default")))
 #endif
+
+#if !TARGET_IS_AVKITMACHELPER
+#define AVKIT_ONLY_EXTERN AVKIT_EXTERN
+#define AVKIT_ONLY_API_AVAILABLE(...) API_AVAILABLE(__VA_ARGS__)
+#else
+#define AVKIT_ONLY_EXTERN extern __attribute__((visibility ("hidden")))
+#define AVKIT_ONLY_API_AVAILABLE(...)
+#endif
+
+#define PLATFORM_SUPPORTS_AVKITCORE (TARGET_OS_OSX || TARGET_OS_MACCATALYST)
+
+#else
+#import <AVKitCore/AVKitDefines.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController.h	2021-03-16 13:55:51.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController.h	2021-06-02 12:43:22.000000000 -0400
@@ -12,6 +12,7 @@
 
 #import <AVKit/AVKitDefines.h>
 
+
 NS_ASSUME_NONNULL_BEGIN
 
 #if TARGET_OS_IPHONE
@@ -21,6 +22,7 @@
 @class NSImage;
 #endif // TARGET_OS_IPHONE
 
+@class AVPictureInPictureControllerContentSource;
 @protocol AVPictureInPictureControllerDelegate;
 
 /*!
@@ -81,12 +83,26 @@
 #endif // TARGET_OS_IPHONE
 
 /*!
- @method		initWithPlayerLayer:
- @param			playerLayer
- 				The player layer from which to source the media content for the Picture in Picture controller.
- @abstract		Designated initializer.
+	@method     initWithContentSource:
+	@param      contentSource
+				The content source to be shown in Picture in Picture.
+	@abstract   Use this initializer for content that may be a sample buffer display layer or a player layer.
+ */
+- (instancetype)initWithContentSource:(AVPictureInPictureControllerContentSource *)contentSource API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos) NS_DESIGNATED_INITIALIZER;
+
+/*!
+	@method		initWithPlayerLayer:
+	@param		playerLayer
+				The player layer from which to source the media content for the Picture in Picture controller.
+	@abstract	Initialize the picture in picture controller with a player layer.
  */
-- (nullable instancetype)initWithPlayerLayer:(AVPlayerLayer *)playerLayer NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithPlayerLayer:(AVPlayerLayer *)playerLayer;
+
+/*!
+	@property   contentSource
+	@abstract   The receiver's content source. Can be changed while Picture in Picture is active, but the new content source must be ready for display (in the case of AVPlayerLayer, that means AVPlayerLayer.isReadyForDisplay must return YES), otherwise Picture in Picture will stop.
+ */
+@property (nonatomic, strong, nullable) AVPictureInPictureControllerContentSource *contentSource API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos);
 
 /*!
 	@property	playerLayer
@@ -146,6 +162,42 @@
  */
 @property (nonatomic) BOOL requiresLinearPlayback API_AVAILABLE(ios(14.0), macos(11.0), tvos(14.0)) API_UNAVAILABLE(watchos);
 
+/*!
+	@property    canStartPictureInPictureAutomaticallyFromInline
+	@abstract    Indicates whether Picture in Picture should be allowed to start automatically when transitioning to background when the receiver’s content is embedded inline. Default is NO.
+	@discussion  This property must only be set to YES for content intended to be the user's primary focus.
+ */
+@property (nonatomic) BOOL canStartPictureInPictureAutomaticallyFromInline API_AVAILABLE(ios(14.2)) API_UNAVAILABLE(watchos, tvos, macos);
+
+@end
+
+
+/*!
+	@class      AVPictureInPictureControllerContentSource
+	@abstract   A content source for AVPictureInPictureController.
+	@discussion Create a content source with an appropriate layer, and use it to initialize the AVPictureInPictureController.
+ */
+API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_NAME(AVPictureInPictureController.ContentSource)
+@interface AVPictureInPictureControllerContentSource : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/*!
+	@method     initWithPlayerLayer:
+	@param      playerLayer
+				The player layer to be shown in Picture in Picture.
+	@abstract   Use this initializer for a content source with a player layer.
+*/
+- (instancetype)initWithPlayerLayer:(AVPlayerLayer *)playerLayer;
+
+/*!
+	@property   playerLayer
+	@abstract   The receiver's player layer.
+*/
+@property (nonatomic, nullable, readonly) AVPlayerLayer *playerLayer;
+
 @end
 
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h	2021-06-02 12:43:22.000000000 -0400
@@ -0,0 +1,120 @@
+/*
+	File: AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h
+ 
+	Framework: AVKit
+ 
+	Copyright © 2020 Apple Inc. All rights reserved.
+ */
+
+#import <AVFoundation/AVSampleBufferDisplayLayer.h>
+#import <AVKit/AVPictureInPictureController.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVPictureInPictureControllerContentSource;
+@class AVPictureInPicturePlaybackState;
+@protocol AVPictureInPictureSampleBufferPlaybackDelegate;
+
+@interface AVPictureInPictureController ()
+
+/*!
+	@method		invalidatePlaybackState
+	@abstract	Informs Picture in Picture controller that it should request an updated playback state from its sampleBufferPlaybackDelegate.
+	@discussion	This should always be called whenever playback is paused or unpaused, or the underlying content duration changes.
+*/
+- (void)invalidatePlaybackState API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos);
+
+@end
+
+
+/*!
+	@protocol	AVPictureInPictureSampleBufferPlaybackDelegate
+	@abstract	A protocol for controlling playback from an AVSampleBufferDisplayLayer in Picture in Picture.
+*/
+API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos)
+@protocol AVPictureInPictureSampleBufferPlaybackDelegate <NSObject>
+
+/*!
+	@method		pictureInPictureController:setPlaying:
+	@param		pictureInPictureController
+				The Picture in Picture controller.
+	@param		playing
+				Whether the content should play or pause.
+	@abstract	Informs delegate that the user initiated a request to play or pause the content.
+*/
+- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController setPlaying:(BOOL)playing NS_SWIFT_NAME(pictureInPictureController(_:setPlaying:));
+
+/*!
+	@method		pictureInPictureControllerTimeRangeForPlayback:
+	@param		pictureInPictureController
+				The Picture in Picture controller.
+	@abstract	Allows delegate to inform Picture in Picture controller of the current playable time range. May be called multiple times during playback. Time ranges with finite duration should always contain the current time of the sample buffer display layer's timebase.
+	@discussion	Clients should return a time range with a duration of kCMTimeInfinity to indicate live content. When there is no content to play, they should return kCMTimeRangeInvalid. This method will be called whenever -[AVPictureInPictureController invalidatePlaybackState] is called and at other times as needed by the system.
+	@returns	A CMTimeRange indicating the content's time range.
+*/
+- (CMTimeRange)pictureInPictureControllerTimeRangeForPlayback:(AVPictureInPictureController *)pictureInPictureController NS_SWIFT_NAME(pictureInPictureControllerTimeRangeForPlayback(_:));
+
+/*!
+	@method		pictureInPictureControllerIsPlaybackPaused:
+	@param		pictureInPictureController
+				The Picture in Picture controller.
+	@abstract	Allows delegate to indicate whether the playback UI should reflect a playing or paused state, regardless of what the current playback rate might be. May be called multiple times during playback.
+	@discussion	This method will be called whenever -[AVPictureInPictureController invalidatePlaybackState] is called and at other times as needed by the system.
+	@returns	A boolean value indicating whether or not the playback UI should indicate playback has been paused or is playing.
+*/
+- (BOOL)pictureInPictureControllerIsPlaybackPaused:(AVPictureInPictureController *)pictureInPictureController NS_SWIFT_NAME(pictureInPictureControllerIsPlaybackPaused(_:));
+
+/*!
+	@method		pictureInPictureController:didTransitionToRenderSize:
+	@param		pictureInPictureController
+				The Picture in Picture controller.
+	@param		newRenderSize
+				The rendered size, in pixels, of Picture in Picture content.
+	@abstract	This method is called when the system Picture in Picture window changes size. Delegate take the new render size and AVPictureInPictureController.isPictureInPictureActive into account when choosing media variants in order to avoid uncessary decoding overhead.
+*/
+- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController didTransitionToRenderSize:(CMVideoDimensions)newRenderSize NS_SWIFT_NAME(pictureInPictureController(_:didTransitionToRenderSize:));
+
+/*!
+	@method		pictureInPictureController:skipByInterval:completionHandler:
+	@param		pictureInPictureController
+				The Picture in Picture controller.
+	@param		skipInterval
+				The interval by which to skip playback.
+	@param		completionHandler
+				A closure that must be invoked to indicate that the skip operation has completed.
+	@abstract	Informs delegate that the user has requested skipping forward or backward by the time indicated by the interval.
+	@discussion	Clients may choose to seek by a different interval for efficiency reasons (for example, seeking to a keyframe) or if the requested interval falls outside of the playable timeline. Clients must invoke the completion handler to indicate the seek operation has finished or failed. By the time the completion handler has been invoked, the timebase should reflect the current time and playback rate. Failure to invoke this completion handler is an application error and will result in playback UI permanently stuck in a “seeking” state.
+*/
+- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController skipByInterval:(CMTime)skipInterval completionHandler:(void (^)(void))completionHandler NS_SWIFT_NAME(pictureInPictureController(_:skipByInterval:completion:));
+
+@end
+
+
+API_AVAILABLE(ios(15.0), tvos(15.0), macos(12.0)) API_UNAVAILABLE(watchos)
+@interface AVPictureInPictureControllerContentSource (AVSampleBufferDisplayLayerSupport)
+
+/*!
+	@method		initWithSampleBufferDisplayLayer:
+	@param		sampleBufferDisplayLayer
+				The sample buffer display layer to be shown in Picture in Picture.
+	@param		playbackDelegate
+				The playback delegate for controlling sample buffer display layer's playback in Picture in Picture.
+	@abstract	Use this initializer for a content source with a sample buffer display layer and playback delegate.
+*/
+- (instancetype)initWithSampleBufferDisplayLayer:(AVSampleBufferDisplayLayer *)sampleBufferDisplayLayer playbackDelegate:(id<AVPictureInPictureSampleBufferPlaybackDelegate>)playbackDelegate;
+
+/*!
+	@property	sampleBufferDisplayLayer
+	@abstract	The receiver's sample buffer display layer.
+*/
+@property (nonatomic, nullable, readonly) AVSampleBufferDisplayLayer *sampleBufferDisplayLayer;
+
+/*!
+	@property	sampleBufferPlaybackDelegate
+	@abstract	The receiver's sample buffer playback delegate.
+*/
+@property (nonatomic, nullable, weak, readonly) id<AVPictureInPictureSampleBufferPlaybackDelegate> sampleBufferPlaybackDelegate;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerView.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerView.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerView.h	2021-03-16 09:53:17.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerView.h	2021-06-02 11:05:47.000000000 -0400
@@ -10,13 +10,19 @@
 #import <AppKit/AppKit.h>
 #import <AVFoundation/AVFoundation.h>
 
+
 NS_ASSUME_NONNULL_BEGIN
 
+@protocol AVPlayerViewDelegate;
+@protocol AVPlayerViewPictureInPictureDelegate;
+
+
+// MARK: -
+
 /*!
 	@class		AVPlayerView
 	@abstract	AVPlayerView is a subclass of NSView that can be used to display the visual content of an AVPlayer object and the standard playback controls.
  */
-
 API_AVAILABLE(macosx(10.9))
 @interface AVPlayerView : NSView
 
@@ -49,6 +55,7 @@
 /*!
 	@property	controlsStyle
 	@abstract	The style of the playback controls pane currently associated with the view.
+ 	@discussion	After macOS 11, the floating style controls will always be used when presenting in fullscreen and AVPlayerViewControlsStyleNone is not specified.
  */
 @property AVPlayerViewControlsStyle controlsStyle;
 
@@ -83,9 +90,17 @@
  */
 @property BOOL updatesNowPlayingInfoCenter API_AVAILABLE(macosx(10.13));
 
+/*!
+	@property	delegate
+	@abstract	The receiver's delegate.
+ */
+@property (nonatomic, readwrite, nullable, weak) id<AVPlayerViewDelegate> delegate API_AVAILABLE(macos(12.0));
+
 @end
 
 
+// MARK: -
+
 @interface AVPlayerView (AVPlayerViewCustomization)
 
 /*!
@@ -121,6 +136,8 @@
 @end
 
 
+// MARK: -
+
 @interface AVPlayerView (AVPlayerViewTrimming)
 
 /*!
@@ -151,6 +168,8 @@
 @end
 
 
+// MARK: -
+
 @interface AVPlayerView (AVPlayerViewChapterIndicator)
 
 /*!
@@ -166,7 +185,7 @@
 @end
 
 
-@protocol AVPlayerViewPictureInPictureDelegate;
+// MARK: -
 
 @interface AVPlayerView (AVPlayerViewPictureInPictureSupport)
 
@@ -185,6 +204,63 @@
 @end
 
 
+// MARK: -
+
+/*!
+	@protocol	AVPlayerViewDelegate
+	@abstract	A protocol for delegates of AVPlayerView.
+ */
+API_AVAILABLE(macos(12.0))
+@protocol AVPlayerViewDelegate <NSObject>
+@optional
+
+/*!
+	@method		playerViewWillEnterFullScreen:
+	@param		playerView
+				The player view.
+	@abstract	The delegate can implement this method to be notified when the AVPlayerView will enter full screen.
+ */
+- (void)playerViewWillEnterFullScreen:(AVPlayerView *)playerView;
+
+/*!
+	@method		playerViewDidEnterFullScreen:
+	@param		playerView
+				The player view.
+	@abstract	The delegate can implement this method to be notified when the AVPlayerView did enter full screen.
+ */
+- (void)playerViewDidEnterFullScreen:(AVPlayerView *)playerView;
+
+/*!
+	@method		playerViewWillExitFullScreen:
+	@param		playerView
+				The player view.
+	@abstract	The delegate can implement this method to be notified when the AVPlayerView will exit full screen.
+ */
+- (void)playerViewWillExitFullScreen:(AVPlayerView *)playerView;
+
+/*!
+	@method		playerViewDidExitFullScreen:
+	@param		playerView
+				The player view.
+	@abstract	The delegate can implement this method to be notified when the AVPlayerView did exit full screen.
+ */
+- (void)playerViewDidExitFullScreen:(AVPlayerView *)playerView;
+
+/*!
+	@method		playerView:restoreUserInterfaceForFullScreenExitWithCompletionHandler:
+	@param		playerView
+				The player view.
+	@param		completionHandler
+ 				The completion handler the delegate must call after restoring the interface for an exit full screen transition.
+	@abstract	The delegate can implement this method to restore the user interface before exiting fullscreen.
+ */
+- (void)playerView:(AVPlayerView *)playerView restoreUserInterfaceForFullScreenExitWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
+
+@end
+
+
+// MARK: -
+
 API_AVAILABLE(macos(10.15))
 @protocol AVPlayerViewPictureInPictureDelegate <NSObject>
 @optional
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h	2021-03-16 09:53:17.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h	2021-06-02 11:05:47.000000000 -0400
@@ -10,10 +10,18 @@
 #import <AVFoundation/AVFoundation.h>
 #import <Cocoa/Cocoa.h>
 
+#import <AVKit/AVKitDefines.h>
+
+
 @protocol AVRoutePickerViewDelegate;
 
 NS_ASSUME_NONNULL_BEGIN
 
+#if TARGET_IS_AVKITMACHELPER
+#define AVRoutePickerView AVMacHelperRoutePickerView
+#endif // TARGET_IS_AVKITMACHELPER
+
+
 /*!
  	@constant	AVRoutePickerViewButtonStateNormal
 				Normal or default state of the picker.
@@ -36,7 +44,7 @@
 	@abstract	AVRoutePickerView is a subclass of NSView that displays controls for picking playback routes.
  */
 
-API_AVAILABLE(macos(10.15))
+AVKIT_ONLY_API_AVAILABLE(macos(10.15))
 @interface AVRoutePickerView : NSView
 
 /*!
Clone this wiki locally