Skip to content

AVKit tvOS xcode15.0 b1

Haritha Mohan edited this page Sep 14, 2023 · 3 revisions

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

diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVContinuityDevicePickerViewController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVContinuityDevicePickerViewController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVContinuityDevicePickerViewController.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVContinuityDevicePickerViewController.h	2023-05-24 23:37:43
@@ -0,0 +1,69 @@
+/*
+	File:  AVContinuityDevicePickerViewController.h
+	
+	Framework:  AVKit
+	
+	Copyright © 2023 Apple Inc. All rights reserved.
+	
+	To report bugs, go to:  http://developer.apple.com/bugreporter/
+
+ */
+
+#import <AVFoundation/AVContinuityDevice.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol AVContinuityDevicePickerViewControllerDelegate;
+
+/*!
+	@class		AVContinuityDevicePickerViewController
+	@abstract	AVContinuityDevicePickerViewController is a view controller that can be presented modally to prompt users to pick/pair continuity devices (iPhone, iPad) to use as a remote camera and microphone.
+	@discussion Always display the device picker as a full-screen, modal view. If the user selects a device, the system will update the devices property of the AVCaptureDeviceDiscoverySession instance.
+ */
+API_AVAILABLE(tvos(17.0)) API_UNAVAILABLE(macos, ios, watchos)
+@interface AVContinuityDevicePickerViewController : UIViewController
+
+/*!
+	@property	delegate
+	@abstract The picker view controller's delegate.
+ */
+@property (nonatomic, nullable, weak) id<AVContinuityDevicePickerViewControllerDelegate> delegate;
+
+@end
+
+
+/*!
+	@protocol	AVContinuityDevicePickerViewControllerDelegate
+	@abstract	A protocol for delegates of AVContinuityDevicePickerViewController.
+ */
+@protocol AVContinuityDevicePickerViewControllerDelegate <NSObject>
+@optional
+
+/*!
+	@method		continuityDevicePickerWillBeginPresenting:
+	@abstract	Informs the delegate that the device picker view controller will start presenting devices to the user.
+ */
+- (void)continuityDevicePickerWillBeginPresenting:(AVContinuityDevicePickerViewController *)pickerViewController;
+
+/*!
+	@method		continuityDevicePicker:didConnectDevice:
+	@abstract	Informs the delegate that the device picker view controller finished presenting devices to the user and a device was connected.
+ */
+- (void)continuityDevicePicker:(AVContinuityDevicePickerViewController *)pickerViewController didConnectDevice:(AVContinuityDevice *)device;
+
+/*!
+	@method		continuityDevicePickerDidCancel:
+	@abstract	Informs the delegate that the device picker presentation was cancelled by the user and a device was not connected.
+ */
+- (void)continuityDevicePickerDidCancel:(AVContinuityDevicePickerViewController *)pickerViewController;
+
+/*!
+	@method		continuityDevicePickerDidEndPresenting:
+	@abstract	Informs the delegate that the device picker view controller finished presenting.
+ */
+- (void)continuityDevicePickerDidEndPresenting:(AVContinuityDevicePickerViewController *)pickerViewController;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVError.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVError.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVError.h	2023-03-09 19:12:56
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVError.h	2023-05-24 23:37:42
@@ -1,10 +1,10 @@
 /*
 	File:  AVError.h
- 
+	
 	Framework:  AVKit
- 
-	Copyright © 2015-2019 Apple Inc. All rights reserved.
- 
+	
+	Copyright © 2015-2023 Apple Inc. All rights reserved.
+	
  */
 
 #import <Foundation/Foundation.h>
@@ -13,29 +13,35 @@
 
 
 /*!
- @constant	AVKitErrorDomain
- @abstract	Domain for errors from AVKit APIs.
+	@constant	AVKitErrorDomain
+	@abstract	Domain for errors from AVKit APIs.
  */
-AVKIT_EXTERN NSString * const AVKitErrorDomain API_AVAILABLE(ios(9.0), tvos(13.0)) API_UNAVAILABLE(macos, watchos);
+AVKIT_EXTERN NSString * const AVKitErrorDomain API_AVAILABLE(ios(9.0), tvos(13.0), xros(1.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
 
 
 /*!
 	@constant	AVKitErrorUnknown
-	Unknown error.
+				Unknown error.
 	@constant	AVKitErrorPictureInPictureStartFailed
-	Failed to start Picture in Picture.
- 	@constant	AVKitErrorContentRatingUnkonwn
- 	Media content rating missing or unrecognized.
- 	@constant	AVKitErrorDisallowedByPasscode
- 	Restriction settings disallow access to this content, but the user can override by entering the passcode.
- 	@constant	AVKitErrorDisallowedByProfile
- 	An installed profile sets restriction settings that disallow access to this content; the user cannot override by entering the passcode (they may be able to override in Settings).
+				Failed to start Picture in Picture.
+
+	@constant	AVKitErrorContentRatingUnknown
+				Media content rating missing or unrecognized.
+ 	@constant	AVKitErrorContentDisallowedByPasscode
+ 				Restriction settings disallow access to this content, but the user can override by entering the passcode.
+ 	@constant	AVKitErrorContentDisallowedByProfile
+ 				An installed profile sets restriction settings that disallow access to this content; the user cannot override by entering the passcode (they may be able to override in Settings).
+ 
+ 	@constant	AVKitErrorRecordingFailed
+				The recording failed.
  */
 typedef NS_ENUM(NSInteger, AVKitError) {
-	AVKitErrorUnknown						= -1000,
-	AVKitErrorPictureInPictureStartFailed	= -1001,
-
-	AVKitErrorContentRatingUnknown     		= -1100,
-	AVKitErrorContentDisallowedByPasscode 	= -1101,
-	AVKitErrorContentDisallowedByProfile 	= -1102,
-} API_AVAILABLE(ios(9.0), tvos(13.0)) API_UNAVAILABLE(macos, watchos);
+	AVKitErrorUnknown																					= -1000,
+	AVKitErrorPictureInPictureStartFailed API_UNAVAILABLE(watchos)										= -1001,
+	
+	AVKitErrorContentRatingUnknown API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, xros, watchos)		= -1100,
+	AVKitErrorContentDisallowedByPasscode API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, xros, watchos)	= -1101,
+	AVKitErrorContentDisallowedByProfile API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, xros, watchos)	= -1102,
+	
+	AVKitErrorRecordingFailed API_UNAVAILABLE(watchos) API_UNAVAILABLE(ios, tvos, xros)				= -1200,
+} API_AVAILABLE(ios(9.0), tvos(13.0), xros(1.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVInterstitialTimeRange.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVInterstitialTimeRange.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVInterstitialTimeRange.h	2023-03-09 19:12:57
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVInterstitialTimeRange.h	2023-05-24 23:37:43
@@ -3,7 +3,7 @@
 	
 	Framework:  AVKit
 	
-	Copyright © 2015-2021 Apple Inc. All rights reserved.
+	Copyright © 2015-2023 Apple Inc. All rights reserved.
 	
  */
 
@@ -18,7 +18,7 @@
 	@discussion	An AVInterstitialTimeRange identifies a portion of an asset as an interstitial. When the asset is presented, the time range of this interstitial content will be collapsed in the user interface timeline to a single dot, scrubbing will skip over this range, and the duration will be subtracted from the time remaining in the video as displayed to the user.
  */
 
-API_AVAILABLE(tvos(9.0), ios(16.0)) API_UNAVAILABLE(macos, watchos)
+API_AVAILABLE(tvos(9.0), ios(16.0), xros(1.0)) API_UNAVAILABLE(macos, watchos)
 @interface AVInterstitialTimeRange : NSObject <NSCopying, NSSecureCoding>
 
 /*!
@@ -27,7 +27,7 @@
 				The time range of the interstitial.
 	@abstract	Designated initializer.
 */
- - (instancetype)initWithTimeRange:(CMTimeRange)timeRange API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, macos, watchos) NS_DESIGNATED_INITIALIZER;
+ - (instancetype)initWithTimeRange:(CMTimeRange)timeRange API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, xros) API_UNAVAILABLE(macos, watchos) NS_DESIGNATED_INITIALIZER;
 /*!
 	@property	timeRange
 	@abstract	The time range of the interstitial.
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h	2023-03-04 15:07:20
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKit.h	2023-05-24 23:37:42
@@ -3,16 +3,65 @@
 	
 	Framework:  AVKit
 	
-	Copyright © 2015-2022 Apple Inc. All rights reserved.
+	Copyright © 2013-2023 Apple Inc. All rights reserved.
 	
 	To report bugs, go to:  http://developer.apple.com/bugreporter/
-	
+
  */
 
+#import <Availability.h>
+#import <TargetConditionals.h>
+
+
+#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
+#import <AVKitCore/AVKitDefines.h>
+#if __has_include(<AVKit/AVKitCore.h>)
+#import <AVKit/AVKitCore.h>
+#else
+#import <AVKitCore/AVKitCore.h>
+#endif // __has_include(<AVKit/AVKitCore.h>)
+
+#else
 #import <AVKit/AVKitDefines.h>
+#import <AVKit/AVKitTypes.h>
 
+#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
+
+
+#if TARGET_OS_OSX
+#import <AVKit/AVCaptureView.h>
+#import <AVKit/AVPictureInPictureController.h>
+#import <AVKit/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h>
+#import <AVKit/AVPlayerView.h>
+#import <AVKit/AVRoutePickerView.h>
+
+#endif // TARGET_OS_OSX
+
+
+#if TARGET_OS_IOS && !TARGET_OS_XR
+#import <AVKit/AVError.h>
+#import <AVKit/AVPictureInPictureController.h>
+#import <AVKit/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h>
+#import <AVKit/AVPictureInPictureController_VideoCallSupport.h>
+#import <AVKit/AVPlaybackRouteSelecting.h>
+#import <AVKit/AVPlayerItem+AVKitAdditions.h>
+#import <AVKit/AVPlayerViewController.h>
+#import <AVKit/AVRoutePickerView.h>
+
+// Catalyst excluded headers
+#if !TARGET_OS_MACCATALYST
+#import <AVKit/AVInterstitialTimeRange.h>
+// Included in AVKitCore on catalyst
+#import <AVKit/AVPlaybackSpeed.h>
+#endif
+
+#endif // TARGET_OS_IOS && !TARGET_OS_XR
+
+
+#if TARGET_OS_TV
 #import <AVKit/AVContentProposal.h>
 #import <AVKit/AVContentProposalViewController.h>
+#import <AVKit/AVContinuityDevicePickerViewController.h>
 #import <AVKit/AVDisplayManager.h>
 #import <AVKit/AVError.h>
 #import <AVKit/AVInterstitialTimeRange.h>
@@ -25,3 +74,21 @@
 #import <AVKit/AVRoutePickerView.h>
 #import <AVKit/UIWindow.h>
 
+#endif // TARGET_OS_TV
+
+
+#if TARGET_OS_XR
+#import <AVKit/AVDisplayManager.h>
+#import <AVKit/AVError.h>
+#import <AVKit/AVInterstitialTimeRange.h>
+#import <AVKit/AVPictureInPictureController.h>
+#import <AVKit/AVPictureInPictureController_AVSampleBufferDisplayLayerSupport.h>
+#import <AVKit/AVPictureInPictureController_VideoCallSupport.h>
+#import <AVKit/AVPlaybackRouteSelecting.h>
+#import <AVKit/AVPlaybackSpeed.h>
+#import <AVKit/AVPlayerItem+AVKitAdditions.h>
+#import <AVKit/AVPlayerViewController.h>
+#import <AVKit/AVRoutePickerView.h>
+#import <AVKit/UIWindow_AVAdditions.h>
+
+#endif // TARGET_OS_XR
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h	2023-03-09 19:12:56
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitDefines.h	2023-05-24 23:37:43
@@ -38,3 +38,16 @@
 
 #define AVKIT_INIT_UNAVAILABLE	- (instancetype)init NS_UNAVAILABLE; \
 								+ (instancetype)new  NS_UNAVAILABLE;
+
+
+#if TARGET_OS_IPHONE
+#define AVKitPlatformViewClass UIView
+#else
+#define AVKitPlatformViewClass NSView
+#endif // TARGET_OS_IPHONE
+
+#if TARGET_OS_IPHONE
+#define AVKitPlatformColorClass UIColor
+#else
+#define AVKitPlatformColorClass NSColor
+#endif // TARGET_OS_IPHONE
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitTypes.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitTypes.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitTypes.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVKitTypes.h	2023-05-24 23:37:43
@@ -0,0 +1,40 @@
+/*
+	File:  AVKitTypes.h
+	
+	Framework:  AVKit
+	
+	Copyright © 2014-2023 Apple Inc. All rights reserved.
+	
+ */
+
+#import <Foundation/Foundation.h>
+
+/*!
+ @enum			AVVideoFrameAnalysisType
+ @abstract      The types of items that AVPlayerViewController analyzes in a paused video frame.
+ 
+ @constant		AVVideoFrameAnalysisTypeNone
+				Defines no items to be analyzed by the analyzer.
+ @constant		AVVideoFrameAnalysisTypeDefault
+				Defines the default set of analysis types.
+ 
+ @constant		AVVideoFrameAnalysisTypeText
+				Text that appears in a paused video frame.
+ @constant		AVVideoFrameAnalysisTypeSubject
+				Subject that the user can copy out of frame.
+ @constant      AVVideoFrameAnalysisTypeVisualSearch
+				Objects, landmarks, art, etc. recognized visually in a paused video frame.
+ @constant      AVVideoFrameAnalysisTypeMachineReadableCode
+				Machine-readable codes, such as QR codes, that appear in a paused video frame.
+ */
+typedef NS_OPTIONS(NSUInteger, AVVideoFrameAnalysisType) {
+	
+	AVVideoFrameAnalysisTypeNone	    																					 = 0,
+	AVVideoFrameAnalysisTypeDefault 																					   	 = 1 << 0,
+	
+	AVVideoFrameAnalysisTypeText	    																					 = 1 << 1,
+	AVVideoFrameAnalysisTypeSubject	    																					 = 1 << 2,
+	AVVideoFrameAnalysisTypeVisualSearch   		 																			 = 1 << 3,
+	AVVideoFrameAnalysisTypeMachineReadableCode API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(macos, tvos, watchos, macCatalyst)  = 1 << 4,
+	
+} API_AVAILABLE(ios(17.0), macos(14.0)) API_UNAVAILABLE(tvos, watchos);
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerViewController.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerViewController.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerViewController.h	2023-03-09 19:16:13
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVPlayerViewController.h	2023-05-24 02:47:46
@@ -3,26 +3,51 @@
 	
 	Framework:  AVKit
 	
-	Copyright © 2015-2022 Apple Inc. All rights reserved.
+	Copyright © 2013-2023 Apple Inc. All rights reserved.
+	
+	To report bugs, go to:  http://developer.apple.com/bugreporter/
+
  */
 
-#import <AVFoundation/AVFoundation.h>
 #import <UIKit/UIKit.h>
+#import <AVFoundation/AVFoundation.h>
+#if TARGET_OS_MACCATALYST
+#import <AVKitCore/AVKitTypes.h>
+#else
+#import <AVKit/AVKitTypes.h>
+#endif // TARGET_OS_MACCATALYST
 
+
 NS_ASSUME_NONNULL_BEGIN
 
+/*!
+	@constant	AVPlayerViewControllerSkippingBehaviorDefault
+				The default skipping behavior.
+	@constant	AVPlayerViewControllerSkippingBehaviorSkipItem
+				Skip to next/previous item (as in a playlist).
+ */
+typedef NS_ENUM(NSInteger, AVPlayerViewControllerSkippingBehavior) {
+	AVPlayerViewControllerSkippingBehaviorDefault = 0,
+	AVPlayerViewControllerSkippingBehaviorSkipItem
+} API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(macos, ios, watchos, xros);
+
+
+
 @class AVContentProposal;
 @class AVInterstitialTimeRange;
 @class AVPlaybackSpeed;
-@protocol AVPlayerViewControllerDelegate;
+
 @protocol AVPlayerViewControllerAnimationCoordinator;
+@protocol AVPlayerViewControllerDelegate;
 
-/*!
+
+// MARK: -
+
+/**
 	@class		AVPlayerViewController
 	@abstract	AVPlayerViewController is a subclass of UIViewController that can be used to display the visual content of an AVPlayer object and the standard playback controls.
  */
-
-API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(macos, ios, watchos)
+API_AVAILABLE(ios(8.0), tvos(9.0), xros(1.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos)
 @interface AVPlayerViewController : UIViewController
 
 /*!
@@ -35,31 +60,16 @@
 	@property	showsPlaybackControls
 	@abstract	Whether or not the receiver shows playback controls. Default is YES.
 	@discussion	Clients can set this property to NO when they don't want to have any playback controls on top of the visual content (e.g. for a game splash screen).
-				This property should not be used to temporarily change the visibility of the playback controls since it will create or destroy UI elements.
  */
-@property (nonatomic) BOOL showsPlaybackControls;
+@property (nonatomic) BOOL showsPlaybackControls API_UNAVAILABLE(watchos);
 
 /*!
-	@property	requiresLinearPlayback
-	@abstract	Disables certain user operations, such as scanning, skipping, and scrubbing.
-	@discussion	This can be used to enforce playback of mandatory content (such as legalese or advertisements).
+	@property	showsTimecodes
+	@abstract	Controls whether timecodes can be displayed in the playback UI when playing media with embedded timecodes. Default NO.
  */
-@property (nonatomic) BOOL requiresLinearPlayback;
+@property (nonatomic) BOOL showsTimecodes API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, xros);
 
 /*!
-	@property	appliesPreferredDisplayCriteriaAutomatically
-	@abstract	Whether or not the receiver automatically changes the screen preferredDisplayCriteria to that of the asset being played.
-	@discussion	If set, then when the receiver plays an asset full-screen the UIScreen.preferredAssetDisplayMode will be set to the preferredDisplayMode of that asset. The preferredDisplayCriteria will be reset to the defaultDisplayCriteria when full-screen playback is complete. This should not be changed during full-screen presentation unless the player or player item has been removed.
- */
-@property (nonatomic) BOOL appliesPreferredDisplayCriteriaAutomatically API_AVAILABLE(tvos(11.2));
-
-/*!
-	@property	allowsPictureInPicturePlayback
-	@abstract	Whether or not the receiver allows Picture in Picture playback. Allowed by default.
- */
-@property (nonatomic) BOOL allowsPictureInPicturePlayback API_AVAILABLE(tvos(14.0));
-
-/*!
 	@property	videoGravity
 	@abstract	A string defining how the video is displayed within an AVPlayerLayer bounds rect.
 	@discussion	Options are AVLayerVideoGravityResizeAspect, AVLayerVideoGravityResizeAspectFill and AVLayerVideoGravityResize. AVLayerVideoGravityResizeAspect is default.
@@ -70,107 +80,177 @@
 	@property	readyForDisplay
 	@abstract	Boolean indicating that the first video frame has been made ready for display for the current item of the associated AVPlayer.
  */
-@property (nonatomic, readonly, getter = isReadyForDisplay) BOOL readyForDisplay;
+@property (nonatomic, readonly, getter = isReadyForDisplay) BOOL readyForDisplay API_UNAVAILABLE(watchos, xros);
 
 /*!
+	@property	videoBounds
+	@abstract	The current size and position of the video image as displayed within the receiver's view's bounds.
+ */
+@property (nonatomic, readonly) CGRect videoBounds API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
+
+/*!
 	@property	contentOverlayView
 	@abstract	Use the content overlay view to add additional custom views between the video content and the controls.
  */
-@property (nonatomic, readonly, nullable) UIView *contentOverlayView;
+@property (nonatomic, readonly, nullable) UIView *contentOverlayView API_UNAVAILABLE(watchos);
 
 /*!
-	@property	unobscuredContentGuide
-	@abstract	A layout guide representing an area that will not be permanently obscured by fixed-position playback controls when they are visible.
+	@property	allowsPictureInPicturePlayback
+	@abstract	Whether or not the receiver allows Picture in Picture playback. Default is YES.
  */
-@property (nonatomic, readonly) UILayoutGuide *unobscuredContentGuide API_AVAILABLE(tvos(11.0));
+@property (nonatomic) BOOL allowsPictureInPicturePlayback API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
 
 /*!
- 	@property	pixelBufferAttributes
- 	@abstract	The client requirements for the visual output during playback.
- 	@discussion	Pixel buffer attribute keys are defined in <CoreVideo/CVPixelBuffer.h>
+	@property	allowsVideoFrameAnalysis
+	@abstract	When set to YES, the AVPlayerViewController will try to find objects, text and people while the media is paused. When an object is found, the user will be able to interact with it using long press to present a context menu. Default is YES.
+*/
+@property (nonatomic) BOOL allowsVideoFrameAnalysis API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(tvos, watchos, macCatalyst, xros);
+
+/*!
+	@property 	videoFrameAnalysisTypes
+	@abstract	The types of analysis AVPlayerViewController will perform on a paused video frame. The default value is AVVideoFrameAnalysisDefault.
  */
-@property (nonatomic, copy, nullable) NSDictionary<NSString *,id> *pixelBufferAttributes API_AVAILABLE(tvos(11.0));
+@property (nonatomic) AVVideoFrameAnalysisType videoFrameAnalysisTypes API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(tvos, watchos, macCatalyst, xros);
 
 /*!
-	@property	delegate
-	@abstract	The object that acts as the delegate of the AVPlayerViewController.
+	@property 	toggleLookupAction
+	@abstract 	A UIAction used for enabling the visual lookup interface.
+	@discussion	Use this action to toggle visual lookup UI. This action's attributes will be set to disabled when there is no visual lookup data available or when the media is playing. Make sure to 	update your user interface to reflect this change. When the lookup UI is toggled, the state property is set to UIMenuElementStateOn; otherwise it will be set to UIMenuElementStateOff.
  */
-@property (nonatomic, weak, nullable) id <AVPlayerViewControllerDelegate> delegate;
+@property (nonatomic, readonly) UIAction *toggleLookupAction API_AVAILABLE(ios(17.0)) API_UNAVAILABLE(tvos, watchos, macCatalyst, xros);
 
-@end
+/*!
+	@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(tvos, watchos);
 
-@interface AVPlayerViewController (AVPlayerViewControllerSubtitleOptions)
+/*!
+	@property	updatesNowPlayingInfoCenter
+	@abstract	Whether or not the now playing info center should be updated. Default is YES.
+ */
+@property (nonatomic) BOOL updatesNowPlayingInfoCenter API_AVAILABLE(ios(10.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
-	@property	allowedSubtitleOptionLanguages
-	@abstract	An optional array of BCP 47 language codes to filter the subtitle options presented to the user.
-	@discussion	When this property to nil (the default), all available subtitle options are presented. The "Auto" subtitle option is only available when this property is nil, and full subtitles are not required (see requiresFullSubtitles).
+	@property	entersFullScreenWhenPlaybackBegins
+	@abstract	Whether or not the receiver automatically enters full screen when the play button is tapped. Default is NO.
+	@discussion	If YES, the receiver will show a user interface tailored to this behavior.
  */
-@property (nonatomic, copy, nullable) NSArray <NSString *> *allowedSubtitleOptionLanguages; /* BCP47 language codes; nil allows all languages */
+@property (nonatomic) BOOL entersFullScreenWhenPlaybackBegins API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
-	@property	requiresFullSubtitles
-	@abstract	Determines whether the user is given the option to turn off subtitles.
-	@discussion	When set to YES, the subtitle options will not present "Off" or "Auto" as options, and subtitles will always be displayed (if they are available). The default is NO.
+	@property	exitsFullScreenWhenPlaybackEnds
+	@abstract	Whether or not the receiver automatically exits full screen when playback ends. Default is NO.
+	@discussion	If multiple player items have been enqueued, the receiver exits fullscreen once no more items are remaining in the queue.
  */
-@property (nonatomic) BOOL requiresFullSubtitles;
+@property (nonatomic) BOOL exitsFullScreenWhenPlaybackEnds API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos, watchos);
 
-@end
+/*!
+	@property	requiresLinearPlayback
+	@abstract	Disables certain user operations, such as scanning, skipping, and scrubbing.
+	@discussion	This can be used to enforce playback of mandatory content (such as legalese or advertisements).
+ */
+@property (nonatomic) BOOL requiresLinearPlayback API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos);
 
+/*!
+	@property	appliesPreferredDisplayCriteriaAutomatically
+	@abstract	Whether or not the receiver automatically communicates the preferredDisplayCriteria of the asset being played to the AVDisplayManager.
+	@discussion	If set, then when the receiver plays an asset full-screen the screen's display criteria will be set to the preferred display criteria of that asset. The preferredDisplayCriteria will be reset to the default when full-screen playback is complete. This should not be changed during full-screen presentation unless the player or player item has been removed. This should not be used in multiple window scenes simultaneously.
+ */
+@property (nonatomic) BOOL appliesPreferredDisplayCriteriaAutomatically API_AVAILABLE(tvos(11.2), xros(1.0)) API_UNAVAILABLE(ios, watchos);
 
 /*!
-	@constant	AVPlayerViewControllerSkippingBehaviorDefault
-				The default skipping behavior.
-	@constant	AVPlayerViewControllerSkippingBehaviorSkipItem
-				Skip to next/previous item (as in a playlist).
+	@property	pixelBufferAttributes
+	@abstract	The client requirements for the visual output during playback.
+	@discussion	Pixel buffer attribute keys are defined in <CoreVideo/CVPixelBuffer.h>
  */
-typedef NS_ENUM(NSInteger, AVPlayerViewControllerSkippingBehavior) {
-	AVPlayerViewControllerSkippingBehaviorDefault = 0,
-	AVPlayerViewControllerSkippingBehaviorSkipItem
-};
+@property (nonatomic, copy, nullable) NSDictionary<NSString *,id> *pixelBufferAttributes API_AVAILABLE(ios(9.0), tvos(11.0)) API_UNAVAILABLE(watchos, xros);
 
+/*!
+	@property	delegate
+	@abstract	The receiver's delegate.
+ */
+@property (nonatomic, weak, nullable) id <AVPlayerViewControllerDelegate> delegate API_AVAILABLE(ios(9.0)) API_UNAVAILABLE(watchos);
 
-@interface AVPlayerViewController (AVPlayerViewControllerSkippingBehavior)
+/*!
+	@property	speeds
+	@abstract	A list of user selectable playback speeds to be shown in the playback speed control.
+	@discussion	By default this property will be set to the systemDefaultSpeeds class property. Setting this property to an empty list will hide the playback speed selection UI.
+				To set the currently selected playback speed programmatically, either set the defaultRate on the AVPlayer associated with this view controller or use the selectSpeed: method on AVPlayerViewController.
+ */
+@property (nonatomic, copy) NSArray<AVPlaybackSpeed *> *speeds API_AVAILABLE(ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos);
 
 /*!
+	@property	selectedSpeed
+	@abstract	The currently selected playback speed.
+	@discussion	Changes to the associated AVPlayer's defaultRate will be reflected in this property and vice versa. If the associated AVPlayer's defaultRate is set to a value that does not match a speed in the speeds list property, the selected speed will be nil.
+ */
+@property (nonatomic, readonly, nullable) AVPlaybackSpeed *selectedSpeed API_AVAILABLE(ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@property	selectSpeed
+	@param		speed
+				The playback speed to select.
+	@abstract	Sets the input AVPlaybackSpeed as the selected speed.
+	@discussion	Calls to selectSpeed with AVPlaybackSpeeds not contained within the speeds property array will be ignored.
+ */
+- (void)selectSpeed:(AVPlaybackSpeed *)speed API_AVAILABLE(ios(16.0), tvos(16.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@property	unobscuredContentGuide
+	@abstract	A layout guide representing an area that will not be permanently obscured by fixed-position playback controls when they are visible.
+ */
+@property (nonatomic, readonly) UILayoutGuide *unobscuredContentGuide API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, xros);
+
+/*!
+	@property	allowedSubtitleOptionLanguages
+	@abstract	An optional array of BCP 47 language codes to filter the subtitle options presented to the user.
+	@discussion	When this property to nil (the default), all available subtitle options are presented. The "Auto" subtitle option is only available when this property is nil, and full subtitles are not required (see requiresFullSubtitles).
+ */
+@property (nonatomic, copy, nullable) NSArray <NSString *> *allowedSubtitleOptionLanguages API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, watchos, xros); /* BCP47 language codes; nil allows all languages */
+
+/*!
+	@property	requiresFullSubtitles
+	@abstract	Determines whether the user is given the option to turn off subtitles.
+	@discussion	When set to YES, the subtitle options will not present "Off" or "Auto" as options, and subtitles will always be displayed (if they are available). The default is NO.
+ */
+@property (nonatomic) BOOL requiresFullSubtitles API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, watchos, xros);
+
+/*!
 	@property	skippingBehavior
 	@abstract	Specifies the behavior triggered by skipping gestures. AVPlayerViewControllerSkippingBehaviorDefault is the default value.
 	@discussion	Use this property to override the default skipping behavior.
  */
-@property (nonatomic) AVPlayerViewControllerSkippingBehavior skippingBehavior API_AVAILABLE(tvos(10.0));
+@property (nonatomic) AVPlayerViewControllerSkippingBehavior skippingBehavior API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@property	skipForwardEnabled
 	@abstract	Indicates whether forward-skipping is available.
 	@discussion	This property affects the appearance of the forward-skipping indicator. The behavior associated with forward-skipping is identified by the skippingBehavior property.
  */
-@property (nonatomic, getter = isSkipForwardEnabled) BOOL skipForwardEnabled API_AVAILABLE(tvos(10.0));
+@property (nonatomic, getter = isSkipForwardEnabled) BOOL skipForwardEnabled API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@property	skipBackwardEnabled
 	@abstract	Indicates whether backward-skipping is available.
 	@discussion	This property affects the appearance of the backward-skipping indicator. The behavior associated with backward-skipping is identified by the skippingBehavior property.
  */
-@property (nonatomic, getter = isSkipBackwardEnabled) BOOL skipBackwardEnabled API_AVAILABLE(tvos(10.0));
+@property (nonatomic, getter = isSkipBackwardEnabled) BOOL skipBackwardEnabled API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, xros);
 
-@end
-
-
-@interface AVPlayerViewController (AVPlayerViewControllerControls)
-
 /*!
 	@property	playbackControlsIncludeTransportBar
 	@abstract	Whether or not the receiver shows the transport bar and related controls during user interaction. Default is YES.
 	@discussion	Clients can set this property to NO, and set showsPlaybackControls to YES, to selectively prevent the transport bar from being displayed duration user interaction. Changing the value of this property does not immediately change the visiblity of the transport bar.
  */
-@property (nonatomic) BOOL playbackControlsIncludeTransportBar API_AVAILABLE(tvos(11.0));
+@property (nonatomic) BOOL playbackControlsIncludeTransportBar API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@property	playbackControlsIncludeInfoViews
 	@abstract	Whether or not the receiver shows the views for video metadata, navigation markers, and playback settings when requested by the user. Default is YES.
 	@discussion	Clients can set this property to NO, and showsPlaybackControls to YES, to selectively prevent the information and setting panels from being displayed. Changing the value of this property does not immediately change the visiblity of the info views.
  */
-@property (nonatomic) BOOL playbackControlsIncludeInfoViews API_AVAILABLE(tvos(11.0));
+@property (nonatomic) BOOL playbackControlsIncludeInfoViews API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, xros);
 
 /*!
 	@property	transportBarIncludesTitleView
@@ -179,96 +259,147 @@
 	The title view requires metadata to be embedded in the media asset, or provided using externalMetadata property of AVPlayerItem. Supported keys are: AVMetadataCommonIdentifierTitle for title, AVMetadataIdentifieriTunesMetadataTrackSubTitle for subtitle.
 		See also showsPlaybackControls, and playbackControlsIncludeTransportBar.
  */
-@property (nonatomic) BOOL transportBarIncludesTitleView API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(macos, ios, watchos);
+@property (nonatomic) BOOL transportBarIncludesTitleView API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
-	@property	customInfoViewController
-	@abstract	A view controller to be displayed alongside system-provided info and settings panels.
-	@discussion	Use this property to provide client-specific content and controls in an additional info view. Implement -preferredContentSize to provide the desired view size.
- */
-@property (nonatomic, strong, nullable) UIViewController *customInfoViewController API_DEPRECATED_WITH_REPLACEMENT("Use customInfoViewControllers", tvos(11.0, 15.0));
-
-/*!
-	@property	customInfoViewControllers
-	@abstract	An array of view controllers to be displayed as tabs.
-	@discussion	Use this property to provide tabs for client-specific content in the transport bar. The order of the view controllers in the array is also the order in which they are inserted in the tab bar. The display tab titles will be taken from the view controllers. Implement -preferredContentSize to provide the desired view size (subject to maximum height constraints).
- */
-@property (nonatomic, copy) NSArray <UIViewController *> *customInfoViewControllers API_AVAILABLE(tvos(15.0));
-
-/*!
 	@property	customOverlayViewController
 	@abstract	A view controller containing custom, possibly interactive content, to be presented over the player view controller upon user request.
 	@discussion	The custom overlay view controller can be accessed by swiping up during playback when the transport bar is hidden, or in response to selecting a button when the transport bar is visible. Clients should provide a view controller here rather than installing their own swipe gesture recognizer.
  */
-@property (nonatomic, strong, nullable) UIViewController *customOverlayViewController API_AVAILABLE(tvos(13.0));
+@property (nonatomic, strong, nullable) UIViewController *customOverlayViewController API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@property	transportBarCustomMenuItems
 	@abstract	An array of menu elements to be displayed in addition to standard built-in controls.
 	@discussion	Use this property to provide client-specific controls above the transport bar. Only UIMenu and UIAction instance types are supported. Nested UIMenus are not supported. Unsupported types will be ignored.
  */
-@property (nonatomic, copy) NSArray<__kindof UIMenuElement *> *transportBarCustomMenuItems API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(macos, ios, watchos);
+@property (nonatomic, readwrite, copy) NSArray<__kindof UIMenuElement *> *transportBarCustomMenuItems API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, xros);
 
 /*!
+	@property	requiresMonoscopicViewingMode
+	@abstract	Whether or not monoscopic is the only permitted viewing mode. Default is NO.
+ */
+@property (nonatomic) BOOL requiresMonoscopicViewingMode API_AVAILABLE(xros(1.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst);
+
+
+
+// MARK: - Contextual Actions
+
+/*!
 	@property	contextualActions
-	@abstract	The array of action controls displayed during playback. Defaults to none.
-	@discussion	Use this property to present one or more action controls during playback (for example, "Skip Intro").
-		Actions are presented only when transport bar is not visible, allowing users to interract either with transport bar or contextual action controls.
-		The title and, optionally, the image of each action will be displayed by a control. The action handler will be called when the user selects the control.
+	@abstract	An array of action controls displayed during playback. Defaults to none.
+	@discussion	Use this property to present one or more action controls during playback (for example, "Skip Intro"). The title and optionally the image of each action will be displayed by a control.
+				The action handler will be called when the user selects the control.
  */
-@property (nonatomic, copy) NSArray<UIAction *> *contextualActions API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(macos, ios, watchos);
+@property (nonatomic, copy) NSArray<UIAction *> *contextualActions API_AVAILABLE(tvos(15.0), xros(1.0)) API_UNAVAILABLE(ios, watchos, macCatalyst);
 
 /*!
- @property	infoViewActions
- @abstract	Actions to be displayed in the Info content view.
- @discussion Use this property to provide up to 2 custom action controls displayed in the Info content view. Default value is an array containing single "Play From Beginning" action.
+	@property	contextualActionsInfoView
+	@abstract	A view shown adjacent to the contextual actions suitable for showing related information.
+	@discussion	Use this view to add additional metadata, information and/or artwork as subviews.
  */
-@property (nonatomic, copy) NSArray<UIAction *> *infoViewActions API_AVAILABLE(tvos(15.0)) API_UNAVAILABLE(macos, ios, watchos);
+@property (nonatomic, readonly) UIView *contextualActionsInfoView API_AVAILABLE(xros(1.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst);
 
-/**
- @property	speeds
- @abstract	A list of playback speeds to be shown in the playback speed control.
- @discussion	By default this property will be empty for tvOS clients. Setting this property to an empty list will hide the playback speed control.
-			To set the currently selected playback speed programmatically, either set the defaultRate on the AVPlayer associated with this view controller or use the selectSpeed: method on AVPlayerViewController.
+/*!
+	@property	contextualActionsPreviewImage
+	@abstract	An image to be shown alongside the contextual actions.
+	@discussion Use this to enhance the action with more context, e.g. for a "Jump back" button, show a preview frame of where in the movie the action will skip to.
+				This image is only shown if `AVPlayerViewController.contextualActions` contains exactly one action.
+*/
+@property (nonatomic, nullable, copy) UIImage *contextualActionsPreviewImage API_AVAILABLE(xros(1.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst);
+
+
+// MARK: - Info Panel Customization
+
+/*!
+	@property	customInfoViewControllers
+	@abstract	An array of view controllers to be displayed as tabs.
+	@discussion	Use this property to provide tabs for client-specific content in the playback UI. The order of the view controllers in the array is also the order in which they are inserted in the tab bar. The display tab titles will be taken from the view controllers. Implement -preferredContentSize to provide the desired view size (subject to maximum height constraints).
  */
-@property (nonatomic, copy) NSArray<AVPlaybackSpeed *> *speeds API_AVAILABLE(tvos(16.0), ios(16.0)) API_UNAVAILABLE(macos, watchos);
+@property (nonatomic, copy) NSArray <UIViewController *> *customInfoViewControllers API_AVAILABLE(tvos(15.0), xros(1.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, macCatalyst);
 
 /*!
- @property	selectedSpeed
- @abstract	The currently selected playback speed.
- @discussion	Changes to the associated AVPlayer's defaultRate will be reflected in this property and vice versa. If the associated AVPlayer's defaultRate is set to a value that does not match a speed in the speeds property, the selected speed will be set to nil.
+	@property	infoViewActions
+	@abstract	Actions to be displayed in the content info view.
+	@discussion	Use this property to provide up to 2 custom action controls displayed in the content info view. Default value is an array containing a single "Play From Beginning" action.
  */
-@property (nonatomic, readonly, nullable) AVPlaybackSpeed *selectedSpeed API_AVAILABLE(tvos(16.0), ios(16.0)) API_UNAVAILABLE(macos, watchos);
+@property (nonatomic, copy, null_resettable) NSArray<UIAction *> *infoViewActions API_AVAILABLE(tvos(15.0), xros(1.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, macCatalyst);
 
 
+// MARK: - Trim
+
 /*!
- @property	selectSpeed
- @param		speed
-			The playback speed to select.
- @abstract	Sets the input AVPlaybackSpeed as the selected speed.
- @discussion	Calls to selectSpeed: with AVPlaybackSpeeds not contained within the speeds property array will be ignored.
+	@property   canBeginTrimming
+	@abstract   Whether or not the current media can be trimmed.
+	@discussion This may return `false`, for example if the underlying asset is delivered via HLS, or if the content is protected.
+				Consult this property to enable / disable the control which initiates trimming.
  */
-- (void)selectSpeed:(AVPlaybackSpeed *)speed API_AVAILABLE(tvos(16.0), ios(16.0)) API_UNAVAILABLE(macos, watchos);
+@property (readonly) BOOL canBeginTrimming API_AVAILABLE(xros(1.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst);
 
+/*!
+	@method     beginTrimmingWithCompletionHandler:
+	@param      handler
+				A completion handler that is executed when the user exits trim mode.
+				The boolean passed to the completion handler indicates whether the user completed the trim operation, or if they cancelled.
+	@abstract   Sets the controls panel into trimming mode and blocks until the user selects either the `Trim` or the `Cancel` button.
+	@discussion Once trimming is completed the trimmed range can be accessed via the `forwardPlaybackEndTime` and `reversePlaybackEndTime` properties on the `AVPlayerItem`.
+				Documentation on how to export a new copy of the asset via `AVAssetExportSession` after trimming can be found at https://developer.apple.com.
+ */
+- (void)beginTrimmingWithCompletionHandler:(nullable void (^)(BOOL success))handler API_AVAILABLE(xros(1.0)) API_UNAVAILABLE(ios, tvos, watchos, macCatalyst);
+
 @end
 
 
+// MARK: -
+
 /*!
 	@protocol	AVPlayerViewControllerDelegate
 	@abstract	A protocol for delegates of AVPlayerViewController.
  */
-
+API_AVAILABLE(ios(9.0), tvos(9.0), xros(1.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos)
 @protocol AVPlayerViewControllerDelegate <NSObject>
 @optional
 
 /*!
+	@method		playerViewController:willBeginFullScreenPresentationWithAnimationCoordinator:
+	@param		playerViewController
+				The player view controller.
+	@param		coordinator
+				An object conforming to UIViewControllerTransitionCoordinator.
+	@abstract	Informs the delegate that AVPlayerViewController is about to start displaying its contents full screen.
+	@discussion	This method will not be called if a playerViewController is embedded inside a view controller that is being presented. If the receiver is embedded in a parent view controller, its content will be presented in a new full screen view controller and perhaps in a new window. Use the coordinator to determine whether the playerViewController or its full screen counterpart is being transitioned. Transitions can be interrupted -- use a completion block of one of the coordinator's animation methods to determine whether it has completed.
+ */
+- (void)playerViewController:(AVPlayerViewController *)playerViewController willBeginFullScreenPresentationWithAnimationCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(tvos, watchos);
+
+/*!
+	@method		playerViewController:willEndFullScreenPresentationWithAnimationCoordinator:
+	@param		playerViewController
+				The player view controller.
+	@param		coordinator
+				An object conforming to UIViewControllerTransitionCoordinator.
+	@abstract	Informs the delegate that AVPlayerViewController is about to stop displaying its contents full screen.
+	@discussion	See the discussion of -[AVPlayerViewControllerDelegatePrivate playerViewController:willBeginFullScreenPresentationWithAnimationCoordinator:].
+ */
+- (void)playerViewController:(AVPlayerViewController *)playerViewController willEndFullScreenPresentationWithAnimationCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(tvos, watchos);
+
+/*!
+	@method		playerViewController:restoreUserInterfaceForFullScreenExitWithCompletionHandler:
+	@param		playerViewController
+				The player view controller.
+	@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)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForFullScreenExitWithCompletionHandler:(void (^)(BOOL restored))completionHandler API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(tvos, watchos);
+
+/*!
 	@method		playerViewControllerShouldDismiss:
 	@param		playerViewController
 				The player view controller.
 	@abstract	The delegate can implement this method to be notified when the player view controller is about to be dismissed.
 	@discussion	The player view controller will dismiss itself (with animation) if allowed and if it is possible to do so automatically. If the player view controller is embedded in another view, it may be necessary for the delegate to implement dismissal.
  */
-- (BOOL)playerViewControllerShouldDismiss:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0));
+- (BOOL)playerViewControllerShouldDismiss:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@method		playerViewControllerWillBeginDismissalTransition:
@@ -276,7 +407,7 @@
 				The player view controller.
 	@abstract	The delegate can implement this method to be notified when the player view controller is being dismissed and is about to start the dismissal transition.
  */
-- (void)playerViewControllerWillBeginDismissalTransition:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0));
+- (void)playerViewControllerWillBeginDismissalTransition:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
 	@method		playerViewControllerDidEndDismissalTransition:
@@ -284,9 +415,69 @@
 				The player view controller.
 	@abstract	The delegate can implement this method to be notified when the player view controller is being dismissed and has completed the the dismissal transition.
  */
-- (void)playerViewControllerDidEndDismissalTransition:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0));
+- (void)playerViewControllerDidEndDismissalTransition:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 /*!
+	@method		playerViewControllerWillStartPictureInPicture:
+	@param		playerViewController
+				The player view controller.
+	@abstract	Delegate can implement this method to be notified when Picture in Picture will start.
+ */
+- (void)playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewControllerDidStartPictureInPicture:
+	@param		playerViewController
+				The player view controller.
+	@abstract	Delegate can implement this method to be notified when Picture in Picture did start.
+ */
+- (void)playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewController:failedToStartPictureInPictureWithError:
+	@param		playerViewController
+				The player view controller.
+	@param		error
+				An error describing why it failed.
+	@abstract	Delegate can implement this method to be notified when Picture in Picture failed to start.
+ */
+- (void)playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewControllerWillStopPictureInPicture:
+	@param		playerViewController
+				The player view controller.
+	@abstract	Delegate can implement this method to be notified when Picture in Picture will stop.
+ */
+- (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewControllerDidStopPictureInPicture:
+	@param		playerViewController
+				The player view controller.
+	@abstract	Delegate can implement this method to be notified when Picture in Picture did stop.
+ */
+- (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:
+	@param		playerViewController
+				The player view controller.
+	@abstract	Delegate can implement this method and return NO to prevent player view controller from automatically being dismissed when Picture in Picture starts.
+ */
+- (BOOL)playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method		playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:
+	@param		playerViewController
+				The player view controller.
+	@param		completionHandler
+				The completion handler the delegate needs to call after restore.
+	@abstract	Delegate can implement this method to restore the user interface before Picture in Picture stops.
+ */
+- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler API_AVAILABLE(ios(9.0), tvos(14.0)) API_UNAVAILABLE(watchos);
+
+/*!
 	@method		playerViewController:willPresentInterstitialTimeRange:
 	@param		playerViewController
 				The player view controller.
@@ -294,7 +485,7 @@
 				The interstitial time range.
 	@abstract	The delegate can implement this method to be notified when the player view controller is about to present interstitial content to the user.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController willPresentInterstitialTimeRange:(AVInterstitialTimeRange *)interstitial;
+- (void)playerViewController:(AVPlayerViewController *)playerViewController willPresentInterstitialTimeRange:(AVInterstitialTimeRange *)interstitial API_AVAILABLE(ios(16.0), tvos(9.0)) API_UNAVAILABLE(watchos, macCatalyst);
 
 /*!
 	@method		playerViewController:didPresentInterstitialTimeRange:
@@ -304,7 +495,7 @@
 				The interstitial time range.
 	@abstract	The delegate can implement this method to be notified when the player view controller has finished presenting interstitial content.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController didPresentInterstitialTimeRange:(AVInterstitialTimeRange *)interstitial;
+- (void)playerViewController:(AVPlayerViewController *)playerViewController didPresentInterstitialTimeRange:(AVInterstitialTimeRange *)interstitial API_AVAILABLE(ios(16.0), tvos(9.0)) API_UNAVAILABLE(watchos, macCatalyst);
 
 /*!
 	@method		playerViewController:willResumePlaybackAfterUserNavigatedFromTime:toTime:
@@ -317,7 +508,7 @@
 	@abstract	The delegate can implement this method to be notified when the user has skipped, scrubbed, or otherwise navigated to a new time, and playback is about to start at the new time.
 	@discussion	Compare with AVPlayerItemTimeJumpedNotification; this delegate method is delivered for (and only for) user-initiated changes to the playback time. If the user skips/scrubs several times before resuming playback, this method is only called once.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime;
+- (void)playerViewController:(AVPlayerViewController *)playerViewController willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:timeToSeekAfterUserNavigatedFromTime:toTime:
@@ -330,7 +521,7 @@
 	@abstract	The delegate can implement this method to be notified when the user has skipped, scrubbed, or otherwise navigated to a new time, and wants to resume playback at the target time.
 	@discussion	This delegate method is delivered for (and only for) user-initiated changes to the playback time. If the user skips/scrubs several times before resuming playback, this method is only called once. This method should not be used to disable scrubbing; use the requiresLinearPlayback property of the AVPlayerViewController instead.
  */
-- (CMTime)playerViewController:(AVPlayerViewController *)playerViewController timeToSeekAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime API_AVAILABLE(tvos(10.0));
+- (CMTime)playerViewController:(AVPlayerViewController *)playerViewController timeToSeekAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:didSelectMediaSelectionOption:inMediaSelectionGroup:
@@ -343,7 +534,7 @@
 	@abstract	The delegate can implement this method to be notified when the user has selected a option from a media selection group or deselected all of the options in the group.
 	@discussion	The media selection option will be nil when subtitles are turned off.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController didSelectMediaSelectionOption:(nullable AVMediaSelectionOption *)mediaSelectionOption inMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup;
+- (void)playerViewController:(AVPlayerViewController *)playerViewController didSelectMediaSelectionOption:(nullable AVMediaSelectionOption *)mediaSelectionOption inMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:didSelectExternalSubtitleOptionLanguage:
@@ -354,7 +545,7 @@
 	@abstract	The delegate can implement this method to be notified when the user has selected a specific subtitle option.
 	@discussion	This method is only called for external subtitle languages specified by the externalSubtitleOptionLanguages property of AVPlayerItem (see AVKit/AVPlayerItem.h). For all other options, playerViewController:didSelectMediaSelectionOption:inMediaSelectionGroup: will be called instead. The delegate is responsible for displaying the corresponding subtitles.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController didSelectExternalSubtitleOptionLanguage:(NSString *)language NS_SWIFT_UNAVAILABLE("External subtitle options are not supported");
+- (void)playerViewController:(AVPlayerViewController *)playerViewController didSelectExternalSubtitleOptionLanguage:(NSString *)language API_AVAILABLE(tvos(9.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros) NS_SWIFT_UNAVAILABLE("External subtitle options are not supported");
 
 /*!
 	@method		skipToNextItemForPlayerViewController:
@@ -362,7 +553,7 @@
 				The player view controller.
 	@discussion	Clients that request non-default skipping behavior should implement this method. The delegate should update the playerViewController’s player to play the next player item.
  */
-- (void)skipToNextItemForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(10.0));
+- (void)skipToNextItemForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		skipToPreviousItemForPlayerViewController:
@@ -370,70 +561,70 @@
 				The player view controller.
 	@discussion	The delegate should update the playerViewController’s player to play the previous player item.
  */
-- (void)skipToPreviousItemForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(10.0));
+- (void)skipToPreviousItemForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:skipToNextChannel:
 	@param		playerViewController
- 				The player view controller.
+				The player view controller.
 	@param		completion
- 				A block that should be called to dismiss the channel interstice.
+				A block that should be called to dismiss the channel interstice.
 	@abstract	Should change the player item to reflect the content of the next channel, and call the completion block when ready.
 	@discussion	Each call to this method should advance one channel relative to the previous request, even if the prior request has not yet completed.
 */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController skipToNextChannel:(void (^)(BOOL success))completion API_AVAILABLE(tvos(13.0)) NS_SWIFT_ASYNC_NAME(playerViewControllerSkipToNextChannel(_:));
+- (void)playerViewController:(AVPlayerViewController *)playerViewController skipToNextChannel:(void (^)(BOOL success))completion API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros) NS_SWIFT_ASYNC_NAME(playerViewControllerSkipToNextChannel(_:));
 
 /*!
 	@method		playerViewController:skipToPreviousChannel:
 	@param		playerViewController
- 				The player view controller.
+				The player view controller.
 	@param		completion
- 				A block that should be called to dismiss the channel interstice.
+				A block that should be called to dismiss the channel interstice.
 	@abstract	Should change the player item to reflect the content of the previous channel, and call the completion block when ready.
 	@discussion	Each call to this method should advance one channel relative to the previous request, even if the prior request has not yet completed.
 */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController skipToPreviousChannel:(void (^)(BOOL success))completion API_AVAILABLE(tvos(13.0)) NS_SWIFT_ASYNC_NAME(playerViewControllerSkipToPreviousChannel(_:));
+- (void)playerViewController:(AVPlayerViewController *)playerViewController skipToPreviousChannel:(void (^)(BOOL success))completion API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros) NS_SWIFT_ASYNC_NAME(playerViewControllerSkipToPreviousChannel(_:));
 
 /*!
 	@method		nextChannelInterstitialViewControllerForPlayerViewController:
 	@param		playerViewController
- 				The player view controller.
+				The player view controller.
 	@return		A view controller describing the channel that will be displayed; it will fill the screen until the new channel is ready.
 	@abstract	Clients should provide a view controller describing the layout of the channel interstice.
 	@discussion This method will be called when the user initiates, but has not yet committed, a change in channel. Clients must also implement playerViewController:skipToNextChannel:. This method may be called while a previous channel interstice is visible (on screen, or transitioning).
  */
-- (UIViewController *)nextChannelInterstitialViewControllerForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(13.0));
+- (UIViewController *)nextChannelInterstitialViewControllerForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		previousChannelInterstitialViewControllerForPlayerViewController:
 	@param		playerViewController
- 				The player view controller.
+				The player view controller.
 	@return		A view controller describing the channel that will be displayed; it will fill the screen until the new channel is ready.
 	@abstract	Clients should provide a view controller describing the layout of the channel interstice.
 	@discussion This method will be called when the user initiates, but has not yet committed, a change in channel. Clients must also implement playerViewController:skipToPreviousChannel:. This method may be called while a previous channel interstice is visible (on screen, or transitioning).
  */
-- (UIViewController *)previousChannelInterstitialViewControllerForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(13.0));
+- (UIViewController *)previousChannelInterstitialViewControllerForPlayerViewController:(AVPlayerViewController *)playerViewController API_AVAILABLE(tvos(13.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:shouldPresentContentProposal:
 	@abstract	Should return YES, if implemented, to allow presentation of the content proposal.
 	@discussion	The delegate may wish to create a custom view controller when this is called.
  */
-- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldPresentContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0));
+- (BOOL)playerViewController:(AVPlayerViewController *)playerViewController shouldPresentContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:didAcceptContentProposal:
 	@abstract	The delegate should replace the current player item with the next item.
 	@discussion	Clients must implement this method when setting the nextContentProposal property of AVPlayerViewController. The delegate should create a new AVPlayerItem and update the AVPlayer or AVQueuePlayer.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController didAcceptContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0));
+- (void)playerViewController:(AVPlayerViewController *)playerViewController didAcceptContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:didRejectContentProposal:
 	@abstract	The delegate should react to the user rejecting the content proposal, typically by dismissing the player view controller.
 	@discussion	If the client does not implement this method, the player view controller will be dismissed.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController didRejectContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0));
+- (void)playerViewController:(AVPlayerViewController *)playerViewController didRejectContentProposal:(AVContentProposal *)proposal API_AVAILABLE(tvos(10.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
 /*!
 	@method		playerViewController:willTransitionToVisibilityOfTransportBar:withAnimationCoordinator:
@@ -446,77 +637,34 @@
 				An object conforming to AVPlayerViewControllerAnimationCoordinator.
 	@discussion	Use the animation coordinator to synchronize animations with transport bar visibility.
  */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController willTransitionToVisibilityOfTransportBar:(BOOL)visible withAnimationCoordinator:(id<AVPlayerViewControllerAnimationCoordinator>)coordinator API_AVAILABLE(tvos(11.0));
+- (void)playerViewController:(AVPlayerViewController *)playerViewController willTransitionToVisibilityOfTransportBar:(BOOL)visible withAnimationCoordinator:(id<AVPlayerViewControllerAnimationCoordinator>)coordinator API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, watchos, macCatalyst, xros);
 
-/*!
-	@method		playerViewControllerWillStartPictureInPicture:
-	@param		playerViewController
-				The player view controller.
-	@abstract	Delegate can implement this method to be notified when Picture in Picture will start.
- */
-- (void)playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController;
+@end
 
-/*!
-	@method		playerViewControllerDidStartPictureInPicture:
-	@param		playerViewController
-				The player view controller.
-	@abstract	Delegate can implement this method to be notified when Picture in Picture did start.
- */
-- (void)playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController;
 
-/*!
-	@method		playerViewController:failedToStartPictureInPictureWithError:
-	@param		playerViewController
-				The player view controller.
-	@param		error
-				An error describing why it failed.
-	@abstract	Delegate can implement this method to be notified when Picture in Picture failed to start.
- */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error;
+// MARK: -
 
+API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios, xros) API_UNAVAILABLE(watchos)
+@protocol AVPlayerViewControllerAnimationCoordinator <NSObject>
 /*!
-	@method		playerViewControllerWillStopPictureInPicture:
-	@param		playerViewController
-				The player view controller.
-	@abstract	Delegate can implement this method to be notified when Picture in Picture will stop.
+	@method		addCoordinatedAnimations:completion:
+	@abstract	Add animations to be performed alongside the playback controls visibility animation.
  */
-- (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController;
+- (void)addCoordinatedAnimations:(void (^_Nullable)(void))animations completion:(void (^_Nullable)(BOOL finished))completion;
 
-/*!
-	@method		playerViewControllerDidStopPictureInPicture:
-	@param		playerViewController
-				The player view controller.
-	@abstract	Delegate can implement this method to be notified when Picture in Picture did stop.
- */
-- (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController;
+@end
 
-/*!
-	@method		playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:
-	@param		playerViewController
-				The player view controller.
-	@abstract	Delegate can implement this method and return NO to prevent player view controller from automatically being dismissed when Picture in Picture starts.
- */
-- (BOOL)playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController;
 
-/*!
-	@method		playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:
-	@param		playerViewController
-				The player view controller.
-	@param		completionHandler
-				The completion handler the delegate needs to call after restore.
-	@abstract	Delegate can implement this method to restore the user interface before Picture in Picture stops.
- */
-- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;
+// MARK: - Deprecated APIs
 
+@interface AVPlayerViewController (Deprecated)
 
-@end
-
-@protocol AVPlayerViewControllerAnimationCoordinator <NSObject>
 /*!
-	@method		addCoordinatedAnimations:completion:
-	@abstract	Add animations to be performed alongside the playback controls visibility animation.
+	@property	customInfoViewController
+	@abstract	A view controller to be displayed alongside system-provided info and settings panels.
+	@discussion	Use this property to provide client-specific content and controls in an additional info view. Implement -preferredContentSize to provide the desired view size.
  */
-- (void)addCoordinatedAnimations:(void (^_Nullable)(void))animations completion:(void (^_Nullable)(BOOL finished))completion API_AVAILABLE(tvos(11.0));
+@property (nonatomic, strong, nullable) UIViewController *customInfoViewController API_DEPRECATED_WITH_REPLACEMENT("Use customInfoViewControllers", tvos(11.0, 15.0)) API_UNAVAILABLE(ios, watchos, xros);
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h	2023-03-09 19:12:56
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/AVRoutePickerView.h	2023-05-24 02:55:27
@@ -1,92 +1,178 @@
 /*
 	File:  AVRoutePickerView.h
- 
+	
 	Framework:  AVKit
- 
-	Copyright © 2017 Apple Inc. All rights reserved.
- 
+	
+	Copyright © 2013-2023 Apple Inc. All rights reserved.
+	
+	To report bugs, go to:  http://developer.apple.com/bugreporter/
+
  */
 
+#import <AVFoundation/AVFoundation.h>
+
+#import <AVKit/AVKitDefines.h>
+#if TARGET_OS_IPHONE
 #import <UIKit/UIKit.h>
+#else
+#import <Cocoa/Cocoa.h>
+#endif // TARGET_OS_IPHONE
 
-@class AVCustomRoutingController;
-@protocol AVRoutePickerViewDelegate;
 
+#ifndef AVKitPlatformViewClass
+#if TARGET_OS_IPHONE
+#define AVKitPlatformViewClass UIView
+#else
+#define AVKitPlatformViewClass NSView
+#endif // TARGET_OS_IPHONE
+#endif // AVKitPlatformViewClass
+
+#ifndef AVKitPlatformColorClass
+#if TARGET_OS_IPHONE
+#define AVKitPlatformColorClass UIColor
+#else
+#define AVKitPlatformColorClass NSColor
+#endif // TARGET_OS_IPHONE
+#endif // AVKitPlatformColorClass
+
+
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
-	@class		AVRoutePickerView
-	@abstract	AVRoutePickerView is a subclass of UIView that displays controls for picking playback routes.
-	@discussion	Media from AVPlayer or AVSampleBufferAudioRenderer can be routed to compatible AirPlay destinations.
+@protocol AVRoutePickerViewDelegate;
+
+@class AVCustomRoutingController;
+@class AVKitPlatformColorClass;
+
+
+/**
+ @constant		AVRoutePickerViewButtonStateNormal
+				Normal or default state of the picker.
+ @constant		AVRoutePickerViewButtonStateNormalHighlighted
+				Highlighted state of the picker. The picker has this state when a mouse-down event occurs inside the button. It loses this highlight when a mouse-up event occurs.
+ @constant		AVRoutePickerViewButtonStateActive
+				Active state of the picker. The picker has this state when AirPlay is active.
+ @constant		AVRoutePickerViewButtonStateActiveHighlighted
+				Highlighted state of the active picker. The picker has this state when it is highlighted and AirPlay is active.
  */
+typedef NS_ENUM(NSInteger, AVRoutePickerViewButtonState) {
+	AVRoutePickerViewButtonStateNormal = 0,
+	AVRoutePickerViewButtonStateNormalHighlighted = 1,
+	AVRoutePickerViewButtonStateActive = 2,
+	AVRoutePickerViewButtonStateActiveHighlighted = 3
+} NS_SWIFT_NAME(AVRoutePickerView.ButtonState) API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos, xros);
 
-API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(macos, watchos)
-@interface AVRoutePickerView : UIView
 
-/*!
-	@property	delegate
-	@abstract	The route picker view's delegate.
+
+#if TARGET_IS_AVKITMACHELPER
+#define AVRoutePickerView AVMacHelperRoutePickerView
+#endif // TARGET_IS_AVKITMACHELPER
+
+/**
+ @class			AVRoutePickerView
+ @abstract		AVRoutePickerView is a view subclass that displays controls for picking playback routes.
+ @discussion	Media from an AVPlayer, or from an AVSampleBufferAudioRenderer on iOS and tvOS, can be routed to compatible AirPlay destinations.
  */
-@property (nonatomic, weak, nullable) id<AVRoutePickerViewDelegate> delegate;
+#if !TARGET_IS_AVKITMACHELPER
+API_AVAILABLE(macos(10.15), ios(11.0), tvos(11.0)) API_UNAVAILABLE(xros) API_UNAVAILABLE(watchos)
+#endif // !TARGET_IS_AVKITMACHELPER
+@interface AVRoutePickerView : AVKitPlatformViewClass
 
-/*!
-	@property	activeTintColor
-	@abstract	The view's tint color when AirPlay is active.
+/**
+ @property		delegate
+ @abstract		The route picker view's delegate.
  */
-@property (nonatomic, strong, null_resettable) UIColor *activeTintColor;
+@property (nonatomic, nullable, weak) id<AVRoutePickerViewDelegate> delegate;
 
-/*!
-	@constant	AVRoutePickerViewButtonStyleSystem
+
+/**
+ @property 		player
+ @abstract		The player for which to perform routing operations.
+ */
+@property (nonatomic, strong, nullable) AVPlayer *player API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos, xros);
+
+/**
+ @method		routePickerButtonColorForState:
+ @param			state
+				The state for which to get the picker button color.
+ @abstract		Returns the color of the picker button for a given state.
+ */
+- (AVKitPlatformColorClass *)routePickerButtonColorForState:(AVRoutePickerViewButtonState)state API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos, xros);
+
+/**
+ @method		setRoutePickerButtonColor:forState:
+ @param			color
+				The color the button should have for a given state.
+ @param			state
+				The state for which to set the color of the button image.
+ @abstract		Sets the color of the picker button for a given state.
+ @discussion	If set to nil, the default color will be used for the given state.
+ */
+- (void)setRoutePickerButtonColor:(nullable AVKitPlatformColorClass *)color forState:(AVRoutePickerViewButtonState)state API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos, xros);
+
+/**
+ @property		routePickerButtonBordered
+ @abstract		Whether or not the picker button has a border. Default is YES.
+ */
+@property (nonatomic, getter = isRoutePickerButtonBordered) BOOL routePickerButtonBordered API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos, xros);
+
+/**
+ @property		activeTintColor
+ @abstract		The view's tint color when AirPlay is active.
+ */
+@property (nonatomic, strong, null_resettable) AVKitPlatformColorClass *activeTintColor API_AVAILABLE(ios(11.0), tvos(11.0)) API_UNAVAILABLE(xros) API_UNAVAILABLE(macos, watchos);
+
+/**
+ @constant		AVRoutePickerViewButtonStyleSystem
 				A system style for the route picker button.
-	@constant	AVRoutePickerViewButtonStylePlain
+ @constant		AVRoutePickerViewButtonStylePlain
 				A plain style for the route picker button, which has the same appearance as the system style without the blurred background view.
-	@constant	AVRoutePickerViewButtonStyleCustom
+ @constant		AVRoutePickerViewButtonStyleCustom
 				A custom style for the route picker button, which allows customizing the background view and focused appearance.
  */
 typedef NS_ENUM(NSInteger, AVRoutePickerViewButtonStyle) {
 	AVRoutePickerViewButtonStyleSystem,
 	AVRoutePickerViewButtonStylePlain,
 	AVRoutePickerViewButtonStyleCustom
-} API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios);
+} API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(macos, ios, watchos, xros);
 
-/*!
-	@property	routePickerButtonStyle
-	@abstract	The route picker button style.
+/**
+ @property		routePickerButtonStyle
+ @abstract		The route picker button style.
  */
-@property (nonatomic) AVRoutePickerViewButtonStyle routePickerButtonStyle API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(ios);
+@property (nonatomic) AVRoutePickerViewButtonStyle routePickerButtonStyle API_AVAILABLE(tvos(11.0)) API_UNAVAILABLE(macos, ios, watchos, xros);
 
-/*!
- 	@property	prioritizesVideoDevices
- 	@abstract	Whether or not the route picker should sort video capable output devices to the top of the list. Setting this to YES will cause the route picker view to show a videocentric icon.
+/**
+ @property		prioritizesVideoDevices
+ @abstract		Whether or not the route picker should sort video capable output devices to the top of the list. Setting this to YES will cause the route picker view to show a videocentric icon.
  */
-@property (nonatomic) BOOL prioritizesVideoDevices API_AVAILABLE(ios(13.0), tvos(13.0));
+@property (nonatomic) BOOL prioritizesVideoDevices API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(macos, xros) API_UNAVAILABLE(watchos);
 
-/*!
-	@property	customRoutingController
-	@abstract	A controller which enables connection to 3rd party devices (non-airplay) via the picker.
+/**
+ @property		customRoutingController
+ @abstract		A controller which enables connection to 3rd party devices (non-airplay) via the picker.
  */
-@property (nonatomic, nullable) AVCustomRoutingController *customRoutingController API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, tvos);
+@property (nonatomic, retain, nullable) AVCustomRoutingController *customRoutingController API_AVAILABLE(ios(16.0)) API_UNAVAILABLE(macos, tvos, watchos, xros);
 
 @end
 
 
-/*!
-	@protocol	AVRoutePickerViewDelegate
-	@abstract	Defines an interface for delegates of AVRoutePickerView.
+/**
+ @protocol		AVRoutePickerViewDelegate
+ @abstract		Defines an interface for delegates of AVRoutePickerView.
  */
-
+API_AVAILABLE(macos(10.15), ios(11.0), tvos(11.0)) API_UNAVAILABLE(xros) API_UNAVAILABLE(watchos)
 @protocol AVRoutePickerViewDelegate <NSObject>
 @optional
 
-/*!
-	@method		routePickerViewWillBeginPresentingRoutes:
-	@abstract	Informs the delegate that the route picker view will start presenting routes to the user.
+/**
+ @method		routePickerViewWillBeginPresentingRoutes:
+ @abstract		Informs the delegate that the route picker view will start presenting routes to the user.
  */
 - (void)routePickerViewWillBeginPresentingRoutes:(AVRoutePickerView *)routePickerView;
 
-/*!
-	@method		routePickerViewDidEndPresentingRoutes:
-	@abstract	Informs the delegate that the route picker view finished presenting routes to the user.
+/**
+ @method		routePickerViewDidEndPresentingRoutes:
+ @abstract		Informs the delegate that the route picker view finished presenting routes to the user.
  */
 - (void)routePickerViewDidEndPresentingRoutes:(AVRoutePickerView *)routePickerView;
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/UIWindow.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/UIWindow.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/UIWindow.h	2023-03-09 19:12:57
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVKit.framework/Headers/UIWindow.h	2023-05-24 23:37:43
@@ -3,7 +3,7 @@
  
 	Framework:  AVKit
  
-	Copyright © 2017 Apple Inc. All rights reserved.
+	Copyright © 2017-2023 Apple Inc. All rights reserved.
  */
 
 #import <AVKit/AVKitDefines.h>
@@ -21,7 +21,11 @@
 	@abstract   The AVDisplayManager instance coordinating screen display properties for this UIWindow
 	@discussion Use this object to manually manage requests for specific screen resolution, refresh rate & HDR modes.
  */
+#if TARGET_OS_XR
+@property (nonatomic, readonly) AVDisplayManager *avDisplayManager API_AVAILABLE(tvos(11.2), xros(1.0));
+#else
 @property (nonatomic, readonly) AVDisplayManager *avDisplayManager API_AVAILABLE(tvos(11.2));
+#endif // TARGET_OS_XR
 
 @end
 
Clone this wiki locally