Skip to content

AVFoundation macOS xcode13.0 beta1

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

#AVFoundation.framework https://github.com/xamarin/xamarin-macios/pull/12550

diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h	2021-03-16 13:58:48.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h	2021-06-02 11:07:18.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2019 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -14,6 +14,7 @@
 #import <AVFoundation/AVContentKeySession.h>
 #import <AVFoundation/AVMediaFormat.h>
 #import <AVFoundation/AVMetadataFormat.h>
+#import <AVFoundation/AVAssetVariant.h>
 
 #import <CoreGraphics/CGAffineTransform.h>
 
@@ -37,7 +38,7 @@
 					
 	Because of the nature of timed audiovisual media, upon successful initialization of an AVAsset some or all of the values for its keys may not be immediately available. The value of any key can be requested at any time, and AVAsset will always return its value synchronously, although it may have to block the calling thread in order to do so.
 
-	In order to avoid blocking, clients can register their interest in particular keys and to become notified when their values become available. For further details, see AVAsynchronousKeyValueLoading.h.
+	In order to avoid blocking, clients can register their interest in particular keys and to become notified when their values become available. For further details, see AVAsynchronousKeyValueLoading.h. For clients who want to examine a subset of the tracks, metadata, and other parts of the asset, asynchronous methods like -loadTracksWithMediaType:completionHandler: can be used to load this information without blocking. When using these asynchronous methods, it is not necessary to load the associated property beforehand. Swift clients can also use the load(:) method to load properties in a type safe manner.
 
 	On iOS, it is particularly important to avoid blocking.  To preserve responsiveness, a synchronous request that blocks for too long (eg, a property request on an asset on a slow HTTP server) may lead to media services being reset.
 
@@ -92,7 +93,7 @@
 
 /*	The following property is deprecated. Instead, use the naturalSize and preferredTransform, as appropriate, of the receiver's video tracks. See -tracksWithMediaType: below.
 */
-@property (nonatomic, readonly) CGSize naturalSize API_DEPRECATED("No longer supported", macos(10.7, 10.8), ios(4.0, 5.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, readonly) CGSize naturalSize API_DEPRECATED("Use the naturalSize and preferredTransform, as appropriate, of the receiver's video tracks. See -tracksWithMediaType:", macos(10.7, 10.8), ios(4.0, 5.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property	preferredDisplayCriteria
@@ -188,6 +189,16 @@
 - (nullable AVAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+  @method		loadTrackWithTrackID:completionHandler:
+  @abstract		Loads an instance of AVAssetTrack that represents the track of the specified trackID.
+  @param		trackID
+				The trackID of the requested AVAssetTrack.
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVAssetTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaType:
   @abstract		Provides an array of AVAssetTracks of the asset that present media of the specified media type.
   @param		mediaType
@@ -198,6 +209,16 @@
 - (NSArray<AVAssetTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+  @method		loadTracksWithMediaType:completionHandler:
+  @abstract		Loads an array of AVAssetTracks of the asset that present media of the specified media type.
+  @param		mediaType
+				The media type according to which AVAsset filters its AVAssetTracks. (Media types are defined in AVMediaFormat.h.)
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVAssetTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaCharacteristic:
   @abstract		Provides an array of AVAssetTracks of the asset that present media with the specified characteristic.
   @param		mediaCharacteristic
@@ -208,6 +229,16 @@
 - (NSArray<AVAssetTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
 /*!
+  @method		loadTracksWithMediaCharacteristic:completionHandler:
+  @abstract		Loads an array of AVAssetTracks of the asset that present media with the specified characteristic.
+  @param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVAssetTracks. (Media characteristics are defined in AVMediaFormat.h.)
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVAssetTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
  @property trackGroups
  @abstract
 	All track groups in the receiver.
@@ -254,6 +285,16 @@
 */
 - (NSArray<AVMetadataItem *> *)metadataForFormat:(AVMetadataFormat)format;
 
+/*!
+  @method		loadMetadataForFormat:completionHandler:
+  @abstract		Loads an NSArray of AVMetadataItems, one for each metadata item in the container of the specified format; can subsequently be filtered according to language via +[AVMetadataItem metadataItemsFromArray:filteredAndSortedAccordingToPreferredLanguages:], according to locale via +[AVMetadataItem metadataItemsFromArray:withLocale:], or according to key via +[AVMetadataItem metadataItemsFromArray:withKey:keySpace:].
+  @param		format
+				The metadata format for which items are requested.
+  @param		completionHandler
+				A block that is invoked when loading is complete, vending the array of metadata items (which may be empty if there is no metadata of the specified format) or an error.
+*/
+- (void)loadMetadataForFormat:(AVMetadataFormat)format completionHandler:(void (^)(NSArray<AVMetadataItem *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -266,7 +307,7 @@
 @property (readonly) NSArray<NSLocale *> *availableChapterLocales API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));
 
 /*!
-  @method		chapterMetadataGroupsWithTitleLocale:containingMetadataItemsWithCommonKeys:
+  @method		chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:
   @abstract		Provides an array of chapters.
   @param		locale
 				Locale of the metadata items carrying chapter titles to be returned (supports the IETF BCP 47 specification).
@@ -284,6 +325,25 @@
 - (NSArray<AVTimedMetadataGroup *> *)chapterMetadataGroupsWithTitleLocale:(NSLocale *)locale containingItemsWithCommonKeys:(nullable NSArray<AVMetadataKey> *)commonKeys API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));
 
 /*!
+  @method		loadChapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:completionHandler:
+  @abstract		Loads an array of chapters.
+  @param		locale
+				Locale of the metadata items carrying chapter titles to be returned (supports the IETF BCP 47 specification).
+  @param		commonKeys
+				Array of common keys of AVMetadataItem to be included; if no common keys are required, send an empty list.
+				AVMetadataCommonKeyArtwork is the only supported key for now.
+  @param		completionHandler
+				A block that is invoked when loading is complete, vending the array of timed metadata groups or an error.
+  @discussion
+	This method vends an array of AVTimedMetadataGroup objects. Each object in the array always contains an AVMetadataItem representing the chapter title; the timeRange property of the AVTimedMetadataGroup object is equal to the time range of the chapter title item.
+
+	An AVMetadataItem with the specified common key will be added to an existing AVTimedMetadataGroup object if the time range (timestamp and duration) of the metadata item and the metadata group overlaps. The locale of items not carrying chapter titles need not match the specified locale parameter.
+ 
+	Further filtering of the metadata items in AVTimedMetadataGroups according to language can be accomplished using +[AVMetadataItem metadataItemsFromArray:filteredAndSortedAccordingToPreferredLanguages:]; filtering of the metadata items according to locale can be accomplished using +[AVMetadataItem metadataItemsFromArray:withLocale:].
+*/
+- (void)loadChapterMetadataGroupsWithTitleLocale:(NSLocale *)locale containingItemsWithCommonKeys:(NSArray<AVMetadataKey> *)commonKeys completionHandler:(void (^)(NSArray<AVTimedMetadataGroup *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
  @method		chapterMetadataGroupsBestMatchingPreferredLanguages:
  @abstract		Tests, in order of preference, for a match between language identifiers in the specified array of preferred languages and the available chapter locales, and returns the array of chapters corresponding to the first match that's found.
  @param			preferredLanguages
@@ -301,6 +361,21 @@
 */
 - (NSArray<AVTimedMetadataGroup *> *)chapterMetadataGroupsBestMatchingPreferredLanguages:(NSArray<NSString *> *)preferredLanguages API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
 
+/*!
+ @method		loadChapterMetadataGroupsBestMatchingPreferredLanguages:completionHandler:
+ @abstract		Tests, in order of preference, for a match between language identifiers in the specified array of preferred languages and the available chapter locales, and loads the array of chapters corresponding to the first match that's found.
+ @param			preferredLanguages
+ An array of language identifiers in order of preference, each of which is an IETF BCP 47 (RFC 4646) language identifier. Use +[NSLocale preferredLanguages] to obtain the user's list of preferred languages.
+ @param			completionHandler
+ A block that is invoked when loading is complete, vending the array of timed metadata groups or an error.
+ @discussion
+ Returns an array of AVTimedMetadataGroup objects. Each object in the array always contains an AVMetadataItem representing the chapter title; the timeRange property of the AVTimedMetadataGroup object is equal to the time range of the chapter title item.
+ 
+ All of the available chapter metadata is included in the metadata groups, including items with the common key AVMetadataCommonKeyArtwork, if such items are present. Items not carrying chapter titles will be added to an existing AVTimedMetadataGroup object if the time range (timestamp and duration) of the metadata item and that of the metadata group overlaps. The locale of such items need not match the locale of the chapter titles.
+ 
+ Further filtering of the metadata items in AVTimedMetadataGroups according to language can be accomplished using +[AVMetadataItem metadataItemsFromArray:filteredAndSortedAccordingToPreferredLanguages:]; filtering of the metadata items according to locale can be accomplished using +[AVMetadataItem metadataItemsFromArray:withLocale:].
+*/
+- (void)loadChapterMetadataGroupsBestMatchingPreferredLanguages:(NSArray<NSString *> *)preferredLanguages completionHandler:(void (^)(NSArray<AVTimedMetadataGroup *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 @end
 
@@ -333,6 +408,23 @@
 - (nullable AVMediaSelectionGroup *)mediaSelectionGroupForMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));
 
 /*!
+  @method		loadMediaSelectionGroupForMediaCharacteristic:completionHandler:
+  @abstract		Loads an instance of AVMediaSelectionGroup that contains one or more options with the specified media characteristic.
+  @param		mediaCharacteristic
+	A media characteristic for which you wish to obtain the available media selection options. AVMediaCharacteristicAudible, AVMediaCharacteristicLegible, and AVMediaCharacteristicVisual are currently supported.
+
+	Pass AVMediaCharacteristicAudible to obtain the group of available options for audio media in various languages and for various purposes, such as descriptive audio.
+	Pass AVMediaCharacteristicLegible to obtain the group of available options for subtitles in various languages and for various purposes.
+	Pass AVMediaCharacteristicVisual to obtain the group of available options for video media.
+  @param		completionHandler
+	A block that is invoked when loading is complete, vending an instance of AVMediaSelectionGroup (which may be nil) or an error.
+  @discussion
+	If the asset has no AVMediaSelectionGroup containing options with the specified media characteristic, the return value will be nil.
+	
+	Filtering of the options in the returned AVMediaSelectionGroup according to playability, locale, and additional media characteristics can be accomplished using the category AVMediaSelectionOptionFiltering defined on AVMediaSelectionGroup.
+*/
+- (void)loadMediaSelectionGroupForMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(AVMediaSelectionGroup * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+/*!
   @property		preferredMediaSelection
   @abstract		Provides an instance of AVMediaSelection with default selections for each of the receiver's media selection groups.
 */
@@ -466,7 +558,7 @@
  */
 AVF_EXPORT NSString *const AVURLAssetHTTPCookiesKey API_AVAILABLE(macos(10.15), ios(8.0), tvos(9.0), watchos(1.0));
 
-/*
+/*!
  @constant		AVURLAssetAllowsCellularAccessKey
  @abstract		Indicates whether network requests on behalf of this asset are allowed to use the cellular interface.
  @discussion
@@ -474,7 +566,7 @@
 */
 AVF_EXPORT NSString *const AVURLAssetAllowsCellularAccessKey API_AVAILABLE(macos(10.15), ios(10.0), tvos(10.0), watchos(3.0));
 
-/*
+/*!
  @constant		AVURLAssetAllowsExpensiveNetworkAccessKey
  @abstract		Indicates whether network requests on behalf of this asset are allowed to use the expensive interface (e.g. cellular, tethered, constrained).
  @discussion
@@ -482,7 +574,7 @@
  */
 AVF_EXPORT NSString *const AVURLAssetAllowsExpensiveNetworkAccessKey API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
 
-/*
+/*!
  @constant		AVURLAssetAllowsConstrainedNetworkAccessKey
  @abstract		Indicates whether network requests on behalf of this asset are allowed to use the constrained interface (e.g. interfaces marked as being in data saver mode).
  @discussion
@@ -491,6 +583,30 @@
 AVF_EXPORT NSString *const AVURLAssetAllowsConstrainedNetworkAccessKey API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
 
 /*!
+ @constant		AVURLAssetShouldSupportAliasDataReferencesKey
+ @abstract		Indicates whether alias data references in the asset should be parsed and resolved.
+ @discussion
+ 	Default is NO. Although the majority of QuickTime movie files contain all of the media data they require, some contain references to media stored in other files. While AVFoundation and CoreMedia typically employ a URL reference for this purpose, older implementations such as QuickTime 7 have commonly employed a Macintosh alias instead, as documented in the QuickTime File Format specification. If your application must work with legacy QuickTime movie files containing alias-based references to media data stored in other files, the use of this AVURLAsset initialization option is appropriate.
+ 
+	If you provide a value for AVURLAssetReferenceRestrictionsKey, restrictions will be observed for resolved alias references just as they are for URL references.
+ 
+	For more details about alias resolution, consult documentation of the bookmark-related interfaces of NSURL.
+ */
+AVF_EXPORT NSString *const AVURLAssetShouldSupportAliasDataReferencesKey API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+  @constant		AVURLAssetURLRequestAttributionKey
+  @abstract
+	Specifies the attribution of the URLs requested by this asset.
+  @discussion
+	Value is an NSNumber whose value is an NSURLRequestAttribution (see NSURLRequest.h).
+	Default value is NSURLRequestAttributionDeveloper.
+	All NSURLRequests issed on behalf of this AVURLAsset will be attributed with this value and follow the App Privacy Policy accordingly.
+*/
+AVF_EXPORT NSString *const AVURLAssetURLRequestAttributionKey API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+
+/*!
   @class		AVURLAsset
 
   @abstract		AVURLAsset provides access to the AVAsset model for timed audiovisual media referenced by URL.
@@ -605,8 +721,32 @@
 */
 - (nullable AVAssetTrack *)compatibleTrackForCompositionTrack:(AVCompositionTrack *)compositionTrack;
 
+/*!
+  @method		findCompatibleTrackForCompositionTrack:completionHandler:
+  @abstract		Loads a reference to an AVAssetTrack of the target from which any timeRange
+				can be inserted into a mutable composition track (via -[AVMutableCompositionTrack insertTimeRange:ofTrack:atTime:error:]).
+  @param		compositionTrack
+				The composition track for which a compatible AVAssetTrack is requested.
+  @param		completionHandler
+				A block that is invoked when loading is complete, vending an instance of AVAssetTrack or an error.
+  @discussion
+	Finds a track of the target with content that can be accommodated by the specified composition track.
+	The logical complement of -[AVMutableComposition mutableTrackCompatibleWithTrack:].
+*/
+- (void)findCompatibleTrackForCompositionTrack:(AVCompositionTrack *)compositionTrack completionHandler:(void (^)(AVAssetTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
+@interface AVURLAsset (AVAssetVariantInspection)
+
+/*!
+ @property		variants
+ @abstract		Provides an array of AVAssetVariants contained in the asset
+ @discussion	Some variants may not be playable according to the current device configuration.
+*/
+@property (nonatomic, readonly) NSArray<AVAssetVariant *> *variants API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+@end
 
 /*!
  @category		AVURLAssetNSItemProvider
@@ -719,6 +859,16 @@
 - (nullable AVFragmentedAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+  @method		loadTrackWithTrackID:completionHandler:
+  @abstract		Loads an instance of AVFragmentedAssetTrack that represents the track of the specified trackID.
+  @param		trackID
+				The trackID of the requested AVFragmentedAssetTrack.
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVFragmentedAssetTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaType:
   @abstract		Provides an array of AVFragmentedAssetTracks of the asset that present media of the specified media type.
   @param		mediaType
@@ -729,6 +879,16 @@
 - (NSArray<AVFragmentedAssetTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+  @method		loadTracksWithMediaType:completionHandler:
+  @abstract		Loads an array of AVFragmentedAssetTracks of the asset that present media of the specified media type.
+  @param		mediaType
+				The media type according to which AVAsset filters its AVFragmentedAssetTracks. (Media types are defined in AVMediaFormat.h.)
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVFragmentedAssetTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaCharacteristic:
   @abstract		Provides an array of AVFragmentedAssetTracks of the asset that present media with the specified characteristic.
   @param		mediaCharacteristic
@@ -738,6 +898,16 @@
 */
 - (NSArray<AVFragmentedAssetTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+  @method		loadTracksWithMediaCharacteristic:completionHandler:
+  @abstract		Loads an array of AVFragmentedAssetTracks of the asset that present media with the specified characteristic.
+  @param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVFragmentedAssetTracks. (Media characteristics are defined in AVMediaFormat.h.)
+  @param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVFragmentedAssetTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 #pragma mark --- AVFragmentedAssetMinder ---
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h	2021-03-16 09:54:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h	2021-06-02 12:47:16.000000000 -0400
@@ -12,10 +12,14 @@
 #import <Foundation/Foundation.h>
 #import	<AVFoundation/AVAsset.h>
 #import <AVFoundation/AVMediaSelection.h>
+#import <AVFoundation/AVAssetVariant.h>
 #import <CoreMedia/CMTimeRange.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class AVAssetVariantQualifier;
+@class AVAssetDownloadContentConfiguration;
+
 // Keys for options dictionary for use with -[AVAssetDownloadURLSession assetDownloadTaskWithURLAsset:assetTitle:assetArtworkData:options:]
 
 /*!
@@ -86,7 +90,7 @@
  @abstract		The file URL supplied to the download task upon initialization.
  @discussion	This URL may have been appended with the appropriate extension for the asset.
 */
-@property (nonatomic, readonly) NSURL *destinationURL API_DEPRECATED("No longer supported", ios(9.0, 10.0)) API_UNAVAILABLE(tvos, watchos) API_UNAVAILABLE(macos);
+@property (nonatomic, readonly) NSURL *destinationURL API_DEPRECATED("Use the URL property of URLAsset instead", ios(9.0, 10.0)) API_UNAVAILABLE(tvos, watchos) API_UNAVAILABLE(macos);
 
 /*!
  @property		options
@@ -110,6 +114,83 @@
 @end
 
 /*!
+ @class			AVAssetDownloadConfiguration
+ @abstract		Configuration parameters for the download task.
+ @discussion	Download configuration consists of primary and auxiliary content configurations. Primary content configuration represents the primary set of renditions essential for offline playback. Auxiliary content configurations represent additional configurations to complement the primary.
+				For example, the primary content configuration may represent stereo audio renditions and auxiliary configuration may represent complementing multichannel audio renditions.
+ 
+				It is important to configure your download configuration object appropriately before using it to create a download task. Download task makes a copy of the configuration settings you provide and use those settings to configure the task. Once configured, the task object ignores any changes you make to the NSURLSessionConfiguration object. If you need to modify your settings, you must update the download configuration object and use it to create a new download task object.
+ */
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVAssetDownloadConfiguration : NSObject <NSSecureCoding>
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method		downloadConfigurationWithAsset:title:
+ @abstract		Creates and initializes a download configuration object.
+ @discussion	This method will throw an exception if AVURLAsset has been invalidated.
+ @param			asset
+				The asset to create the download configuration for.
+ @param			assetTitle
+				A human readable title for this asset, expected to be as suitable as possible for the user's preferred languages. Will show up in the usage pane of the settings app.
+*/
++ (instancetype)downloadConfigurationWithAsset:(AVURLAsset *)asset title:(NSString *)title;
+
+/*!
+ @property		assetArtworkData
+ @abstract		NSData representing artwork data for this asset. Optional. May be displayed, for example, by the usage pane of the Settings app. Must work with +[UIImage imageWithData:].
+*/
+@property (nonatomic, copy, nullable) NSData *artworkData;
+
+/*!
+ @property		primaryContentConfiguration
+ @abstract		The primary content for the download.
+*/
+@property (nonatomic, readonly) AVAssetDownloadContentConfiguration *primaryContentConfiguration;
+
+/*!
+ @property		auxiliaryContentConfigurations
+ @abstract		The auxiliary content for the download. Optional.
+ @discussion	By default, auxiliaryContentConfigurations will have one or more default auxiliary content configurations. These content configurations can be augmented with additional content configurations or removed entirely if no auxiliary content is desired.
+*/
+@property (nonatomic, copy) NSArray <AVAssetDownloadContentConfiguration *> *auxiliaryContentConfigurations;
+
+/*!
+ @property		optimizesAuxiliaryContentConfigurations
+ @abstract		Optimizes auxiliary content selection depending on the primary to minimize total number of video renditions downloaded. True by default.
+ @discussion	For example, if the primary content configuration represents stereo renditions and auxiliary content configuration represents multichannel audio renditions, auxiliary multichannel variant will be chosen so as to avoid downloading duplicate video renditions.
+*/
+@property (nonatomic) BOOL optimizesAuxiliaryContentConfigurations;
+
+@end
+
+/*!
+ @class			AVAssetDownloadContentConfiguration
+ @abstract		Represents the configuration consisting of variant and the variant's media options.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVAssetDownloadContentConfiguration : NSObject <NSCopying, NSSecureCoding>
+
+/*!
+ @property		variantQualifiers
+ @abstract		An array of variant qualifiers.
+ @discussion	The qualifiers are expected to be added in the preferential order and will be evaluated in that order until the qualifier matches one or more AVAssetVariants. Only those variants which can be played on the current device configuration will be initially chosen for evaluation. If there is more than one match, automatic variant selection will be used to choose among the matched.
+				If a variant qualifier is constructed to explicitly choose a variant, no evaluation is performed and the variant provided will be downloaded as is, even if it is not playable on current device configuration.
+				If a variant qualifier has not been provided, or if the variant qualifier when evaluated does not match any of the variants which can be played according to the current device configuration, automatic variant selection will be used.
+*/
+@property (nonatomic, copy) NSArray<AVAssetVariantQualifier *> *variantQualifiers;
+
+/*!
+ @property		mediaSelections
+ @abstract		An array of media selections obtained from the AVAsset.
+ @discussion	If a media selection is not provided, automatic media selection associated with the asset will be used.
+*/
+@property (nonatomic, copy) NSArray<AVMediaSelection *> *mediaSelections;
+
+@end
+
+/*!
  @class			AVAggregateAssetDownloadTask
  @abstract		An AVAssetDownloadTask used for downloading multiple AVMediaSelections for a single AVAsset, under the umbrella of a single download task.
  @discussion	Should be created with -[AVAssetDownloadURLSession aggregateAssetDownloadTaskWithURLAsset:mediaSelections:assetTitle:assetArtworkData:options:. For progress tracking, monitor the delegate callbacks for each childAssetDownloadTask.
@@ -223,8 +304,20 @@
 */
 - (void)URLSession:(NSURLSession *)session aggregateAssetDownloadTask:(AVAggregateAssetDownloadTask *)aggregateAssetDownloadTask didLoadTimeRange:(CMTimeRange)timeRange totalTimeRangesLoaded:(NSArray<NSValue *> *)loadedTimeRanges timeRangeExpectedToLoad:(CMTimeRange)timeRangeExpectedToLoad forMediaSelection:(AVMediaSelection *)mediaSelection API_AVAILABLE(macos(10.15), ios(11.0)) API_UNAVAILABLE(tvos, watchos);
 
-@end
+@optional
+/*!
+ @method		URLSession:assetDownloadTask:willDownloadVariants:
+ @abstract		Sent when a download task has completed the variant selection.
+ @param			session
+				The session the asset download task is on.
+ @param			assetDownloadTask
+				The asset download task.
+ @param			variants
+				The variants chosen. Depends on the environmental condition when the download starts.
+*/
+- (void)URLSession:(NSURLSession *)session assetDownloadTask:(AVAssetDownloadTask *)assetDownloadTask willDownloadVariants:(NSArray <AVAssetVariant *> *)variants API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
+@end
 
 /*!
  @class			AVAssetDownloadURLSession
@@ -256,7 +349,7 @@
  @param			options
 				See AVAssetDownloadTask*Key above. Configures non-default behavior for the download task. Using this parameter is required for downloading non-default media selections for HLS assets.
 */
-- (nullable AVAssetDownloadTask *)assetDownloadTaskWithURLAsset:(AVURLAsset *)URLAsset destinationURL:(NSURL *)destinationURL options:(nullable NSDictionary<NSString *, id> *)options API_DEPRECATED("No longer supported", ios(9.0, 10.0)) API_UNAVAILABLE(tvos, watchos) API_UNAVAILABLE(macos);
+- (nullable AVAssetDownloadTask *)assetDownloadTaskWithURLAsset:(AVURLAsset *)URLAsset destinationURL:(NSURL *)destinationURL options:(nullable NSDictionary<NSString *, id> *)options API_DEPRECATED("Use assetDownloadTaskWithURLAsset:assetTitle:assetArtworkData:options: instead", ios(9.0, 10.0)) API_UNAVAILABLE(tvos, watchos) API_UNAVAILABLE(macos);
 
 /*!
  @method		assetDownloadTaskWithURLAsset:assetTitle:assetArtworkData:options:
@@ -290,6 +383,15 @@
 */
 - (nullable AVAggregateAssetDownloadTask *)aggregateAssetDownloadTaskWithURLAsset:(AVURLAsset *)URLAsset mediaSelections:(NSArray <AVMediaSelection *> *)mediaSelections assetTitle:(NSString *)title assetArtworkData:(nullable NSData *)artworkData options:(nullable NSDictionary<NSString *, id> *)options API_AVAILABLE(macos(10.15), ios(11.0)) API_UNAVAILABLE(tvos, watchos);
 
+/*!
+ @method		assetDownloadTaskWithConfiguration:
+ @abstract		Creates and initializes an AVAssetDownloadTask to be used with this AVAssetDownloadURLSession.
+ @discussion	This method will throw an exception if the URLSession has been invalidated.
+ @param			downloadConfiguration
+				The configuration to be used to create the download task.
+*/
+- (AVAssetDownloadTask *)assetDownloadTaskWithConfiguration:(AVAssetDownloadConfiguration *)downloadConfiguration API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 // only AVAssetDownloadTasks can be created with AVAssetDownloadURLSession
 AV_INIT_UNAVAILABLE
 + (NSURLSession *)sharedSession NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h	2021-03-16 08:44:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h	2021-06-02 05:35:28.000000000 -0400
@@ -62,6 +62,16 @@
    This option is not included in the arrays returned by -allExportPresets and -exportPresetsCompatibleWithAsset. */
 AVF_EXPORT NSString *const AVAssetExportPresetPassthrough		API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos);
 
+
+#if TARGET_OS_OSX
+/* This export option will produce a QuickTime movie with Apple ProRes 422 video and LPCM audio. */
+AVF_EXPORT NSString *const AVAssetExportPresetAppleProRes422LPCM	API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/* This export option will produce a QuickTime movie with Apple ProRes 4444 video and LPCM audio. */
+AVF_EXPORT NSString *const AVAssetExportPresetAppleProRes4444LPCM  API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos);
+#endif // TARGET_OS_OSX
+
+
 #if TARGET_OS_OSX
 
 /* These export options are used to produce files that can be played on the specified Apple devices. 
@@ -75,12 +85,6 @@
 AVF_EXPORT NSString *const AVAssetExportPresetAppleM4V720pHD	API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, tvos, watchos);
 AVF_EXPORT NSString *const AVAssetExportPresetAppleM4V1080pHD	API_AVAILABLE(macos(10.8)) API_UNAVAILABLE(ios, tvos, watchos);
 
-/* This export option will produce a QuickTime movie with Apple ProRes 422 video and LPCM audio. */
-AVF_EXPORT NSString *const AVAssetExportPresetAppleProRes422LPCM	API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, tvos, watchos);
-
-/* This export option will produce a QuickTime movie with Apple ProRes 4444 video and LPCM audio. */
-AVF_EXPORT NSString *const AVAssetExportPresetAppleProRes4444LPCM  API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos);
-
 #endif // TARGET_OS_OSX
 
 
@@ -252,7 +256,7 @@
 	@param outputFileType		An AVFileType indicating a file type to check; or nil, to query whether there are any compatible types.
 	@param handler				A block called with the compatibility result.
  */
-+ (void)determineCompatibilityOfExportPreset:(NSString *)presetName withAsset:(AVAsset *)asset outputFileType:(nullable AVFileType)outputFileType completionHandler:(void (^)(BOOL compatible))handler API_AVAILABLE(macos(10.9), ios(6.0), tvos(9.0)) API_UNAVAILABLE(watchos);
++ (void)determineCompatibilityOfExportPreset:(NSString *)presetName withAsset:(AVAsset *)asset outputFileType:(nullable AVFileType)outputFileType completionHandler:(void (^)(BOOL compatible))handler API_AVAILABLE(macos(10.9), ios(6.0), tvos(9.0)) API_UNAVAILABLE(watchos) NS_SWIFT_ASYNC_NAME(compatibility(ofExportPreset:with:outputFileType:));
 
 @end
 
@@ -269,7 +273,7 @@
 								Called when the inspection completes with an array of file types the ExportSession can write.  Note that this may have a count of zero.
 	@discussion					This method is different than the supportedFileTypes property in that it performs an inspection of the AVAsset in order to determine its compatibility with each of the session's supported file types.
 */
-- (void)determineCompatibleFileTypesWithCompletionHandler:(void (^)(NSArray<AVFileType> *compatibleFileTypes))handler API_AVAILABLE(macos(10.9), ios(6.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+- (void)determineCompatibleFileTypesWithCompletionHandler:(void (^)(NSArray<AVFileType> *compatibleFileTypes))handler API_AVAILABLE(macos(10.9), ios(6.0), tvos(9.0)) API_UNAVAILABLE(watchos) NS_SWIFT_ASYNC_NAME(getter:compatibleFileTypes());
 
 @end
 
@@ -294,7 +298,7 @@
 	@param						handler
 								A block called with the estimated maximum duration, or kCMTimeInvalid if an error occurs.  The error parameter will be non-nil if an error occurs.
 */
-- (void)estimateMaximumDurationWithCompletionHandler:(void (^)(CMTime estimatedMaximumDuration, NSError * _Nullable error ))handler API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
+- (void)estimateMaximumDurationWithCompletionHandler:(void (^)(CMTime estimatedMaximumDuration, NSError * _Nullable error ))handler API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos) NS_SWIFT_ASYNC_NAME(getter:estimatedMaximumDuration());
 
 /*!
 	@method						estimateOutputFileLengthWithCompletionHandler:
@@ -303,7 +307,7 @@
 	@param						handler
 								A block called with the estimated output file length in bytes, if it can be accurately determined; 0 otherwise.  The error parameter will be non-nil if an error occurs.
  */
-- (void)estimateOutputFileLengthWithCompletionHandler:(void (^)(int64_t estimatedOutputFileLength, NSError * _Nullable error ))handler API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
+- (void)estimateOutputFileLengthWithCompletionHandler:(void (^)(int64_t estimatedOutputFileLength, NSError * _Nullable error ))handler API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos) NS_SWIFT_ASYNC_NAME(getter:estimatedOutputFileLengthInBytes());
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h	2021-03-16 05:18:29.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h	2021-06-02 07:35:59.000000000 -0400
@@ -182,7 +182,7 @@
 					Changes to generator properties (snap behavior, maximum size, etc...) will not affect outstanding asynchronous image generation requests.
 					The generated image is not retained.  Clients should retain the image if they wish it to persist after the completion handler returns.
 */
-- (void)generateCGImagesAsynchronouslyForTimes:(NSArray<NSValue *> *)requestedTimes completionHandler:(AVAssetImageGeneratorCompletionHandler)handler;
+- (void)generateCGImagesAsynchronouslyForTimes:(NSArray<NSValue *> *)requestedTimes completionHandler:(AVAssetImageGeneratorCompletionHandler)handler NS_SWIFT_DISABLE_ASYNC;
 
 /*!
 	@method			cancelAllCGImageGeneration
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h	2021-03-16 05:20:16.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h	2021-06-02 12:44:18.000000000 -0400
@@ -20,6 +20,12 @@
 @class AVVideoComposition;
 @class AVAssetReaderOutputInternal;
 
+@class AVCaption;
+@class AVCaptionGroup;
+@class AVAssetReaderOutputCaptionAdaptorInternal;
+
+@protocol AVAssetReaderCaptionValidationHandling;
+
 NS_ASSUME_NONNULL_BEGIN
 
 /*!
@@ -549,6 +555,128 @@
 
 @end
 
+/*!
+ @class AVAssetReaderOutputCaptionAdaptor
+ @abstract
+	An adaptor class for reading instances of AVCaptionGroup from a track containing timed text (i.e. subtitles or closed captions).
+	
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVAssetReaderOutputCaptionAdaptor : NSObject
+{
+@private
+	AVAssetReaderOutputCaptionAdaptorInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method assetReaderOutputCaptionAdaptorWithAssetReaderTrackOutput:
+ @abstract
+	Creates a new caption adaptor for reading from the given track output.
+ @param trackOutput
+	The track output from which to read captions.
+ @result
+	A new instance of AVAssetReaderOutputCaptionAdaptor, configured to read captions from the given AVAssetReaderTrackOutput.
+ @discussion
+	It is an error to pass nil to this method.
+ */
++ (instancetype)assetReaderOutputCaptionAdaptorWithAssetReaderTrackOutput:(AVAssetReaderTrackOutput *)trackOutput;
+
+/*!
+ @method initWithAssetReaderTrackOutput:
+ @abstract
+	Creates a new caption adaptor for reading from the given track output.
+ @param trackOutput
+	The track output from which to read captions.
+ @result
+	A new instance of AVAssetReaderOutputCaptionAdaptor, configured to read captions from the given AVAssetReaderTrackOutput.
+ @discussion
+	It is an error to pass nil to this method.
+ */
+- (instancetype)initWithAssetReaderTrackOutput:(AVAssetReaderTrackOutput *)trackOutput;
+
+/*!
+ @property assetReaderTrackOutput
+ @abstract
+	The track output used to create the receiver.
+ */
+@property (nonatomic, readonly) AVAssetReaderTrackOutput *assetReaderTrackOutput;
+
+/*!
+ @method nextCaptionGroup
+ @abstract
+	Returns the next caption.
+ @result
+	An instance of AVCaption representing the next caption.
+ @discussion
+	The method returns the next caption group.
+ */
+- (nullable AVCaptionGroup *)nextCaptionGroup;
+
+/*!
+ @method captionsNotPresentInPreviousGroupsInCaptionGroup:
+ @abstract
+	Returns the set of captions that are present in the given group but were not present in any group previously vended by calls to -nextCaptionGroup: on the receiver.
+ @param captionGroup
+	The group containing the captions of interest.
+ @result
+	An array of AVCaption objects.
+ @discussion
+	The returned array contains the set of captions in the given group whose time ranges have the same start time as the group.  This method is provided as a convenience for clients who want to process captions one-by-one and do not need a complete view of the set of captions active at a given time.
+ */
+- (NSArray<AVCaption *> *)captionsNotPresentInPreviousGroupsInCaptionGroup:(AVCaptionGroup *)captionGroup;
+								
+@end
+
+/*!
+ @category AVAssetReaderOutputCaptionAdaptor (AVAssetReaderCaptionValidation)
+ @abstract
+	Category of AVAssetReaderOutputCaptionAdaptor for caption validation handling
+ */
+@interface AVAssetReaderOutputCaptionAdaptor (AVAssetReaderCaptionValidation)
+
+/*!
+ @property validationDelegate:
+ @abstract
+	Register caption validation handling callback protocol to the caption adaptor.
+
+ */
+@property (weak) id<AVAssetReaderCaptionValidationHandling> validationDelegate;
+
+@end
+
+/*!
+ @protocol AVAssetReaderCaptionValidationHandling
+ @abstract
+	A protocol to receive caption validation notifications
+ @discussion
+	A client can implement the protocol on its own class which processes the caption validation calls.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@protocol AVAssetReaderCaptionValidationHandling <NSObject>
+
+@optional
+
+/*!
+ @method captionAdaptor:didVendCaption:skippingUnsupportedSourceSyntaxElements:
+ @abstract
+	Called when one or more syntax elements were ignored in the process of creating the caption object.
+
+ @param adaptor  The caption adaptor object
+ @param caption  The caption object. The parser skipped unsupported syntax elements when creating this object.
+ @param syntaxElements Array of NSString to represent the skipped syntax.
+
+ @discussion
+	While the reported string content is human readable, it is highly technical and probably meaningful only to clients who are familiar with the source caption format. It is primarily designed for logging purpose and would not be suitable for UI purpose.
+ */
+// TODO: Move to SPI
+- (void)captionAdaptor:(AVAssetReaderOutputCaptionAdaptor *)adaptor didVendCaption:(AVCaption *)caption skippingUnsupportedSourceSyntaxElements:(NSArray<NSString *> *)syntaxElements;
+
+- (void)captionAdaptor:(AVAssetReaderOutputCaptionAdaptor *)adaptor didParseCaption:(AVCaption *)caption skippingUnsupportedSourceSyntaxElements:(NSArray<NSString *> *)syntaxElements;
+
+
+@end
+
 @class AVAssetReaderSampleReferenceOutputInternal;
 
 /*!
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h	2021-03-16 05:20:17.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h	2021-06-02 12:44:19.000000000 -0400
@@ -465,7 +465,7 @@
 					-[AVAssetResourceLoadingDataRequest respondWithData:] to provide data, and
 					-[AVAssetResourceLoadingRequest finishLoading] to indicate that loading is finished.
 */
-- (void)finishLoadingWithResponse:(nullable NSURLResponse *)response data:(nullable NSData *)data redirect:(nullable NSURLRequest *)redirect API_DEPRECATED("No longer supported", macos(10.15, 10.15), ios(6.0, 7.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
+- (void)finishLoadingWithResponse:(nullable NSURLResponse *)response data:(nullable NSData *)data redirect:(nullable NSURLRequest *)redirect API_DEPRECATED("Use -[AVAssetResourceLoadingRequest setResponse:], -[AVAssetResourceLoadingRequest setRedirect:], -[AVAssetResourceLoadingDataRequest respondWithData:], -[AVAssetResourceLoadingRequest finishLoading]", macos(10.15, 10.15), ios(6.0, 7.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h	2021-03-16 13:58:48.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h	2021-06-02 05:38:03.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2019 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -14,7 +14,9 @@
 	@abstract	An AVAssetTrack object provides provides the track-level inspection interface for all assets.
  
 	@discussion
-		AVAssetTrack adopts the AVAsynchronousKeyValueLoading protocol. Methods in the protocol should be used to access a track's properties without blocking the current thread. To cancel load requests for all keys of AVAssetTrack one must message the parent AVAsset object (for example, [track.asset cancelLoading])
+		AVAssetTrack adopts the AVAsynchronousKeyValueLoading protocol. Methods in the protocol should be used to access a track's properties without blocking the current thread. To cancel load requests for all keys of AVAssetTrack one must message the parent AVAsset object (for example, [track.asset cancelLoading]).
+ 
+		For clients who want to examine a subset of the metadata or other parts of the track, asynchronous methods like -loadMetadataForFormat:completionHandler: can be used to load this information without blocking. When using these asynchronous methods, it is not necessary to load the associated property beforehand. Swift clients can also use the load(:) method to load properties in a type safe manner.
 */
 
 #import <AVFoundation/AVBase.h>
@@ -177,6 +179,17 @@
 - (nullable AVAssetTrackSegment *)segmentForTrackTime:(CMTime)trackTime;
 
 /*!
+	@method			loadSegmentForTrackTime:completionHandler:
+	@abstract		Loads the AVAssetTrackSegment from the segments array with a target timeRange that either contains the specified track time or is the closest to it among the target timeRanges of the track's segments.
+	@param			trackTime
+					The trackTime for which an AVAssetTrackSegment is requested.
+	@param			completionHandler
+					A block that is invoked when loading is complete, vending an AVAssetTrackSegment or an error.
+	@discussion		If the trackTime does not map to a sample presentation time (e.g. it's outside the track's timeRange), the segment closest in time to the specified trackTime is returned.
+*/
+- (void)loadSegmentForTrackTime:(CMTime)trackTime completionHandler:(void (^)(AVAssetTrackSegment * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
 	@method			samplePresentationTimeForTrackTime:
 	@abstract		Maps the specified trackTime through the appropriate time mapping and returns the resulting sample presentation time.
 	@param			trackTime
@@ -185,6 +198,16 @@
 */
 - (CMTime)samplePresentationTimeForTrackTime:(CMTime)trackTime;
 
+/*!
+	@method			loadSamplePresentationTimeForTrackTime:completionHandler:
+	@abstract		Maps the specified trackTime through the appropriate time mapping and loads the resulting sample presentation time.
+	@param			trackTime
+					The trackTime for which a sample presentation time is requested.
+	@param			completionHandler
+					A block that is invoked when loading is complete, vending a CMTime (which will be invalid if the trackTime is out of range) or an error.
+*/
+- (void)loadSamplePresentationTimeForTrackTime:(CMTime)trackTime completionHandler:(void (^)(CMTime, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -213,6 +236,16 @@
 */
 - (NSArray<AVMetadataItem *> *)metadataForFormat:(AVMetadataFormat)format;
 
+/*!
+	@method			loadMetadataForFormat:completionHandler:
+	@abstract		Loads an NSArray of AVMetadataItems, one for each metadata item in the container of the specified format.
+	@param			format
+					The metadata format for which items are requested.
+	@param			completionHandler
+					A block that is invoked when loading is complete, vending the array of metadata items (which may be empty if there is no metadata of the specified format) or an error.
+*/
+- (void)loadMetadataForFormat:(AVMetadataFormat)format completionHandler:(void (^)(NSArray<AVMetadataItem *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -297,10 +330,18 @@
 */
 - (NSArray<AVAssetTrack *> *)associatedTracksOfType:(AVTrackAssociationType)trackAssociationType API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
-@end
+/*!
+	@method			loadAssociatedTracksOfType:completionHandler:
+	@abstract		Provides an NSArray of AVAssetTracks, one for each track associated with the receiver with the specified type of track association.
+	@param			trackAssociationType
+					The type of track association for which associated tracks are requested.
+	@param			completionHandler
+					A block that is invoked when loading is comlete, vending an array of tracks (which may be empty if there is no associated tracks of the specified type) or an error.
+`*/
+- (void)loadAssociatedTracksOfType:(AVTrackAssociationType)trackAssociationType completionHandler:(void (^)(NSArray<AVAssetTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
+@end
 
-#if !TARGET_OS_IPHONE
 
 @class AVSampleCursor;
 
@@ -339,8 +380,6 @@
 
 @end
 
-#endif // !TARGET_OS_IPHONE
-
 #pragma mark --- AVAssetTrack change notifications ---
 
 /*
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.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/AVFoundation.framework/Headers/AVAssetVariant.h	2021-06-02 05:38:04.000000000 -0400
@@ -0,0 +1,182 @@
+#if !__has_include(<AVFCore/AVAssetVariant.h>)
+/*
+	File:           AVAssetVariant.h
+
+	Framework:      AVFoundation
+
+	Copyright © 2021 Apple Inc. All rights reserved.
+ */
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVVideoSettings.h>
+#import <AVFoundation/AVMediaFormat.h>
+#import <AVFoundation/AVAsynchronousKeyValueLoading.h>
+#import <CoreGraphics/CGGeometry.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVMediaSelectionOption;
+@class AVAssetVariantVideoAttributes;
+@class AVAssetVariantAudioAttributes;
+@class AVAssetVariantAudioRenditionSpecificAttributes;
+
+/*!
+  @class		AVAssetVariant
+  @abstract		An AVAssetVariant represents a bit rate variant.
+				Each asset contains a collection of variants that represent a combination of audio, video, text, closed captions, and subtitles for a particular bit rate.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVAssetVariant : NSObject <NSSecureCoding>
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property		peakBitRate
+ @abstract		If it is not declared, the value will be negative.
+ */
+@property (nonatomic, readonly) double peakBitRate;
+
+/*!
+ @property		averageBitRate
+ @abstract		If it is not declared, the value will be negative.
+ */
+@property (nonatomic, readonly) double averageBitRate;
+
+/*!
+ @property		videoAttributes
+ @abstract		Provides  variant's video rendition attributes. If no video attributes are declared, it will be nil.
+ */
+@property (nonatomic, readonly, nullable) AVAssetVariantVideoAttributes *videoAttributes;
+
+/*!
+ @property		audioAttributes
+ @abstract		Provides  variant's audio rendition attributes. If no audio attributes are declared, it will be nil.
+ */
+@property (nonatomic, readonly, nullable) AVAssetVariantAudioAttributes *audioAttributes;
+
+@end
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVAssetVariantVideoAttributes : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property		videoRange
+ @abstract		Provides the video range of the variant. If it is not declared, it will be AVVideoRangeSDR.
+ */
+@property (nonatomic, readonly) AVVideoRange videoRange;
+
+/*!
+ @property		codecTypes
+ @abstract		Provides an array of video sample codec types present in the variant's renditions if any are declared. Each value in the array is a NSNumber representation of CMVideoCodecType.
+ */
+@property (nonatomic, readonly) NSArray <NSNumber *> *codecTypes;
+
+/*!
+ @property		presentationSize
+ @abstract		If it is not declared, it will be CGSizeZero.
+ */
+@property (nonatomic, readonly) CGSize presentationSize;
+
+/*!
+ @property		nominalFrameRate
+ @abstract		If it is not declared, the value will be negative.
+ */
+@property (nonatomic, readonly) double nominalFrameRate;
+
+@end
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVAssetVariantAudioAttributes : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property		formatIDs
+ @abstract		Provides an array of audio formats present in the variant's renditions if any are declared. Each value in the array is a NSNumber representation of AudioFormatID.
+ */
+@property (nonatomic, readonly) NSArray <NSNumber *> *formatIDs;
+
+/*!
+ @method		renditionSpecificAttributesForMediaOption:
+ @abstract		Provides attributes for a specific audio media selection option. If no rendition specific attributes are declared, it will be nil.
+ @param			mediaSelectionOption
+				The option to return rendition specific information for.
+ */
+- (nullable AVAssetVariantAudioRenditionSpecificAttributes *)renditionSpecificAttributesForMediaOption:(AVMediaSelectionOption *)mediaSelectionOption;
+
+@end
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVAssetVariantAudioRenditionSpecificAttributes : NSObject
+
+/*!
+ @property		channelCount
+ @abstract		If it is not declared, the value will be negative.
+ */
+@property (nonatomic, readonly) NSInteger channelCount;
+
+@end
+
+/*!
+ @enum			AVEnvironmentalCondition
+ @abstract		These constants can be used in any combination as the value for environmentalConditions.
+ @constant		AVEnvironmentalConditionDefault
+				Represents the base condition.
+ @constant		AVEnvironmentalConditionOnExpensiveNetwork
+				Represents the condition when the device is connected to an expensive network. The system determines what constitutes “expensive” based on the nature of the network interface and other factors.
+				Typically most cellular networks and personal hotspots are considered expensive.
+*/
+typedef NS_OPTIONS(NSInteger, AVEnvironmentalCondition) {
+	AVEnvironmentalConditionDefault							= 0,
+	AVEnvironmentalConditionOnExpensiveNetwork				= 1 << 0,
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVAssetVariantQualifier : NSObject <NSCopying, NSSecureCoding>
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property		environmentalConditions
+ @abstract		An optional environmental condition specifying when this variant qualifier should come into play.
+*/
+@property (nonatomic) AVEnvironmentalCondition environmentalConditions;
+
+/*!
+ @method 		assetVariantQualifierWithPredicate:
+ @abstract		Returns a qualifer for a predicate.
+ @param			predicate
+				The variant predicate.
+ */
++ (instancetype)assetVariantQualifierWithPredicate:(NSPredicate *)predicate;
+
+/*!
+ @method 		assetVariantQualifierWithVariant:
+ @abstract		Returns a qualifer for a particular asset variant.
+ @param			variant
+				A variant obtained from the -[AVAsset variants] or -[AVAssetDownloadConfiguration playableVariants].
+ */
++ (instancetype)assetVariantQualifierWithVariant:(AVAssetVariant *)variant;
+
+/*!
+ @method		predicateForChannelCount:mediaSelectionOption:operatorType:
+ @abstract		Creates a NSPredicate for audio channel count which can be used with other NSPredicates' to express variant preferences.
+ @param			channelCount
+				The RHS value for the channel count in the predicate equation.
+ @param			mediaSelectionOption
+				The audio media selection option under consideration.
+ @param			operatorType
+				The valid values are NSLessThanPredicateOperatorType, NSLessThanOrEqualToPredicateOperatorType, NSGreaterThanPredicateOperatorType, NSGreaterThanOrEqualToPredicateOperatorType, NSEqualToPredicateOperatorType and NSNotEqualToPredicateOperatorType.
+ */
++ (NSPredicate *)predicateForChannelCount:(NSInteger)channelcount mediaSelectionOption:(AVMediaSelectionOption *)mediaSelectionOption operatorType:(NSPredicateOperatorType)operatorType;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVAssetVariant.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h	2021-03-16 09:54:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h	2021-06-02 07:34:15.000000000 -0400
@@ -362,7 +362,7 @@
 	
 	This method should not be called concurrently with -[AVAssetWriterInput appendSampleBuffer:] or -[AVAssetWriterInputPixelBufferAdaptor appendPixelBuffer:withPresentationTime:].
 */
-- (BOOL)finishWriting API_DEPRECATED("No longer supported", macos(10.7, 10.9), ios(4.1, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
+- (BOOL)finishWriting API_DEPRECATED_WITH_REPLACEMENT("finishWritingWithCompletionHandler:", macos(10.7, 10.9), ios(4.1, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @method finishWritingWithCompletionHandler:
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h	2021-03-16 09:54:43.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h	2021-06-02 07:35:55.000000000 -0400
@@ -19,6 +19,9 @@
 
 @class AVMetadataItem;
 @class AVAssetWriterInputInternal;
+@class AVCaption;
+@class AVCaptionGroup;
+@class AVAssetWriterInputCaptionAdaptorInternal;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -859,6 +862,74 @@
 
 @end
 
+/*!
+	@class AVAssetWriterInputCaptionAdaptor
+	@abstract
+		An adaptor class for appending instances of AVCaption to an asset writer input. -[AVAssetWriterInput -appendSampleBuffer:] will throw an exception if used when this adaptor is attached.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVAssetWriterInputCaptionAdaptor : NSObject
+{
+@private
+	AVAssetWriterInputCaptionAdaptorInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+	@method assetWriterInputCaptionAdaptorWithAssetWriterInput:
+	@abstract
+		Creates a new caption adaptor for writing to the specified asset writer input.
+ */
++ (instancetype)assetWriterInputCaptionAdaptorWithAssetWriterInput:(AVAssetWriterInput *)input;
+
+/*!
+	@method initWithAssetWriterInput:
+	@abstract
+		Creates a new caption adaptor for writing to the specified asset writer input.
+ */
+- (instancetype)initWithAssetWriterInput:(AVAssetWriterInput *)input;
+
+/*!
+	@property assetWriterInput
+	@abstract
+		The asset writer input that was used to initialize the receiver.
+ */
+@property (nonatomic, readonly) AVAssetWriterInput *assetWriterInput;
+
+/*!
+	@method appendCaption:
+	@abstract
+		Append a single caption to be written.
+	@param caption
+		The caption to append.
+	@result
+		Returns YES if the operation succeeded, NO if it failed.
+	@discussion
+		If this method returns NO, check the value of AVAssetWriter.status on the attached asset writer to determine why appending failed.
+ 
+		The start time of each caption's timeRange property must be numeric (see CMTIME_IS_NUMERIC) and must be at least as large as the start time of any previous caption (including any captions present in a group appended via -appendCaptionGroup:).  In other words, the sequence of captions appended using this method must have monotonically increasing start times.
+ 
+		 The duration of each caption's timeRange property must either be numeric.
+ */
+- (BOOL)appendCaption:(AVCaption *)caption;
+
+/*!
+	@method appendCaptionGroup:
+	@abstract
+		Append a group of captions to be written.
+	@param captionGroup
+	@result
+		Returns YES if the operation succeeded, NO if it failed.
+	@discussion
+		If this method returns NO, check the value of AVAssetWriter.status on the attached asset writer to determine why appending failed.
+		When appending a sequence of captions groups, the start time of each group must be equal to or greater than the end time of any previous group.  The easiest way to achieve this is to create the group using a caption whose duration is kCMTimeInvalid, in which case the duration will be determined by subtracting the start time of the group from the start time of the next appended group.
+		When mixing calls to -appendCaptionGroup: and -appendCaption:, the start time of each group must be equal to or greater than the end time of any previous captions.
+		To mark a time range containing no captions, append a group containing an empty caption array.
+ */
+- (BOOL)appendCaptionGroup:(AVCaptionGroup *)captionGroup;
+
+@end
+
 NS_ASSUME_NONNULL_END
 
 #else
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h	2021-03-16 09:54:47.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h	2021-06-02 11:07:19.000000000 -0400
@@ -4,7 +4,7 @@
  
     Framework:  AVFoundation
  
-	Copyright 2013-2018 Apple Inc. All rights reserved.
+	Copyright 2013-2021 Apple Inc. All rights reserved.
  
  */
 
@@ -17,7 +17,8 @@
  @abstract
     The type of a time pitch algorithm.
  @discussion
-	On OS X, the default algorithm for all time pitch operations is AVAudioTimePitchAlgorithmSpectral.  On iOS, the default algorithm for playback is AVAudioTimePitchAlgorithmLowQualityZeroLatency and the default for export & other offline processing is AVAudioTimePitchAlgorithmSpectral.
+	On macOS and iOS, the default algorithm for playback for applications linked on or after iOS 15.0 or macOS 12.0 is is AVAudioTimePitchAlgorithmTimeDomain. For iOS versions prior to 15.0 the default value is AVAudioTimePitchAlgorithmLowQualityZeroLatency. For macOS versions prior to 12.0 the default value is AVAudioTimePitchAlgorithmSpectral.
+ The default for export & other offline processing is AVAudioTimePitchAlgorithmSpectral.
 
 	For scaled audio edits, i.e. when the timeMapping of an AVAssetTrackSegment is between timeRanges of unequal duration, it is important to choose an algorithm that supports the full range of edit rates present in the source media.  AVAudioTimePitchAlgorithmSpectral is often the best choice due to the highly inclusive range of rates it supports, assuming that it is desirable to maintain a constant pitch regardless of the edit rate.  If it is instead desirable to allow the pitch to vary with the edit rate, AVAudioTimePitchAlgorithmVarispeed is the best choice.
  
@@ -44,11 +45,32 @@
                 Variable rate from 1/32 to 32.
  
 */
-AVF_EXPORT AVAudioTimePitchAlgorithm const AVAudioTimePitchAlgorithmLowQualityZeroLatency API_AVAILABLE(ios(7.0), tvos(9.0), watchos(1.0)) API_UNAVAILABLE(macos);
+AVF_EXPORT AVAudioTimePitchAlgorithm const AVAudioTimePitchAlgorithmLowQualityZeroLatency API_DEPRECATED("Use AVAudioTimePitchAlgorithmTimeDomain instead", ios(7.0, 15.0), tvos(9.0, 15.0), watchos(1.0, 8.0)) API_UNAVAILABLE(macos);
 AVF_EXPORT AVAudioTimePitchAlgorithm const AVAudioTimePitchAlgorithmTimeDomain API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVAudioTimePitchAlgorithm const AVAudioTimePitchAlgorithmSpectral API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVAudioTimePitchAlgorithm const AVAudioTimePitchAlgorithmVarispeed API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
+/*!
+@enum AVAudioSpatializationFormats
+ @abstract
+	These constants can be used to specify values for allowedAudioSpatializationFormats.
+ 
+ @constant	 AVAudioSpatializationFormatNone
+	Indicates that no audio spatialization is allowed.
+ @constant	 AVAudioSpatializationFormatMonoAndStereo
+	Indicates that only mono and stereo formats may be used for audio spatialization.
+ @constant	 AVAudioSpatializationFormatMultichannel
+	Indicates that only multichannel layouts may be used for audio spatialization.
+ @constant	 AVAudioSpatializationFormatMonoStereoAndMultichannel
+	Indicates that mono, stereo and multichannel layouts may be used for audio spatialization.
+ */
+typedef NS_OPTIONS(NSUInteger, AVAudioSpatializationFormats) {
+	AVAudioSpatializationFormatNone = 0UL,
+	AVAudioSpatializationFormatMonoAndStereo = 0x3UL,
+	AVAudioSpatializationFormatMultichannel = 0x4UL,
+	AVAudioSpatializationFormatMonoStereoAndMultichannel = 0x7UL
+};
+
 #else
 #import <AVFCore/AVAudioProcessingSettings.h>
 #endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaption.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaption.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaption.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/AVFoundation.framework/Headers/AVCaption.h	2021-06-02 11:07:18.000000000 -0400
@@ -0,0 +1,958 @@
+#if !__has_include(<AVFCore/AVCaption.h>)
+/*
+	File:  AVCaption.h
+
+	Framework:  AVFoundation
+ 
+	Copyright 2015-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+#import <CoreGraphics/CoreGraphics.h>
+#import <CoreMedia/CMTimeRange.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVCaptionInternal;
+@class AVMutableCaptionInternal;
+@class AVCaptionRegionInternal;
+@class AVCaptionPositionInternal;
+@class AVCaptionLengthInternal;
+@class AVMutableCaptionRegionInternal;
+@class AVCaptionRuby;
+@class AVCaptionRubyInternal;
+
+/*!
+ @enum AVCaptionUnitType
+ @abstract
+	Geometry unit.
+
+ @discussion
+	Some geometry objects, such as AVCaptionPosition, are variant type object where a client can store a value of specified unit. AVCaptionUnitType indicates the unit being used by such objects.
+
+ @constant AVCaptionUnitTypeCell
+	The integer value is the number of cells.
+
+ @constant AVCaptionUnitTypeRelativeToEnclosingRegion
+	The floating number value is [0 .. 1], relative to the enclosing region.
+ */
+typedef NS_ENUM(NSInteger, AVCaptionUnitType) {
+	AVCaptionUnitTypeCell,
+	AVCaptionUnitTypeRelativeToEnclosingRegion,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @interface AVCaptionPosition
+ @abstract
+	Represents a position of things such as region.
+
+ @discussion
+	To read a value, examine unitType property and call appropriate properties.
+
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionPosition : NSObject <NSCopying, NSSecureCoding>
+{
+@private
+	AVCaptionPositionInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+  @property unit
+  @abstract
+    The unit of the value.
+ */
+@property (nonatomic, readonly) AVCaptionUnitType unitType API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+@end
+
+/*!
+ @interface AVAppleITTCaptionPosition
+ @abstract
+	Represents a position of things such as region for the Apple iTT format.
+
+ @discussion
+	To read a value, examine unitType property and call appropriate properties.
+
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVAppleITTCaptionPosition : AVCaptionPosition
+{
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+  @property relativeToEnclosingRegionX
+  @abstract
+	The horizontal position relative to the containing area.
+ */
+@property (nonatomic, readonly) float relativeToEnclosingRegionX API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+  @property relativeToEnclosingRegionY
+  @abstract
+	The vertical position relative to the containing area.
+ */
+@property (nonatomic, readonly) float relativeToEnclosingRegionY API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @method initWithRelativeToEnclosingRegionX:Y:
+ @abstract
+	Initializes an instance with percentage.
+ @param relativeToEnclosingRegionX
+	The horizontal position in percentage.
+ @param relativeToEnclosingRegionY
+	The vertical position in percentage.
+ @result
+	An instance of AVCaptionPosition that carries the given position.
+*/
+- (instancetype)initWithRelativeToEnclosingRegionX:(float)relativeToEnclosingRegionX Y:(float)relativeToEnclosingRegionY API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+@end
+
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCEA608CaptionPosition : AVCaptionPosition
+{
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+  @property cellX
+  @abstract
+	The horizontal position in the cell index. The left-most position is 1, not zero.
+ */
+@property (nonatomic, readonly) NSInteger cellX;
+
+/*!
+  @property cellY
+  @abstract
+	The vertical position in the cell index. The top-most position is 1, not zero.
+ */
+@property (nonatomic, readonly) NSInteger cellY;
+
+/*!
+ @method initWithCellPositionX:Y:
+ @abstract
+	Initializes an instance with number of cells.
+ @param cellX
+	The horizontal position in number of cells. The left-most position is 1, not zero.
+ @param cellY
+	The vertical position in number of cells. The top-most position is 1, not zero.
+ @result
+	An instance of AVCaptionPosition that carries the given position.
+*/
+- (instancetype)initWithCellPositionX:(NSInteger)cellX Y:(NSInteger)cellY;
+
+@end
+
+
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionLength : NSObject <NSCopying, NSSecureCoding>
+{
+@private
+	AVCaptionLengthInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+  @property numberOfCells
+  @abstract
+    The length in cells.
+ */
+@property (nonatomic, readonly) NSInteger numberOfCells;
+
+/*!
+ @method initWithCellCount:
+ @abstract
+	Initializes an instance with the number of cells.
+ @param numberOfCells
+	The length in cells.
+ @result
+	An instance of AVCaptionLength that carries the given length.
+*/
+- (instancetype)initWithCellCount:(NSInteger)numberOfCells;
+
+@end
+
+/*!
+ @enum AVCaptionRegionDisplayAlignment
+ @abstract
+    Choices for region display alignment
+
+ @discussion
+    Whenever a caption line is inserted into a region, it's placed relative to the existing lines and the direction to which the line is placed is called the block progression direction of the region. For example, English caption's block progression direction is top-to-bottom, while Japanese vertical caption uses right-to-left.
+
+    The value describes how the caption lines should positioned in a region in terms of the block progression direction.
+
+ @constant AVCaptionRegionDisplayAlignmentBefore
+    Align lines in earlier position in the block progression direction, or align to the top for English captions, for example.
+
+ @constant AVCaptionRegionDisplayAlignmentCenter
+    Align lines in center position in the block progression direction. iTT doesn't support this.
+
+ @constant AVCaptionRegionDisplayAlignmentAfter
+    Align lines in later position in the block progression direction, or align to the left for Japanese vertical captions, for example.
+ */
+typedef NS_ENUM(NSInteger, AVCaptionRegionDisplayAlignment) {
+	AVCaptionRegionDisplayAlignmentBefore        = 0,
+	AVCaptionRegionDisplayAlignmentCenter        = 1,
+	AVCaptionRegionDisplayAlignmentAfter         = 2,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionRegionWritingMode
+ @abstract
+    Choices for region writing mode
+
+ @constant AVCaptionRegionWritingModeLeftToRightAndTopToBottom
+ @constant AVCaptionRegionWritingModeTopToBottomAndRightToLeft
+ */
+typedef NS_ENUM(NSInteger, AVCaptionRegionWritingMode) {
+	AVCaptionRegionWritingModeLeftToRightAndTopToBottom  = 0,
+	AVCaptionRegionWritingModeTopToBottomAndRightToLeft  = 2,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionRegionScroll
+ @abstract
+	Scrolling effect for a region
+ @constant AVCaptionRegionScrollNone
+
+ @constant AVCaptionRegionScrollRollUp
+ */
+typedef NS_ENUM(NSInteger, AVCaptionRegionScroll) {
+	AVCaptionRegionScrollNone   = 0,
+	AVCaptionRegionScrollRollUp = 1,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @class AVCaptionRegion
+ @abstract
+	An instance of AVCaptionRegion represents a region where a caption is placed.
+ @discussion
+	Currently, there is just four predefined region instances. The interface doesn't support configuration of region settings.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionRegion : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
+{
+@private
+	AVCaptionRegionInternal *_internal;
+}
+
+/*!
+  @method subRipTextBottom
+  @abstract
+    The bottom region for SubRip Text (SRT) format
+  @discussion
+    This region can be used in SRT format and it occupies the entire video display area. The region uses LRTB, a line progresses left to right and the block extends from top to bottom. Each line is stacked with bottom justified.
+ */
++(AVCaptionRegion *)subRipTextBottom;
+
+/*!
+  @property identifier
+  @abstract
+    Identifier for the region
+  @discussion
+    When regionIdentifier is nil, two regions with the same position and endPosition are considered to be same, that is
+    captions referring these regions belong to the same region when serialized to a format like TTML.
+
+    When regionIdentifier is not nil, two regions are same if and only if the region identifier is equal. It is a
+    client's responsibility to ensure these AVCaptionRegion objects have the same properties.
+ */
+@property (nonatomic, readonly, nullable) NSString *identifier;
+
+/*!
+  @property position
+  @abstract
+    Region position.
+  @discussion
+    It returns nil when the region doesn't have position information.
+ */
+@property (nonatomic, readonly, nullable) AVCaptionPosition *position;
+
+/*!
+  @property endPosition
+  @abstract
+    Region endPosition, which is the position of the bottom-right edge.
+  @discussion
+    It returns nil when the region doesn't have position information.
+ */
+@property (nonatomic, readonly, nullable) AVCaptionPosition *endPosition;
+
+/*!
+  @property height
+  @abstract
+    Region height.
+  @discussion
+	CEA608 closed captions support limits the height property’s value to 1 cell except when the AVCaptionRegionScroll is AVCaptionRegionScrollRollUp.
+	If the AVCaptionRegionScroll is AVCaptionRegionScrollRollUp, the height property’s value must be 2, 3 or 4 cells.
+
+	It returns nil when the region doesn't have height information.
+ */
+@property (nonatomic, readonly, nullable) AVCaptionLength *height;
+
+/*!
+  @property scroll
+  @abstract
+    Scroll mode for the region
+  @discussion
+    See AVCaptionRegionScrollXXX enum for possible values.
+ */
+@property (nonatomic, readonly) AVCaptionRegionScroll scroll;
+
+/*!
+  @property displayAlignment
+  @abstract
+    Alignment of lines for the region
+ */
+@property (nonatomic, readonly) AVCaptionRegionDisplayAlignment displayAlignment;
+
+/*!
+  @property writingMode
+  @abstract
+    The block and inline progression direction of the region.
+ */
+@property (nonatomic, readonly) AVCaptionRegionWritingMode writingMode;
+@end
+
+/*!
+ @class AVMutableCaptionRegion
+ @abstract
+	Mutable subclass of AVCaptionRegion.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVMutableCaptionRegion : AVCaptionRegion
+{
+@private
+	AVMutableCaptionRegionInternal *_mutableInternal __attribute__((unused));
+}
+
+/*!
+  @method init
+  @abstract
+    Create a region object without any properties.
+ */
+- (instancetype)init;
+
+/*!
+  @method initWithIdentifier:
+  @abstract
+    Create a region object with the identifier.
+ */
+- (instancetype)initWithIdentifier:(NSString *)identifier;
+
+/*!
+  @property position
+  @abstract
+    Region position.
+ */
+@property (nonatomic, copy) AVCaptionPosition *position;
+
+/*!
+  @property endPosition
+  @abstract
+    Region endPosition, exclusive.
+ */
+@property (nonatomic, copy) AVCaptionPosition *endPosition;
+
+/*!
+  @property height
+  @abstract
+    Region height.
+ */
+@property (nonatomic, copy) AVCaptionLength *height;
+
+/*!
+  @property scroll
+  @abstract
+    Region scroll mode.
+ */
+@property (nonatomic, assign) AVCaptionRegionScroll scroll;
+
+/*!
+  @property displayAlignment
+  @abstract
+    Alignment of lines in the region.
+ */
+@property (nonatomic, assign) AVCaptionRegionDisplayAlignment displayAlignment API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+  @property writingMode
+  @abstract
+    The block and inline progression direction of the region.
+ */
+@property (nonatomic, assign) AVCaptionRegionWritingMode writingMode API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+@end
+
+/*!
+ @enum AVCaptionAnimation
+ @abstract
+	Animation effect for a caption
+ @constant AVCaptionAnimationNone
+
+ @constant AVCaptionAnimationCharacterReveal
+ */
+typedef NS_ENUM(NSInteger, AVCaptionAnimation) {
+	AVCaptionAnimationNone = 0,
+	AVCaptionAnimationCharacterReveal = 1,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @class AVCaption
+ @abstract
+	An instance of AVCaption represents a unit of text that is active at a particular time range. 
+ @discussion
+	A caption contains one meaningful sentence, paragraph, or otherwise known as a caption cue. Within the active time range, it may perform animation (e.g. Karaoke), rolling-up, changes the visibility, or any other dynamic styling.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaption : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
+{
+@private
+	AVCaptionInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method initWithText:timeRange:
+ @abstract
+	Initializes an instance of AVCaption with the given text and time range.
+ @param text
+	The text for the new caption object. See text property for the available character sets and other restrictions.
+ @param timeRange
+	The time range for the new caption object.
+ @result
+	An instance of AVCaption that carries the given text and time range.
+ */
+- (instancetype)initWithText:(NSString *)text timeRange:(CMTimeRange)timeRange;
+
+/*!
+ @property text
+ @abstract
+	The text content of the caption.
+ @discussion
+ 	The text may contain any of the line breaking character sequences (LF, CR, or CF+LF) and separating the lines in the presentation.
+
+	The Apple iTT format supports all Unicode code points allowed in a XML document. Any XML special characters such as '&' are converted to a corresponding character reference syntax when written to the destination file.
+
+	CEA608 closed captions support the following Unicode characters.
+		Range: U+0020 - U+005F
+		Range: U+0061 - U+007E
+		Range: U+00A1 - U+00A5
+		Characters: U+00A9, U+00AB, U+00AE, U+00B0, U+00BB, U+00BD, U+00BF
+		Range: U+00C0-U+00C5
+		Range: U+00C7-U+00CF
+		Range: U+00D1-U+00D6
+		Range: U+00D8-U+00DC
+		Range: U+00DF-U+00E5
+		Range: U+00E7-U+00EF
+		Range: U+00F1-U+00FC
+		Range: U+2018-U+2019
+		Range: U+2018-U+201D
+		Character: U+2022
+		Range: U+2120-U+2122
+		Characters: U+2501, U+2503, U+250F, U+2513, U+2517, U+251B, U+2588, U+266A
+
+	CEA608 closed captions don't support the line breaking character sequences (LF, CR, or CF+LF).
+ */
+@property (nonatomic, readonly) NSString *text;
+
+/*!
+ @property timeRange
+ @abstract
+	The time range during which the caption should be presented.
+
+	Apple iTT format doesn't allow two captions to have overlapped time range except when the two captions are associated with different regions.
+
+	CEA608 closed caption time ranges can't start with zero, because the decoder needs some transmission time.
+	CEA608 closed caption time ranges should be aligned with the video frame rate because this is how often the commands are delivered.
+ */
+@property (nonatomic, readonly) CMTimeRange timeRange;
+
+@end
+
+/*!
+ @class AVMutableCaption
+ @abstract
+	Mutable subclass of AVCaption.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVMutableCaption : AVCaption
+{
+	AVMutableCaptionInternal *_mutableInternal;
+}
+
+/*!
+ @property text
+ @abstract
+	The text content of the caption.
+ @discussion
+	All styling information is cleared on setting this property.
+ */
+@property (nonatomic, copy) NSString *text;
+
+/*!
+ @property timeRange
+ @abstract
+	The time range during which the caption should be presented.
+ */
+@property (nonatomic, assign) CMTimeRange timeRange;
+
+@end
+
+/*!
+ @enum AVCaptionFontWeight
+ @abstract
+	Choices for font weight.
+ @constant AVCaptionFontWeightUnknown Font weight is unknown.
+ @constant AVCaptionFontWeightNormal Font weight is normal (i.e., not bold).
+ @constant AVCaptionFontWeightBold Font weight is bold.
+
+ */
+typedef NS_ENUM(NSInteger, AVCaptionFontWeight) {
+	AVCaptionFontWeightUnknown = 0,
+	AVCaptionFontWeightNormal = 1,
+	AVCaptionFontWeightBold = 2
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionFontStyle
+ @abstract
+	Choices for character style.
+ @constant AVCaptionFontStyleUnknown Font style is not specified.
+ @constant AVCaptionFontStyleNormal Font is normal (i.e., not italic)
+ @constant AVCaptionFontStyleItalic Font is italic.
+
+ */
+typedef NS_ENUM(NSInteger, AVCaptionFontStyle) {
+	AVCaptionFontStyleUnknown = 0,
+	AVCaptionFontStyleNormal = 1,
+	AVCaptionFontStyleItalic = 2
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionDecoration
+ @abstract
+	Choices for character decoration .
+ @constant AVCaptionDecorationNone Text is not decorated..
+ @constant AVCaptionDecorationUnderline Text is underlined.
+ @constant AVCaptionDecorationLineThrough Text has a strike through it.
+ @constant AVCaptionDecorationOverline Text has a line above the it.
+
+ */
+typedef NS_OPTIONS(NSUInteger, AVCaptionDecoration) {
+	AVCaptionDecorationNone        = 0,
+	AVCaptionDecorationUnderline   = 1 << 0,
+	AVCaptionDecorationLineThrough = 1 << 1,
+	AVCaptionDecorationOverline    = 1 << 2,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionTextCombine
+ @abstract
+	Choices for text combine.
+
+ @discussion
+	Text combine is a special rendering policy to combine multiple characters into one unit and present it in upright position in a vertical text flow in order to accomplish so-called "Tate-Chu-Yoko" layout, or horizontal-in-vertical layout.
+
+	For example, it can be used to render "2017" horizontally in a vertical text.
+
+ @constant AVCaptionTextCombineNone
+	Don't combine text upright. It is the same as not specifying the style.
+
+ @constant AVCaptionTextCombineAll
+	Combine all the characters.
+
+ @constant AVCaptionTextCombineOneDigit
+	Make one digit upright.
+
+ @constant AVCaptionTextCombineTwoDigits
+	Combine two consecutive digits
+
+ @constant AVCaptionTextCombineThreeDigits
+	Combine three consecutive digits
+
+ @constant AVCaptionTextCombineFourDigits
+	Combine four consecutive digits
+ */
+typedef NS_ENUM(NSInteger, AVCaptionTextCombine) {
+	AVCaptionTextCombineAll         = -1,
+	AVCaptionTextCombineNone        = 0,
+	AVCaptionTextCombineOneDigit    = 1,
+	AVCaptionTextCombineTwoDigits   = 2,
+	AVCaptionTextCombineThreeDigits = 3,
+	AVCaptionTextCombineFourDigits  = 4,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionTextAlignment
+ @abstract
+	Alignment of a caption within the containing region.
+ @constant AVCaptionTextAlignmentStart
+	Aligned to the start of inline progression direction; e.g. left in left-to-right writing mode and right in right-to-left writing mode.
+ @constant AVCaptionTextAlignmentEnd
+	Aligned to the end of inline progression direction; e.g. right in left-to-right writing mode and right in right-to-left writing mode.
+ @constant AVCaptionTextAlignmentCenter
+	Aligned at center in inline progression direction.
+ @constant AVCaptionTextAlignmentLeft
+	Aligned to left in horizontal writing mode or top in vertical writing mode.
+ @constant AVCaptionTextAlignmentRight
+	Aligned to right in horizontal writing mode or bottom in vertical writing mode.
+ */
+typedef NS_ENUM(NSInteger, AVCaptionTextAlignment) {
+	AVCaptionTextAlignmentStart     = 0,
+	AVCaptionTextAlignmentEnd       = 1,
+	AVCaptionTextAlignmentCenter    = 2,
+	AVCaptionTextAlignmentLeft      = 3,
+	AVCaptionTextAlignmentRight     = 4,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+
+@interface AVCaption (Styling)
+
+/*!
+ @method textColorAtIndex:range:
+ @abstract
+	The color of the character(s).
+ @discussion
+	A value of NULL means that the color is not specified. The caller must release the returned object via CGColorRelease. The range parameter receives UTF-16 code unit index range the style is effective. The range will indicate where the current style returned (including NULL) will be active and allows discovery of the next change in the style.
+
+	CEA608 closed captions support the following 8 colors with 1.0 alpha value.
+		White	(RGB:1.0, 1.0, 1.0)
+		Red		(RGB:1.0, 0.0, 0.0)
+		Blue	(RGB:0.0, 0.0, 1.0)
+		Green	(RGB:0.0, 1.0, 0.0)
+		Yellow	(RGB:1.0, 1.0, 0.0)
+		Cyan	(RGB:0.0, 1.0, 1.0)
+		Magenta	(RGB:1.0, 0.0, 1.0)
+		Black	(RGB:0.0, 0.0, 0.0)
+ */
+- (nullable CGColorRef)textColorAtIndex:(NSInteger)index range:(nullable NSRange *)outRange CF_RETURNS_RETAINED;
+
+/*!
+ @method backgroundColorAtIndex:range:
+ @abstract
+	The background color of the character(s).
+ @discussion
+	A value of NULL means that the color is not specified. The caller must release the returned object via CGColorRelease. The range parameter receives UTF-16 code unit index range the style is effective. After returning from the call, the range will indicate where the current style returned (including NULL) will be active and allows discovery of the next change in the style.
+
+	iTT format ignores this property.
+
+	CEA608 closed captions support the following 8 colors with 1.0, 0.5 and 0.0 alpha values.
+		White	(RGB:1.0, 1.0, 1.0)
+		Red		(RGB:1.0, 0.0, 0.0)
+		Blue	(RGB:0.0, 0.0, 1.0)
+		Green	(RGB:0.0, 1.0, 0.0)
+		Yellow	(RGB:1.0, 1.0, 0.0)
+		Cyan	(RGB:0.0, 1.0, 1.0)
+		Magenta	(RGB:1.0, 0.0, 1.0)
+		Black	(RGB:0.0, 0.0, 0.0)
+ */
+- (nullable CGColorRef)backgroundColorAtIndex:(NSInteger)index range:(nullable NSRange *)outRange CF_RETURNS_RETAINED;
+
+/*!
+ @method fontWeightAtIndex:range:
+ @abstract
+	Indicates the font weight of the character(s).
+ @discussion
+	The range parameter receives UTF-16 code unit index range the style is effective. After returning from the call, the range will indicate where the current style returned will be active and allows discovery of the next change in the style.
+
+	CEA608 closed captions ignore this property.
+ 
+ 	A visible distinction between AVCaptionFontWeightNormal and AVCaptionFontWeightBold may not exist if the font used has only one weight. This can be more common with CJK fonts where individual fonts can be quite large in terms of storage. Nevertheless, AVCaption still carries the font weight semantics so if the same AVCaption is applied to a different font having multiple weights, the distinction will become visible.
+ */
+- (AVCaptionFontWeight)fontWeightAtIndex:(NSInteger)index range:(nullable NSRange *)outRange;
+
+/*!
+ @method fontStyleAtIndex:range:
+ @abstract
+	Indicates the font style of the character(s).
+ @discussion
+	The range parameter receives UTF-16 code unit index range the style is effective. After returning from the call, the range will indicate where the current style returned will be active and allows discovery of the next change in the style.
+ 
+ 	Some writing systems may not have italic glyphs for characters and so fonts with italic forms are not available. For example, Japanese fonts do not typically have italic forms for most characters although there may be special cases for Latin characters. Nevertheless, AVCaption still carries the font style semantics even though there may be no visible rendering distinction between using AVCaptionFontStyleNormal and AVCaptionFontStyleItalic with that language.
+ */
+- (AVCaptionFontStyle)fontStyleAtIndex:(NSInteger)index range:(nullable NSRange *)outRange;
+
+/*!
+ @method	decorationAtIndex:range:
+ @abstract	Character decoration
+ @discussion
+ 	The value of OR-ed value of AVCaptionDecoration as NSInteger. The range parameter receives UTF-16 code unit index range the style is effective. After returning from the call, the range will indicate where the current style returned will be active and allows discovery of the next change in the style.
+
+	CEA608 closed captions support only AVCaptionDecorationNone and AVCaptionDecorationUnderline.
+*/
+- (AVCaptionDecoration)decorationAtIndex:(NSInteger)index range:(nullable NSRange *)outRange;
+
+/*!
+  @method	textCombineAtIndex:range:
+  @abstract	Text combine (Tate-Chu-Yoko)
+  @discussion
+	The style is effective only in a vertical text region.
+
+	When specified, the renderer combines all the characters in the style range so that their glyph areas consume the nominal bounding box of a single em square of the surrounding vertical text.
+ */
+- (AVCaptionTextCombine)textCombineAtIndex:(NSInteger)index range:(nullable NSRange *)outRange;
+
+/*!
+  @method	rubyAtIndex:range:
+  @abstract Get Ruby associated with the characters.
+  @discussion
+ 	The range parameter receives UTF-16 code unit index range where the ruby text is applied. After returning from the call, the range will indicate where the current style returned (including NULL) will be active and allows discovery of the next change in the style.
+
+	It returns nil when the text doesn't have a ruby at the position.
+
+	CEA608 closed captions ignore this property.
+ */
+- (nullable AVCaptionRuby *)rubyAtIndex:(NSInteger)index range:(nullable NSRange *)outRange;
+
+@end
+
+@interface AVCaption (Region)
+/*!
+ @property region
+ @abstract
+	The region where the caption is placed.
+ @discussion
+	It can be nil when the underlying caption format doesn't support or use regions.
+ */
+@property (nonatomic, readonly, nullable) AVCaptionRegion *region;
+
+/*!
+  @property textAlignment
+  @abstract
+	The text alignemnt within the containing region.
+ */
+@property (nonatomic, readonly) AVCaptionTextAlignment textAlignment;
+@end
+
+@interface AVCaption (Animation)
+@property (nonatomic, readonly) AVCaptionAnimation animation;
+@end
+
+@interface AVMutableCaption (Styling)
+
+/*!
+  @method	setTextColor:inRange:
+  @abstract Set text color for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setTextColor:(CGColorRef)color inRange:(NSRange)range;
+
+/*!
+  @method	setBackgroundColor:inRange:
+  @abstract Set background color for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setBackgroundColor:(CGColorRef)color inRange:(NSRange)range;
+
+/*!
+  @method	setFontWeight:inRange:
+  @abstract Set font weight for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setFontWeight:(AVCaptionFontWeight)fontWeight inRange:(NSRange)range;
+
+/*!
+  @method	setFontStyle:inRange:
+  @abstract Set font style for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setFontStyle:(AVCaptionFontStyle)fontStyle inRange:(NSRange)range;
+
+/*!
+  @method	setDecoration:inRange:
+  @abstract Set text decoration for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setDecoration:(AVCaptionDecoration)decoration inRange:(NSRange)range;
+
+/*!
+  @method	setTextCombine:inRange:
+  @abstract Set text combine for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setTextCombine:(AVCaptionTextCombine)textCombine inRange:(NSRange)range;
+
+/*!
+  @method	setRuby:inRange:
+  @abstract Set ruby text  for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)setRuby:(AVCaptionRuby *)ruby inRange:(NSRange)range;
+
+/*!
+  @method	removeTextColorInRange:
+  @abstract Remove text color for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeTextColorInRange:(NSRange)range;
+
+/*!
+  @method	removeBackgroundColorInRange:
+  @abstract Remove background color for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeBackgroundColorInRange:(NSRange)range;
+
+/*!
+  @method	removeFontWeightInRange:
+  @abstract Remove font weight for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeFontWeightInRange:(NSRange)range;
+
+/*!
+  @method	removeFontStyleInRange:
+  @abstract Remove font style for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeFontStyleInRange:(NSRange)range;
+
+/*!
+  @method	removeDecorationInRange:
+  @abstract Remove text decoration for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeDecorationInRange:(NSRange)range;
+
+/*!
+  @method	removeTextCombineInRange:
+  @abstract Remove text combine for the range.
+  @discussion
+ 	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeTextCombineInRange:(NSRange)range;
+
+/*!
+  @method	removeRubyInRange:
+  @abstract Remove ruby text  for the range.
+  @discussion
+	The range parameter uses UTF-16 code unit index range.
+ */
+- (void)removeRubyInRange:(NSRange)range;
+
+@end
+
+@interface AVMutableCaption (Region)
+/*!
+ @property region
+ @abstract
+	The region where the caption is placed.
+ @discussion
+	It can be nil when the underlying caption format doesn't support or use regions.
+ */
+@property (nonatomic, copy) AVCaptionRegion *region;
+
+/*!
+  @property textAlignment
+  @abstract
+	The text alignemnt within the containing region.
+ */
+@property (nonatomic, assign) AVCaptionTextAlignment textAlignment;
+@end
+
+@interface AVMutableCaption (Animation)
+@property (nonatomic, assign) AVCaptionAnimation animation;
+@end
+
+/*!
+ @enum AVCaptionRubyPosition
+ @abstract
+    Choices for Ruby position
+ @constant AVCaptionRubyPositionBefore
+    Display Ruby text above horizontal text or right of vertical text in a right to left block progression.
+ @constant AVCaptionRubyPositionAfter
+    Display Ruby text below horizontal text or left of vertical text in a right to left block progression.
+ */
+typedef NS_ENUM(NSInteger, AVCaptionRubyPosition) {
+	AVCaptionRubyPositionBefore = 0,
+	AVCaptionRubyPositionAfter  = 1,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @enum AVCaptionRubyAlignment
+ @abstract
+    Choices for Ruby alignment
+
+ @discussion
+	Given a ruby text rendering area denoted as [...], each spacing policy works as follows.
+
+	Start          [Ruby Text         ]
+
+	Center         [     Ruby Text    ]
+
+	SpaceBetween   [R u b y  T e x t]    <- 'R' and 't' are aligned with start end end edges, spaces between each Ruby text character is equal.
+
+	SpaceAround    [ R u b y  T e x t ]  <- Spaces around each Ruby text character is equal
+
+ @constant AVCaptionRubyAlignmentStart
+    Align Ruby base and text at left edge of horizontal text in a left to right inline progression, or at top of the vertical text in a top to bottom inline progression.
+ @constant AVCaptionRubyAlignmentCenter
+    Align Ruby text at the center of Ruby base.
+ @constant AVCaptionRubyAlignmentDistributeSpaceBetween
+    Align Ruby text so that the spaces between the Ruby text characters are equal. This is the default.
+ @constant AVCaptionRubyAlignmentDistributeSpaceAround
+    Align Ruby text so that the spaces around each Ruby text character are equal.
+ */
+typedef NS_ENUM(NSInteger, AVCaptionRubyAlignment) {
+	AVCaptionRubyAlignmentStart                  = 0,
+	AVCaptionRubyAlignmentCenter                 = 1,
+	AVCaptionRubyAlignmentDistributeSpaceBetween = 2,
+	AVCaptionRubyAlignmentDistributeSpaceAround  = 3,
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionRuby : NSObject <NSCopying, NSSecureCoding>
+{
+@private
+	AVCaptionRubyInternal *_internal;
+}
+AV_INIT_UNAVAILABLE
+
+- (instancetype)initWithText:(NSString *)text NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithText:(NSString *)text position:(AVCaptionRubyPosition)position alignment:(AVCaptionRubyAlignment)alignment;
+
+/*!
+ @property text
+ @abstract
+	The ruby text
+ */
+@property (nonatomic, readonly) NSString *text;
+
+/*!
+ @property position
+ @abstract
+	The position of ruby text with respect to the ruby base.
+ */
+@property (nonatomic, readonly) AVCaptionRubyPosition position;
+
+/*!
+ @property alignment
+ @abstract
+	The alignment of ruby text.
+ */
+@property (nonatomic, readonly) AVCaptionRubyAlignment alignment;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaption.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionConversionValidator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionConversionValidator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionConversionValidator.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/AVFoundation.framework/Headers/AVCaptionConversionValidator.h	2021-06-02 11:07:17.000000000 -0400
@@ -0,0 +1,236 @@
+#if !__has_include(<AVFCore/AVCaptionConversionValidator.h>)
+/*
+    File:  AVCaptionConversionValidator.h
+ 
+    Framework:  AVFoundation
+ 
+	Copyright 2017-2021 Apple Inc. All rights reserved.
+ 
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVCaption.h>
+#import <AVFoundation/AVCaptionSettings.h>
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVCaptionConversionWarning;
+
+/*!
+ @enum AVCaptionConversionValidatorStatus
+ @abstract
+	These constants are returned by the AVCaptionConversionValidator status property to indicate the progress of a validation operation.
+ 
+ @constant	 AVCaptionConversionValidatorStatusUnknown
+	Indicates that the validation operation has not yet been initiated.
+ @constant	 AVCaptionConversionValidatorStatusValidating
+	Indicates that the validation operation is currently in progress.
+ @constant	 AVCaptionConversionValidatorStatusCompleted
+	Indicates that the validation operation has been completed.
+ @constant	 AVCaptionConversionValidatorStatusStopped
+	Indicates that the validation operation was stopped prior to completion.
+*/
+typedef NS_ENUM(NSInteger, AVCaptionConversionValidatorStatus) {
+	AVCaptionConversionValidatorStatusUnknown = 0,
+    AVCaptionConversionValidatorStatusValidating = 1,
+    AVCaptionConversionValidatorStatusCompleted = 2,
+    AVCaptionConversionValidatorStatusStopped = 3
+} API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @class         AVCaptionConversionValidator
+ @abstract      Performs a validation of captions for a conversion operation and warns about problems that are encountered.
+*/
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos)
+@interface AVCaptionConversionValidator : NSObject {
+@private
+	void *_validatorInternal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method        captionConversionValidatorWithCaptions:startTime:conversionSettings:
+ @abstract      Returns an instance of AVCaptionConversionValidator that can validate an array of captions for a specific conversion operation and warn about problems that are encountered.
+ @param         captions
+				The array of captions to be validated.
+ @param         timeRange
+                The timeRange of the media timeline into which the specified captions must be integrated. See the timeRange property for further details.
+ @param         conversionSettings
+                Describes the conversion operation for which the captions are to be validated.
+ @result        A new instance of AVCaptionConversionValidator configured to perform the specified validation.
+*/
++ (instancetype)captionConversionValidatorWithCaptions:(NSArray<AVCaption *> *)captions timeRange:(CMTimeRange)timeRange conversionSettings:(NSDictionary *)conversionSettings;
+
+/*!
+ @method        initWithCaptions:startTime:conversionSettings:
+ @abstract      Returns an instance of AVCaptionConversionValidator that can validate an array of captions for a specific conversion operation and warn about problems that are encountered.
+ @param         captions
+				The array of captions for which the validation is requested.
+ @param         timeRange
+				The timeRange of the media timeline into which the specified captions must be integrated. See the timeRange property for further details.
+ @param         conversionSettings
+				Describes the conversion operation for which the captions are to be validated.
+ @result        A new instance of AVCaptionConversionValidator configured to perform the specified validation.
+*/
+- (instancetype)initWithCaptions:(NSArray<AVCaption *> *)captions timeRange:(CMTimeRange)timeRange conversionSettings:(NSDictionary<AVCaptionSettingsKey, id> *)conversionSettings;
+
+/*!
+ @property      status
+ @abstract      Indicates the status of the validation.
+*/
+@property (readonly) AVCaptionConversionValidatorStatus status;
+
+/*!
+ @property      captions
+ @abstract      The array of captions to be validated for the specified conversion operation.
+*/
+@property (readonly) NSArray<AVCaption *> *captions;
+
+/*!
+ @property      timeRange
+ @abstract      The timeRange of the media timeline into which the specified captions must be integrated.
+ @discussion
+   The start of this timeRange may be less than the start of the timeRange of the initial caption in the captions array, if the captions are to appear only after the start of accompanying video or audio. If no definite duration for the media timeline is known, the timeRange can have a duration of kCMTimePositiveInfinity. However, in order to perform a comprehensive validation of a conversion to closed captions, setting the duration of the timeRange to the duration of accompanying video media is recommended.
+*/
+@property (readonly) CMTimeRange timeRange;
+
+/*!
+ @method        validateCaptionConversionWithWarningHandler:
+ @abstract      Initiates the specified validation and changes the value of status to AVCaptionConversionValidatorStatusValidating.
+ @param         handler
+                Specifies a block to be executed in order to warn you of a specific problem.
+ @discussion
+   It is an error to invoke this method when the value of status is greater than AVCaptionConversionValidatorStatusUnknown.
+   If you wish to stop a validation operation in progress before it has been completed, send the message stopValidating to the receiver.
+   When the validation is complete and all warnings have been reported, the block will be executed once with a value of nil for its warning parameter. When this occurs, the value of status will have been changed to AVCaptionConversionValidatorStatusCompleted.
+*/
+- (void)validateCaptionConversionWithWarningHandler:(void (^)(AVCaptionConversionWarning * _Nullable warning))handler;
+
+/*!
+ @method        stopValidating
+ @abstract      Stops validation and changes the value of status to AVCaptionConversionValidatorStatusStopped.
+ @discussion
+   You can call this method at any time, even within your warning handler.
+*/
+- (void)stopValidating;
+
+/*!
+ @property      warnings
+ @abstract      Provides the collection of warnings for problems that have been encountered. While the value of status is AVCaptionConversionValidatorStatusValidating, the count of warnings may increase.
+*/
+@property (readonly) NSArray<AVCaptionConversionWarning *> *warnings;
+
+@end
+
+@class AVCaptionConversionAdjustment;
+
+/*!
+ @typedef       AVCaptionConversionWarningType
+ @abstract      The type of a caption conversion warning.
+*/
+typedef NSString *AVCaptionConversionWarningType NS_TYPED_ENUM API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @constant      AVCaptionConversionWarningTypeExcessMediaData
+ @abstract      Indicates that one or more captions in the validator's captions array exceed the capacity for media data of the media type and subtype specified by the conversion settings.
+*/
+AVF_EXPORT AVCaptionConversionWarningType const AVCaptionConversionWarningTypeExcessMediaData API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @class         AVCaptionConversionWarning
+ @abstract      Reports a specific problem encountered during the validation of a caption conversion.
+*/
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos)
+@interface AVCaptionConversionWarning : NSObject {
+@private
+	void *_warningInternal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property      warningType
+ @abstract      Indicates the type of warning provided by the receiver.
+*/
+@property (readonly) AVCaptionConversionWarningType warningType;
+
+/*!
+ @property      rangeOfCaptions
+ @abstract      Indicates the range of captions in the validator's captions array for which the specified warning has been issued.
+ @discussion    Only captions with the same start time and duration will be referenced. If captions with different start times and durations exhibit similar problems, a separate instance of AVCaptionConversionWarning will be used to indicate each problematic case. If the referenced captions have multiple problems, a separate instance of AVCaptionConversionWarning will be issued to indicate each problem.
+
+*/
+@property (readonly) NSRange rangeOfCaptions;
+
+/*!
+ @property      adjustment
+ @abstract      Indicates an adjustment to the indicated captions that can be applied in order to correct the problem.
+ @discussion    If the value of adjustment is not nil and the conversion operation is performed without correcting the problem, the adjustment will be applied during conversion. If the value of adjustment is nil and the conversion operation is performed without correcting the problem, the indicated captions will be omitted from the output media data.
+*/
+@property (readonly, nullable) AVCaptionConversionAdjustment *adjustment;
+
+@end
+
+/*!
+ @typedef       AVCaptionConversionAdjustmentType
+ @abstract      The type of a caption conversion adjustment.
+*/
+typedef NSString *AVCaptionConversionAdjustmentType NS_TYPED_ENUM API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @constant      AVCaptionConversionAdjustmentTypeTimeRange
+ @abstract      Indicates a timing adjustment.
+*/
+AVF_EXPORT AVCaptionConversionAdjustmentType const AVCaptionConversionAdjustmentTypeTimeRange API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @class         AVCaptionConversionAdjustment
+ @abstract      Describes an adjustment that can be performed in order to correct a problem encountered during the validation of a caption conversion.
+*/
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos)
+@interface AVCaptionConversionAdjustment : NSObject {
+@private
+	void *_adjustmentInternal __attribute__((unused));
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property      adjustmentType
+ @abstract      Indicates the type of adjustment described by the receiver.
+*/
+@property (readonly) AVCaptionConversionWarningType adjustmentType;
+
+@end
+
+/*!
+ @class         AVCaptionConversionTimeRangeAdjustment
+ @abstract      Describes an adjustment to the timeRange of one or more captions.
+*/
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos)
+@interface AVCaptionConversionTimeRangeAdjustment : AVCaptionConversionAdjustment {
+@private
+	void *_timeRangeAdjustmentInternal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property      startAdjustment
+ @abstract      Indicates the amount by which the timeRange.start of the captions must be adjusted in order to correct a problem.
+ @discussion    The value may any numeric value, positive, negative, or zero.
+*/
+@property (readonly) CMTime startAdjustment;
+
+/*!
+ @property      durationAdjustment
+ @abstract      Indicates the amount by which the timeRange.duration of the captions must be adjusted in order to correct a problem.
+ @discussion    The value may any numeric value, positive, negative, or zero.
+*/
+@property (readonly) CMTime durationAdjustment;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaptionConversionValidator.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionFormatConformer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionFormatConformer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionFormatConformer.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/AVFoundation.framework/Headers/AVCaptionFormatConformer.h	2021-06-02 11:07:19.000000000 -0400
@@ -0,0 +1,78 @@
+#if !__has_include(<AVFCore/AVCaptionFormatConformer.h>)
+/*
+	File:  AVCaptionFormatConformer.h
+
+	Framework:  AVFoundation
+
+	Copyright 2018-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVCaption.h>
+#import <AVFoundation/AVCaptionSettings.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @class AVCaptionFormatConformer
+ @abstract
+	Performs a conversion of canonical caption to conform to a specific format.
+*/
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionFormatConformer : NSObject
+{
+@private
+	void *_conformerInternal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method	captionFormatConformerWithConversionSettings:conversionSettings:
+ @abstract	Returns an instance of AVCaptionFormatConformer that can convert a canonical caption to conform to a specific format.
+ @param		conversionSettings
+ 			Describes the conversion operation for which the caption is to be conformed.
+ @result	A new instance of AVCaptionFormatConformer configured to perform the specified conversion.
+*/
++ (instancetype)captionFormatConformerWithConversionSettings:(NSDictionary<AVCaptionSettingsKey, id> *)conversionSettings;
+
+/*!
+ @method	initWithConversionSettings:conversionSettings:
+ @abstract	Returns an instance of AVCaptionFormatConformer that can convert a canonical caption to conform to a specific format.
+ @param		conversionSettings
+ 			Describes the conversion operation for which the caption is to be conformed.
+ @result	A new instance of AVCaptionFormatConformer configured to perform the specified conversion.
+*/
+- (instancetype)initWithConversionSettings:(NSDictionary<AVCaptionSettingsKey, id> *)conversionSettings NS_DESIGNATED_INITIALIZER;
+
+/*!
+ @property	conformsCaptionTimeRange
+ @abstract	Specifies whether to conform the time range of a given canonical caption as well.
+ @discussion
+	When set to YES, conforms time range.
+	When set to NO, the time range of the conformed caption will be same as a given canonical caption.
+	In the case of conforming to CAE608 format, AVCaption is encoded so that each CAE608 control code (2 bytes) fits into 1 frame duration (1001/30000).
+	When set to YES and if all the encoded data can not fit inside the canonical caption time range, the caption time range will be extended to fit all the data and will be returned in the conformed AVCaption.
+	The default value is NO.
+*/
+@property (nonatomic) BOOL conformsCaptionTimeRange;
+
+/*!
+ @method	conformedCaptionForCaption:error:
+ @abstract	Creates a format-compliant caption that conforms to a specific format by converting a given canonical caption.
+ @param		caption
+			Specifies a canonical caption to be converted.
+ @param		outError
+			A pointer where a NSError object may be returned.
+ @result	A format-compliant caption that conforms to a specific format.
+*/
+- (nullable AVCaption *)conformedCaptionForCaption:(AVCaption *)caption error:(NSError * _Nullable * _Nullable)outError;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaptionFormatConformer.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGroup.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGroup.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGroup.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/AVFoundation.framework/Headers/AVCaptionGroup.h	2021-06-02 11:07:19.000000000 -0400
@@ -0,0 +1,99 @@
+#if !__has_include(<AVFCore/AVCaptionGroup.h>)
+/*
+	File:  AVCaptionGroup.h
+
+	Framework:  AVFoundation
+ 
+	Copyright 2015-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+#import <CoreMedia/CMTimeRange.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVCaptionGroupInternal;
+@class AVCaption;
+
+/*!
+ @class AVCaptionGroup
+ @abstract
+	An instance of AVCaptionGroup represents zero or more captions that intersect in time.
+ @discussion
+ 	The time range of each caption may overlap as there can be more than one active caption at a time. A sequence of AVCaptionGroup objects represents such overlapping caption timeline.
+
+	An instance of AVCaptionGroup has a time range and a list of active captions for the time range. Two successive AVCaptionGroup objects have contiguous and non-overlapping time ranges. A new AVCaptionGroup time range commences whenever any of caption becomes active or inactive. When a caption spans over multiple AVCaptionGroup time ranges, these  AVCaptionGroup objects refer to an equal AVCaption object. 
+
+	An empty AVCaptionGroup represents the time range without any active captions.
+
+	The list of captions in the group is ordered according to the document order. For example, suppose a TTML document has two temporally overhapping captions:
+	
+    <div>
+      <p begin="1s" end="3s">Hello<p>
+      <p begin="0s" end="2s">World<p>
+    </div>
+	
+	AVCaptionGroup for time range 1s to 2s has the list of captions: Hello and World in this order despite the fact that "World" is shown earlier than "Hello". 
+
+	A client may use AVCaptionGroup to get the list of active captions for the time range. For example, presentation processing may find the AVCaptionGroup object for the current time, get the list of captions, and place them into the destination display region. 
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionGroup : NSObject
+{
+@private
+	AVCaptionGroupInternal *_internal;
+}
+
+/*!
+ @method initWithCaptions:timeRange:
+ @abstract
+	Initializes a caption group with the given set of captions and the time range.
+ @discussion
+	Every caption in the array must be equal or sub range of the time range, otherwise an exception is raised. 
+ @param captions
+	The captions that will be included in the group. The array is coped.
+ @result
+	A newly-initialized caption group.
+ */
+- (instancetype)initWithCaptions:(NSArray<AVCaption*> *)captions timeRange:(CMTimeRange)timeRange;
+
+/*!
+ @method initWithTimeRange:
+ @abstract
+	Initializes an empty caption group with the given time range.
+ @discussion
+	This is a convenient initializer to create an empty caption group time range.
+ @param timeRange
+	The time range for which there are no captions.
+ @result
+	A newly-initialized empty caption group.
+ */
+- (instancetype)initWithTimeRange:(CMTimeRange)timeRange;
+
+/*!
+ @property timeRange
+ @abstract
+	The time range represented by the caption group.
+ @discussion
+	If there are no captions in the group (i.e. the value of the captions property is an empty array), then the value of this property represents the time range of a sequence where no captions are present.
+ */
+@property (nonatomic, readonly) CMTimeRange timeRange;
+
+/*!
+ @property captions
+ @abstract
+	An array of AVCaption objects.
+ @discussion
+	If the value is an empty array, the caption group represents a region of the timeline in which there are no captions.
+ */
+@property (nonatomic, readonly) NSArray<AVCaption*> *captions;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaptionGroup.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGrouper.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGrouper.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionGrouper.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/AVFoundation.framework/Headers/AVCaptionGrouper.h	2021-06-02 11:07:18.000000000 -0400
@@ -0,0 +1,34 @@
+#if !__has_include(<AVFCore/AVCaptionGrouper.h>)
+/*
+	File:  AVCaptionGrouper.h
+ 
+	Framework:  AVFoundation
+ 
+	Copyright 2015-2021 Apple Inc. All rights reserved.
+ 
+*/
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVCaption.h>
+#import <AVFoundation/AVCaptionGroup.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionGrouper : NSObject
+{
+@private
+	NSMutableArray<AVCaption *> *_captionCollector;
+	CMTime _captionGroupStartTime;
+}
+
+- (void)addCaption:(AVCaption *)input;
+- (NSArray<AVCaptionGroup *> *)flushAddedCaptionsIntoGroupsUpToTime:(CMTime)upToTime;
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaptionGrouper.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionRenderer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionRenderer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionRenderer.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/AVFoundation.framework/Headers/AVCaptionRenderer.h	2021-06-02 11:07:18.000000000 -0400
@@ -0,0 +1,134 @@
+#if !__has_include(<AVFCore/AVCaptionRenderer.h>)
+/*
+	File:  AVCaptionRenderer.h
+
+	Framework:  AVFoundation
+ 
+	Copyright 2016-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVCaption.h>
+#import <QuartzCore/QuartzCore.h>
+#import <AVFoundation/AVTextStyleRule.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVCaptionRendererScene;
+@class AVCaptionRendererInternal;
+
+#pragma mark --- AVCaptionRenderer ---
+
+/*!
+ @class AVCaptionRenderer
+ @abstract
+	An instance of AVCaptionRenderer represents a service that can render the captions for a particular time
+ @discussion
+	An instance of AVCaptionRenderer performs drawing of a caption "scene" from a population of captions given a time. If there are no captions or no captions at the specified time, "emptiness" will still be drawn (e.g., flood filling with zero alpha or a color).
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionRenderer : NSObject
+{
+@private
+	AVCaptionRendererInternal * _internal;
+}
+
+/*!
+ @property captions
+ @abstract
+	A NSArray holding captions to consider for rendering.
+ @discussion
+	This is the array of AVCaptions to consider when drawing. The array can contain no captions.
+ */
+@property (nonatomic, copy) NSArray<AVCaption *> * captions;
+
+/*!
+ @property bounds
+ @abstract
+	A CGRect holding bounds for the drawing of caption scene(s).
+ @discussion
+	This is a CGRect indicating where captions are drawn using renderInContext:atTime: Once established, this CGRect is used in each call to renderInContext:atTime: until it is changed to another value. This should be set up earlier than drawing.
+ */
+@property (nonatomic) CGRect bounds;
+
+/*!
+ @method		captionSceneChangesInRange:
+ @abstract		Determine render time ranges within an enclosing time range to account for visual changes among captions.
+ @result		An NSArray of AVCaptionRendererScenes; perhaps empty if there are no captions intersecting with the consideredTimeRange
+ @discussion	
+	This is an optional service useful for optimizing drawing. A client can perform drawing without it.
+ 
+	As captions may become active and inactive throughout the timeline, this method will return a NSArray holding scene objects with time ranges on whose edges there's a visual change. The client can use the ranges of time between these edges with -renderInContext:atTime: to ensure all visual changes are rendered. The returned time ranges consider activation/deactivation of captions, temporal overlapping, and intra-caption timing requirements (e.g., character reveal animations). Time ranges may be returned where no captions are active as this is also a change in the caption "scene".
+				
+	The returned NSArray contains AVCaptionRendererScenes, each holding the CMTimeRange of that scene but potentially other information that may be useful to the client during renderering.
+				
+	The consideredTimeRange parameter is a CMTimeRange expressing the limits for consideration. The extent of this range does not need to correspond to the timing of captions. It might be the range from 0 to some duration. For efficiency, the range can be limited to a window of time. It is also possible to use the range anchored at a time and extending in the direction of playback.
+ */
+- (NSArray<AVCaptionRendererScene *> *)captionSceneChangesInRange:(CMTimeRange)consideredTimeRange;
+
+
+/*!
+ @method		renderInContext:forTime:
+ @abstract		Draw the captions corresponding to a time established by the AVCaptions to a CGContext.
+ @discussion	Captions are drawn into the CGContextRef based upon their activation at the specified time. If there are no captions or no captions at the specified time, "emptiness" will still be drawn (e.g., flood filling with zero alpha or a color).
+ */
+- (void)renderInContext:(CGContextRef)ctx forTime:(CMTime)time;
+
+@end
+
+#pragma mark --- AVCaptionRendererScene ---
+
+@class AVCaptionRendererSceneInternal;
+
+/*!
+ @class AVCaptionRendererScene
+ @abstract
+	An instance of AVCaptionRendererScene holds a time range and associated state indicating when the AVCaptionRenderer will draw different output.
+ @discussion
+	In rendering the timeline established by the captions referenced by an AVCaptionRenderer, there are considerations such as temporal overlapping of captions, the existence of captions and other graphical elements like regions, and whether captions may be animated (e.g., scrolling in regions, character reveal in a caption). To communicate to the AVCaptionRenderer client the minimal set of time ranges where there are any visual differences, AVCaptionRendererScenes can be requested from -[AVCaptionRenderer captionSceneChangesInRange:]. A client wanting to optimize drawing performance may use this timing information to draw scenes only once per scene. Alternatively, clients can ignore scenes and repeatedly call renderInContext:atTime: but this may have additional performance impact.
+	
+	Other information about the rendering of a caption scene can be communicated through the AVCaptionRendererScene. For example, if captions are animated, an AVCaptionRendererScene with the time range and an indication of the animation occurring will be returned. There should be no inference from the number of scenes to the number of captions. Even a single caption with internal animations in part of its duration could result in multiple AVCaptionRendererScenes being produced.
+ */
+API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVCaptionRendererScene : NSObject <NSCopying>
+{
+@private
+	AVCaptionRendererSceneInternal * _internal;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property timeRange
+ @abstract
+	The time range during which new captions will not be introduced into or existing captions will be retired from the caption scene
+ */
+@property (nonatomic, readonly) CMTimeRange timeRange;
+
+/*!
+ @property hasActiveCaptions
+ @abstract
+	The scene contains one or more active captions. 
+ @discussion
+	Clients should not use this to restrict their drawing and should call renderInContext:atTime: to draw "emptiness". However, this information may be useful for purposes such as scrubbing to times where captions are present, skipping scenes in which no captions are present.
+ */
+@property (nonatomic, readonly) BOOL hasActiveCaptions;
+
+/*!
+ @property needsPeriodicRefresh
+ @abstract
+	The scene may have embedded animations or other state where periodic redrawing while playing through this scene is needed.
+ @discussion
+ 	This property indicates if refreshing should occur if the client is progressing through the content. If the client is not progressing (i.e., it is treating playback as though the rate is 0.0), a single render at the current render time suffices. This property does not prescribe a refresh rate. A client is free to choose a refresh rate corresponding to rates of associated video frames or other timing appropriate for the client.
+ */
+@property (nonatomic, readonly) BOOL needsPeriodicRefresh;
+
+@end
+
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCore/AVCaptionRenderer.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionSettings.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionSettings.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptionSettings.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/AVFoundation.framework/Headers/AVCaptionSettings.h	2021-06-02 11:07:19.000000000 -0400
@@ -0,0 +1,62 @@
+#if !__has_include(<AVFCore/AVCaptionSettings.h>)
+/*
+	File:  AVCaptionSettings.h
+
+	Framework:  AVFoundation
+
+	Copyright 2018-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+
+/*!
+	@header		AVCaptionSettings
+	@abstract	NSDictionary keys for configuring the output caption format and validation for a caption format
+*/
+
+/*!
+	@typedef	AVCaptionSettingsKey
+	@abstract	Keys for the captions settings dictionary.
+*/
+typedef NSString * AVCaptionSettingsKey NS_TYPED_ENUM API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+	@constant	AVCaptionMediaTypeKey
+	@abstract	Indicates the output media type of a caption conversion operation. For example, AVMediaTypeClosedCaption.
+*/
+AVF_EXPORT AVCaptionSettingsKey const AVCaptionMediaTypeKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+	@constant	AVCaptionMediaSubTypeKey
+	@abstract	Indicates the output media subtype of a caption conversion operation. For example, [NSNumber numberWithInt:kCMClosedCaptionFormatType_CEA608].
+	@discussion
+		Both numeric and string forms of media subtypes are accepted for caption conversions, so you could, for example, use @"c608" instead of [NSNumber numberWithInt:kCMClosedCaptionFormatType_CEA608].
+*/
+AVF_EXPORT AVCaptionSettingsKey const AVCaptionMediaSubTypeKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+    @constant   AVCaptionTimeCodeFrameDurationKey
+    @abstract	Frame duration used for the time code.
+    @discussion
+		Some formats, such as TTML, use time code notation to indicate the timing of a caption. Use the property to specify the frame rate of the time code. 
+
+		For example, if the time code steps for every 1001 / 30000 seconds, the value should be CMTime(value: 1001, scale: 30000).
+*/
+AVF_EXPORT AVCaptionSettingsKey const AVCaptionTimeCodeFrameDurationKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos); // CMTime as NSValue through +[NSValue valueWithCMTime] in AVTime.h
+
+/*!
+	@constant	AVCaptionUseDropFrameTimeCodeKey
+	@abstract	Indicates whether to use drop frame time code.
+	@discussion
+		Some formats, such as SCC, use time code notation to indicate the timing of a caption. Use the property to specify whether to use the drop frame time code or non-drop frame time code.
+		When the value for this key is a NSNumber indicating the BOOL YES, the receiver will use the drop frame time code.
+		When the value for this key is a NSNumber indicating the BOOL NO, the receiver will use the non-drop frame time code.
+		The default is NO.
+*/
+AVF_EXPORT AVCaptionSettingsKey const AVCaptionUseDropFrameTimeCodeKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos);
+
+#else
+#import <AVFCore/AVCaptionSettings.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h	2021-03-16 13:56:36.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h	2021-06-02 05:35:30.000000000 -0400
@@ -4,7 +4,7 @@
  
     Framework:  AVFoundation
  
-    Copyright 2010-2018 Apple Inc. All rights reserved.
+    Copyright 2010-2021 Apple Inc. All rights reserved.
 */
 
 #import <AVFoundation/AVBase.h>
@@ -406,6 +406,7 @@
 } API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDevicePosition)
 
 /*!
@@ -431,7 +432,7 @@
 
 /*!
  @constant AVCaptureDeviceTypeExternalUnknown
- 	An unknown device type.
+    An unknown device type.
  */
 AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeExternalUnknown API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, macCatalyst, watchos, tvos);
 
@@ -526,6 +527,7 @@
 AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeBuiltInDuoCamera API_DEPRECATED("Use AVCaptureDeviceTypeBuiltInDualCamera instead.", ios(10.0, 10.2)) API_UNAVAILABLE(macos) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceType)
 
 /*!
@@ -560,6 +562,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceSystemPressure)
 
 /*!
@@ -575,6 +578,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceVirtual)
 
 /*!
@@ -631,6 +635,7 @@
 } API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceFlash)
 
 /*!
@@ -719,6 +724,7 @@
 AVF_EXPORT const float AVCaptureMaxAvailableTorchLevel API_AVAILABLE(macos(10.15), ios(6.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceTorch)
 
 /*!
@@ -837,6 +843,7 @@
 } API_AVAILABLE(ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceFocus)
 
 /*!
@@ -977,6 +984,16 @@
  */
 - (void)setFocusModeLockedWithLensPosition:(float)lensPosition completionHandler:(nullable void (^)(CMTime syncTime))handler API_AVAILABLE(ios(8.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos);
 
+/*!
+ @property minimumFocusDistance
+ @abstract
+    A property indicating the minimum focus distance.
+ 
+ @discussion
+    The minimum focus distance is given in millimeters, -1 if unknown. For virtual cameras (AVCaptureDeviceTypeBuiltInDualCamera, AVCaptureDeviceTypeBuiltInTripleCamera, etc.), the value reported is the smallest minimum focus distance of the auto-focus-capable cameras that it sources.
+ */
+@property(nonatomic, readonly) NSInteger minimumFocusDistance API_AVAILABLE(macos(12.0), ios(15.0), macCatalyst(15.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
+
 @end
 
 
@@ -1002,6 +1019,7 @@
 } API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceExposure)
 
 /*!
@@ -1194,6 +1212,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceToneMapping)
 
 /*!
@@ -1275,6 +1294,7 @@
 } AVCaptureWhiteBalanceTemperatureAndTintValues API_AVAILABLE(ios(8.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceWhiteBalance)
 
 /*!
@@ -1436,6 +1456,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceSubjectAreaChangeMonitoring)
 
 /*!
@@ -1451,6 +1472,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceLowLightBoost)
 
 /*!
@@ -1486,6 +1508,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceVideoZoom)
 
 /*!
@@ -1575,6 +1598,7 @@
 } API_AVAILABLE(macos(10.14), ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceAuthorization)
 
 /*!
@@ -1642,6 +1666,7 @@
 } API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, macCatalyst, watchos, tvos);
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceTransportControls)
 
 /*!
@@ -1697,6 +1722,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceHighDynamicRangeSupport)
 
 /*!
@@ -1705,7 +1731,7 @@
     Indicates whether the receiver is allowed to turn high dynamic range streaming on or off.
  
  @discussion
-    The value of this property is a BOOL indicating whether the receiver is free to turn high dynamic range streaming on or off. This property defaults to YES. By default, AVCaptureDevice always turns off videoHDREnabled when a client uses the -setActiveFormat: API to set a new format. When the client uses AVCaptureSession's setSessionPreset: API instead, AVCaptureDevice turns videoHDR on automatically if it's a good fit for the preset. -setAutomaticallyAdjustsVideoHDREnabled: throws an NSGenericException if called without first obtaining exclusive access to the receiver using -lockForConfiguration:. Clients can key-value observe videoHDREnabled to know when the receiver has automatically changed the value.
+    The value of this property is a BOOL indicating whether the receiver is free to turn high dynamic range streaming on or off. This property defaults to YES. When automaticallyAdjustsVideoHDREnabled, the AVCaptureDevice turns videoHDR on automatically if it's a good fit for the activeFormat. -setAutomaticallyAdjustsVideoHDREnabled: throws an NSGenericException if called without first obtaining exclusive access to the receiver using -lockForConfiguration:. Clients can key-value observe videoHDREnabled to know when the receiver has automatically changed the value.
  */
 @property(nonatomic) BOOL automaticallyAdjustsVideoHDREnabled API_AVAILABLE(ios(8.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos);
 
@@ -1715,7 +1741,7 @@
     Indicates whether the receiver's streaming high dynamic range feature is enabled. See AVCaptureDeviceFormat.isVideoHDRSupported.
  
  @discussion
-    The value of this property is a BOOL indicating whether the receiver is currently streaming high dynamic range video buffers. The property may only be set if you first set automaticallyAdjustsVideoHDREnabled to NO, otherwise an NSGenericException is thrown. videoHDREnabled may only be set to YES if the receiver's activeFormat.isVideoHDRSupported property returns YES, otherwise an NSGenericException is thrown. This property may be key-value observed.
+    The value of this property is a BOOL indicating whether the receiver is currently streaming high dynamic range video buffers, also known as Extended Dynamic Range (EDR). The value of this property is ignored when device.activeColorSpace is HLG BT2020 color space since HDR is effectively always on and can't be disabled. The property may only be set if you first set automaticallyAdjustsVideoHDREnabled to NO, otherwise an NSGenericException is thrown. videoHDREnabled may only be set to YES if the receiver's activeFormat.isVideoHDRSupported property returns YES, otherwise an NSGenericException is thrown. This property may be key-value observed.
  
     Note that setting this property may cause a lengthy reconfiguration of the receiver, similar to setting a new active format or AVCaptureSession sessionPreset. If you are setting either the active format or the AVCaptureSession's sessionPreset AND this property, you should bracket these operations with [session beginConfiguration] and [session commitConfiguration] to minimize reconfiguration time.
  */
@@ -1742,6 +1768,7 @@
 } API_AVAILABLE(macos(10.15), ios(10.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED;
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceColorSpaceSupport)
 
 /*!
@@ -1757,6 +1784,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceDepthSupport)
 
 /*!
@@ -1813,6 +1841,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceGeometricDistortionCorrection)
 
 /*!
@@ -1838,6 +1867,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceCalibration)
 
 /*!
@@ -1864,6 +1894,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(4.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDevice (AVCaptureDeviceCenterStage)
 
 /*!
@@ -1872,15 +1903,15 @@
     Constants indicating the current Center Stage control mode.
  
  @constant AVCaptureCenterStageControlModeUser
-    Indicates that the application is unaware of the Center Stage feature. Its enablement is entirely under user control in Settings.
+    Indicates that the application is unaware of the Center Stage feature. Its enablement is entirely under user control in Control Center.
  @constant AVCaptureCenterStageControlModeApp
-    Indicates that the application controls the Center Stage feature, disallowing input from the user in Settings.
+    Indicates that the application controls the Center Stage feature, disallowing input from the user in Control Center.
  @constant AVCaptureCenterStageControlModeCooperative
     Indicates that both the user and application cooperatively share control of the Center Stage feature.
  */
 typedef NS_ENUM(NSInteger, AVCaptureCenterStageControlMode) {
     AVCaptureCenterStageControlModeUser          = 0,
-    AVCaptureCenterStageControlModeApp	         = 1,
+    AVCaptureCenterStageControlModeApp           = 1,
     AVCaptureCenterStageControlModeCooperative   = 2,
 } API_AVAILABLE(ios(14.5), macCatalyst(14.5)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(watchos);
 
@@ -1890,17 +1921,17 @@
     A class property indicating the current mode of Center Stage control (user, app, or cooperative).
  
  @discussion
-    This class property determines how the Center Stage feature is controlled. When set to the default value of AVCaptureCenterStageControlModeUser, centerStageEnabled may not be set programmatically and throws an NSInvalidArgumentException. In User mode, the feature may only be set by the user in Settings. If you wish to take Center Stage control away from the user and exclusively enable / disable it programmatically, set this property to AVCaptureCenterStageControlModeApp. When under exclusive app control, Center Stage user control is disallowed (for instance, the toggle is grayed out in Settings). If you wish to take control of Center Stage, but also cooperate with the user by listening for and appropriately reacting to their changes to the centerStageEnabled property, set this property to AVCaptureCenterStageControlModeCooperative. Note that in this mode, the onus is on you, the app developer, to honor user intent and conform your AVCaptureSession configuration to make Center Stage active (see the AVCaptureDevice instance property centerStageActive). In cooperative mode, the centerStageEnabled property may change at any time (such as when the user enables / disables the feature in Settings).
+    This class property determines how the Center Stage feature is controlled. When set to the default value of AVCaptureCenterStageControlModeUser, centerStageEnabled may not be set programmatically and throws an NSInvalidArgumentException. In User mode, the feature may only be set by the user in Control Center. If you wish to take Center Stage control away from the user and exclusively enable / disable it programmatically, set this property to AVCaptureCenterStageControlModeApp. When under exclusive app control, Center Stage user control is disallowed (for instance, the toggle is grayed out in Control Center). If you wish to take control of Center Stage, but also cooperate with the user by listening for and appropriately reacting to their changes to the centerStageEnabled property, set this property to AVCaptureCenterStageControlModeCooperative. Note that in this mode, the onus is on you, the app developer, to honor user intent and conform your AVCaptureSession configuration to make Center Stage active (see the AVCaptureDevice instance property centerStageActive). In cooperative mode, the centerStageEnabled property may change at any time (such as when the user enables / disables the feature in Control Center).
  */
 @property(class) AVCaptureCenterStageControlMode centerStageControlMode API_AVAILABLE(ios(14.5), macCatalyst(14.5)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(watchos);
 
 /*!
  @property centerStageEnabled
  @abstract
-    A class property indicating whether the Center Stage feature is currently enabled or disabled (such as in Settings or programmatically via your app).
+    A class property indicating whether the Center Stage feature is currently enabled or disabled (such as in Control Center or programmatically via your app).
  
  @discussion
-    This property may only be set if centerStageControlMode is AVCaptureCenterStageControlModeApp or AVCaptureCenterStageControlModeCooperative, and otherwise throws an NSInvalidArgumentException. When centerStageControlMode is AVCaptureCenterStageControlModeUser or AVCaptureCenterStageControlModeCooperative, this property may change according to user desire (such as enabling / disabling the feature in Settings), so you should key-value observe it.
+    This property may only be set if centerStageControlMode is AVCaptureCenterStageControlModeApp or AVCaptureCenterStageControlModeCooperative, and otherwise throws an NSInvalidArgumentException. When centerStageControlMode is AVCaptureCenterStageControlModeUser or AVCaptureCenterStageControlModeCooperative, this property may change according to user desire (such as enabling / disabling the feature in Control Center), so you should key-value observe it.
  */
 @property(class, getter=isCenterStageEnabled) BOOL centerStageEnabled API_AVAILABLE(ios(14.5), macCatalyst(14.5)) API_UNAVAILABLE(macos, tvos) API_UNAVAILABLE(watchos);
 
@@ -1912,7 +1943,7 @@
  @discussion
     This readonly property returns YES when Center Stage is currently active on the receiver. When active, the camera automatically adjusts to keep people optimally framed within the field of view. The field of view may pan, tighten or widen as needed. Certain restrictions come into play when Center Stage is active:
         - The device's minAvailableVideoZoomFactor and maxAvailableVideoZoomFactor become restricted (see AVCaptureDeviceFormat's videoMinZoomFactorForCenterStage and videoMaxZoomFactorForCenterStage).
-        - The device's activeVideoMinFrameDuration and activeVideoMaxFrameDuration are limited (see AVCaptureDeviceFormat's videoMinFrameDurationForCenterStage and videoMaxFrameDurationForCenterStage).
+        - The device's activeVideoMinFrameDuration and activeVideoMaxFrameDuration are limited (see AVCaptureDeviceFormat's videoFrameRateRangeForCenterStage).
     Center Stage may be enabled via user control or application control, depending on the current +AVCaptureDevice.centerStageControlMode. When +AVCaptureDevice.centerStageEnabled is YES, a particular AVCaptureDevice instance may return YES for this property, depending whether it supports the feature in its current configuration. Some device features are mutually exclusive to Center Stage:
         - If depth data delivery is enabled on any output, such as AVCaptureDepthDataOutput, or -AVCapturePhotoOutput.depthDataDeliveryEnabled, Center Stage is deactivated.
         - If geometricDistortionCorrectionSupported is YES, geometricDistortionCorrectionEnabled must also be YES, or Center Stage is deactivated.
@@ -2259,7 +2290,7 @@
     A property indicating whether the format supports high dynamic range streaming.
  
  @discussion
-    videoHDRSupported is a BOOL indicating whether the format supports high dynamic range streaming, also known as Extended Dynamic Range (EDR). When enabled, the device streams at twice the published frame rate, capturing an under-exposed frame and correctly exposed frame for each frame time at the published rate. Portions of the under-exposed frame are combined with the correctly exposed frame to recover detail in darker areas of the scene. EDR is a separate and distinct feature from 10-bit HDR video (first seen in 2020 iPhones). 10-bit formats have greater dynamic range by virtue of their expanded bit depth and HLG BT2020 color space, and when captured in movies, contain Dolby Vision metadata. They are, in effect, "always on" HDR formats and thus their videoHDRSupported property is always NO, since HDR cannot be enabled or disabled. To enable videoHDR (EDR), set the AVCaptureDevice.videoHDREnabled property.
+    videoHDRSupported is a BOOL indicating whether the format supports high dynamic range streaming, also known as Extended Dynamic Range (EDR). When enabled, the device streams at twice the published frame rate, capturing an under-exposed frame and correctly exposed frame for each frame time at the published rate. Portions of the under-exposed frame are combined with the correctly exposed frame to recover detail in darker areas of the scene. EDR is a separate and distinct feature from 10-bit HDR video (first seen in 2020 iPhones). 10-bit formats with HLG BT2020 color space have greater dynamic range by virtue of their expanded bit depth and HLG transfer function, and when captured in movies, contain Dolby Vision metadata. They are, in effect, "always on" HDR. And thus the videoHDRSupported property is always NO for 10-bit formats only supporting HLG BT2020 colorspace, since HDR cannot be enabled or disabled. To enable videoHDR (EDR), set the AVCaptureDevice.videoHDREnabled property.
  */
 @property(nonatomic, readonly, getter=isVideoHDRSupported) BOOL videoHDRSupported API_AVAILABLE(ios(8.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos);
 
@@ -2278,6 +2309,20 @@
 @property(nonatomic, readonly) CMVideoDimensions highResolutionStillImageDimensions API_AVAILABLE(ios(8.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos);
 
 /*!
+ @property highPhotoQualitySupported
+ @abstract
+    A boolean value specifying whether this format supports high photo quality when selecting an AVCapturePhotoQualityPrioritization of .balanced or .quality.
+ 
+ @discussion
+    If an AVCaptureDeviceFormat's highPhotoQualitySupported property is YES, the format produces higher image quality when selecting .balanced or .quality AVCapturePhotoQualityPrioritization compared to .speed. Such formats adhere to the following rules:
+        - Photo requests with a prioritization of .speed produce the fastest image result (suitable for burst captures).
+        - Photo requests with a prioritization of .balanced produce higher image quality without dropping frames if a video recording is underway.
+        - Photo requests with a prioritization of .quality produce high image quality and may cause frame drops if a video recording is underway. For maximum backward compatibility, photo requests on high photo quality formats set to .quality only cause video frame drops if your app is linked on or after iOS 15.
+    Formats that don't support high photo quality produce the same image quality whether you select .speed, .balanced, or .quality. Note that high photo quality is only attainable when using the AVCapturePhotoOutput with these supported formats.
+ */
+@property(nonatomic, readonly, getter=isHighPhotoQualitySupported) BOOL highPhotoQualitySupported API_AVAILABLE(macos(12.0), ios(15.0), macCatalyst(15.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
+
+/*!
  @property highestPhotoQualitySupported
  @abstract
     A boolean value specifying whether this format supports the highest possible photo quality that can be delivered on the current platform.
@@ -2350,6 +2395,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDeviceFormat (AVCaptureDeviceFormatDepthDataAdditions)
 
 /*
@@ -2365,6 +2411,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDeviceFormat (AVCaptureDeviceFormatMultiCamAdditions)
 
 /*!
@@ -2380,6 +2427,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDeviceFormat (AVCaptureDeviceFormatGeometricDistortionCorrection)
 
 /*!
@@ -2395,6 +2443,7 @@
 @end
 
 
+API_AVAILABLE(macos(10.7), ios(7.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureDeviceFormat (AVCaptureDeviceFormatCenterStage)
 
 /*!
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h	2021-03-16 05:20:17.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h	2021-06-02 11:07:18.000000000 -0400
@@ -4,7 +4,7 @@
  
     Framework:  AVFoundation
  
-    Copyright 2016-2020 Apple Inc. All rights reserved.
+    Copyright 2016-2021 Apple Inc. All rights reserved.
 */
 
 #import <AVFoundation/AVCaptureOutputBase.h>
@@ -141,7 +141,7 @@
  
     Prepared settings persist across session starts/stops and committed configuration changes. This property participates in -[AVCaptureSession beginConfiguration] / -[AVCaptureSession commitConfiguration] deferred work behavior. That is, if you call -[AVCaptureSession beginConfiguration], change your session's input/output topology, and call this method, preparation is deferred until you call -[AVCaptureSession commitConfiguration], enabling you to atomically commit a new configuration as well as prepare to take photos in that new configuration.
  */
-- (void)setPreparedPhotoSettingsArray:(NSArray<AVCapturePhotoSettings *> *)preparedPhotoSettingsArray completionHandler:(nullable void (^)(BOOL prepared, NSError * _Nullable error))completionHandler API_UNAVAILABLE(macos);
+- (void)setPreparedPhotoSettingsArray:(NSArray<AVCapturePhotoSettings *> *)preparedPhotoSettingsArray completionHandler:(nullable void (^)(BOOL prepared, NSError * _Nullable error))completionHandler API_UNAVAILABLE(macos) NS_SWIFT_ASYNC_THROWS_ON_FALSE(1);
 
 /*!
  @property availablePhotoPixelFormatTypes
@@ -489,7 +489,7 @@
 /*!
  @property livePhotoCaptureEnabled
  @abstract
-    Indicates whether the receiver is configured for Live Photo capture
+    Indicates whether the receiver is configured for Live Photo capture.
 
  @discussion
     Default value is NO. This property may only be set to YES if livePhotoCaptureSupported is YES. Live Photo capture requires a lengthy reconfiguration of the capture render pipeline, so if you intend to do any Live Photo captures at all, you should set livePhotoCaptureEnabled to YES before calling -[AVCaptureSession startRunning].
@@ -584,6 +584,7 @@
 
 @class AVCapturePhoto;
 
+API_AVAILABLE(macos(10.15), ios(10.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCapturePhotoOutput (AVCapturePhotoOutputDepthDataDeliverySupport)
 
 /*!
@@ -1713,6 +1714,7 @@
 
 @protocol AVCapturePhotoFileDataRepresentationCustomizer;
 
+API_AVAILABLE(macos(10.15), ios(11.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCapturePhoto (AVCapturePhotoConversions)
 
 /*!
@@ -1808,6 +1810,7 @@
     AVCaptureLensStabilizationStatusUnavailable = 4,
 } API_AVAILABLE(ios(11.0), macCatalyst(14.0)) API_UNAVAILABLE(macos, tvos) __WATCHOS_PROHIBITED;
 
+API_AVAILABLE(macos(10.15), ios(11.0), macCatalyst(14.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCapturePhoto (AVCapturePhotoBracketedCapture)
 
 /*!
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h	2021-03-16 13:56:36.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h	2021-06-02 05:35:30.000000000 -0400
@@ -4,7 +4,7 @@
  
     Framework:  AVFoundation
  
-    Copyright 2010-2017 Apple Inc. All rights reserved.
+    Copyright 2010-2021 Apple Inc. All rights reserved.
 */
 
 #import <AVFoundation/AVCaptureOutputBase.h>
@@ -137,7 +137,7 @@
  
     Calls to captureStillImageAsynchronouslyFromConnection:completionHandler: are not synchronized with AVCaptureDevice manual control completion handlers. Setting a device manual control, waiting for its completion, then calling captureStillImageAsynchronouslyFromConnection:completionHandler: DOES NOT ensure that the still image returned reflects your manual control change. It may be from an earlier time. You can compare your manual control completion handler sync time to the returned still image's presentation time. You can retrieve the sample buffer's pts using CMSampleBufferGetPresentationTimestamp(). If the still image has an earlier timestamp, your manual control command does not apply to it.
  */
-- (void)captureStillImageAsynchronouslyFromConnection:(AVCaptureConnection *)connection completionHandler:(void (^)(CMSampleBufferRef _Nullable imageDataSampleBuffer, NSError * _Nullable error))handler;
+- (void)captureStillImageAsynchronouslyFromConnection:(AVCaptureConnection *)connection completionHandler:(void (^)(CMSampleBufferRef _Nullable imageDataSampleBuffer, NSError * _Nullable error))handler NS_SWIFT_DISABLE_ASYNC;
 
 /*!
  @method jpegStillImageNSDataRepresentation:
@@ -262,6 +262,7 @@
  
     In a bracketed capture, AVCaptureDevice flashMode property is ignored (flash is forced off), as is AVCaptureStillImageOutput's automaticallyEnablesStillImageStabilizationWhenAvailable property (stabilization is forced off).
  */
+API_DEPRECATED("Use AVCapturePhotoOutput instead.", macos(10.7, 10.15), ios(4.0, 10.0)) API_UNAVAILABLE(tvos) __WATCHOS_PROHIBITED
 @interface AVCaptureStillImageOutput (AVCaptureStillImageOutputBracketedCapture)
 
 /*!
@@ -309,7 +310,7 @@
  @discussion
     -maxBracketedCaptureStillImageCount tells you the maximum number of images that may be taken in a single bracket given the current AVCaptureDevice/AVCaptureSession/AVCaptureStillImageOutput configuration. But before taking a still image bracket, additional resources may need to be allocated. By calling -prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler: first, you are able to deterministically know when the receiver is ready to capture the bracket with the specified settings array.
  */
-- (void)prepareToCaptureStillImageBracketFromConnection:(AVCaptureConnection *)connection withSettingsArray:(NSArray<__kindof AVCaptureBracketedStillImageSettings *> *)settings completionHandler:(void (^)(BOOL prepared, NSError * _Nullable error))handler API_DEPRECATED("Use AVCapturePhotoOutput setPreparedPhotoSettingsArray:completionHandler: instead.", ios(8.0, 10.0)) API_UNAVAILABLE(macos);
+- (void)prepareToCaptureStillImageBracketFromConnection:(AVCaptureConnection *)connection withSettingsArray:(NSArray<__kindof AVCaptureBracketedStillImageSettings *> *)settings completionHandler:(void (^)(BOOL prepared, NSError * _Nullable error))handler API_DEPRECATED("Use AVCapturePhotoOutput setPreparedPhotoSettingsArray:completionHandler: instead.", ios(8.0, 10.0)) API_UNAVAILABLE(macos) NS_SWIFT_DISABLE_ASYNC;
 
 /*!
  @method captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler:
@@ -326,7 +327,7 @@
  @discussion
     If you have not called -prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler: for this still image bracket request, the bracket may not be taken immediately, as the receiver may internally need to prepare resources.
  */
-- (void)captureStillImageBracketAsynchronouslyFromConnection:(AVCaptureConnection *)connection withSettingsArray:(NSArray<__kindof AVCaptureBracketedStillImageSettings *> *)settings completionHandler:(void (^)(CMSampleBufferRef _Nullable sampleBuffer, AVCaptureBracketedStillImageSettings * _Nullable stillImageSettings, NSError * _Nullable error))handler API_DEPRECATED("Use AVCapturePhotoOutput capturePhotoWithSettings:delegate: instead.", ios(8.0, 10.0)) API_UNAVAILABLE(macos);
+- (void)captureStillImageBracketAsynchronouslyFromConnection:(AVCaptureConnection *)connection withSettingsArray:(NSArray<__kindof AVCaptureBracketedStillImageSettings *> *)settings completionHandler:(void (^)(CMSampleBufferRef _Nullable sampleBuffer, AVCaptureBracketedStillImageSettings * _Nullable stillImageSettings, NSError * _Nullable error))handler API_DEPRECATED("Use AVCapturePhotoOutput capturePhotoWithSettings:delegate: instead.", ios(8.0, 10.0)) API_UNAVAILABLE(macos) NS_SWIFT_DISABLE_ASYNC;
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h	2021-03-16 08:47:41.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h	2021-06-02 11:07:18.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2017 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -100,6 +100,16 @@
 - (nullable AVCompositionTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+	@method		loadTrackWithTrackID:completionHandler:
+	@abstract	Loads an instance of AVCompositionTrack that represents the track of the specified trackID.
+	@param		trackID
+				The trackID of the requested AVCompositionTrack.
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVCompositionTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
     @method         tracksWithMediaType:
     @abstract       Provides an array of AVCompositionTracks of the asset that present media of the specified media type.
     @param          mediaType
@@ -111,6 +121,16 @@
 - (NSArray<AVCompositionTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+	@method		loadTracksWithMediaType:completionHandler:
+	@abstract	Loads an array of AVCompositionTracks of the asset that present media of the specified media type.
+	@param		mediaType
+				The media type according to which AVAsset filters its AVCompositionTracks. (Media types are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVCompositionTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
     @method         tracksWithMediaCharacteristic:
     @abstract       Provides an array of AVCompositionTracks of the asset that present media with the specified characteristic.
     @param          mediaCharacteristic
@@ -121,6 +141,16 @@
 */
 - (NSArray<AVCompositionTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+	@method		loadTracksWithMediaCharacteristic:completionHandler:
+	@abstract	Loads an array of AVCompositionTracks of the asset that present media with the specified characteristic.
+	@param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVCompositionTracks. (Media characteristics are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVCompositionTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -285,6 +315,16 @@
 - (nullable AVMutableCompositionTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+	@method		loadTrackWithTrackID:completionHandler:
+	@abstract	Loads an instance of AVMutableCompositionTrack that represents the track of the specified trackID.
+	@param		trackID
+				The trackID of the requested AVMutableCompositionTrack.
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVMutableCompositionTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
     @method         tracksWithMediaType:
     @abstract       Provides an array of AVMutableCompositionTracks of the asset that present media of the specified media type.
     @param          mediaType
@@ -296,6 +336,16 @@
 - (NSArray<AVMutableCompositionTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+	@method		loadTracksWithMediaType:completionHandler:
+	@abstract	Loads an array of AVMutableCompositionTracks of the asset that present media of the specified media type.
+	@param		mediaType
+				The media type according to which AVAsset filters its AVMutableCompositionTracks. (Media types are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVMutableCompositionTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
     @method         tracksWithMediaCharacteristic:
     @abstract       Provides an array of AVMutableCompositionTracks of the asset that present media with the specified characteristic.
     @param          mediaCharacteristic
@@ -306,6 +356,16 @@
 */
 - (NSArray<AVMutableCompositionTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+	@method		loadTracksWithMediaCharacteristic:completionHandler:
+	@abstract	Loads an array of AVMutableCompositionTracks of the asset that present media with the specified characteristic.
+	@param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVMutableCompositionTracks. (Media characteristics are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVMutableCompositionTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @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/AVFoundation.framework/Headers/AVContentKeySession.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVContentKeySession.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVContentKeySession.h	2021-03-16 05:18:25.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVContentKeySession.h	2021-06-02 12:44:16.000000000 -0400
@@ -539,7 +539,7 @@
  @abstract      Informs the receiver to process a persistable content key request.
  @discussion    When you receive an AVContentKeyRequest via -contentKeySession:didProvideContentKeyRequest: and you want the resulting key response to produce a key that can persist across multiple playback sessions, you must invoke -respondByRequestingPersistableContentKeyRequest on that AVContentKeyRequest in order to signal that you want to process an AVPersistableContentKeyRequest instead. If the underlying protocol supports persistable content keys, in response your delegate will receive an AVPersistableContentKeyRequest via -contentKeySession:didProvidePersistableContentKeyRequest:. NSInternalInconsistencyException will be raised, if you are attempting to create and use a persistable key but your AVContentKeySession delegate does not respond to contentKeySession:didProvidePersistableContentKeyRequest:.
  */
-- (void)respondByRequestingPersistableContentKeyRequest API_DEPRECATED("Use respondByRequestingPersistableContentKeyRequestAndReturnError: instead.", ios(10.3, 11.2)) API_UNAVAILABLE(macos, tvos, watchos);
+- (void)respondByRequestingPersistableContentKeyRequest API_DEPRECATED_WITH_REPLACEMENT("respondByRequestingPersistableContentKeyRequestAndReturnError:", ios(10.3, 11.2)) API_UNAVAILABLE(macos, tvos, watchos);
 /*
  @method		respondByRequestingPersistableContentKeyRequestAndReturnError:
  @abstract		Informs the receiver to process a persistable content key request.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h	2021-03-16 13:58:45.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h	2021-06-02 12:44:16.000000000 -0400
@@ -4,7 +4,7 @@
  
 	Framework:  AVFoundation
  
-	Copyright 2010-2020 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
  */
 
@@ -112,6 +112,8 @@
 	AVErrorIncorrectlyConfigured API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0)) = -11875,
 	AVErrorSegmentStartedWithNonSyncSample API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0)) = -11876,
 	AVErrorRosettaNotInstalled API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0)) = -11877,
+	AVErrorOperationCancelled API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0)) = -11878,
+	AVErrorContentKeyRequestCancelled API_AVAILABLE(macos(11.4), ios(14.6), tvos(14.6), watchos(7.5)) = -11879,
 
 };
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.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/AVFoundation.framework/Headers/AVFCore.h	2021-06-01 20:48:31.000000000 -0400
@@ -10,6 +10,7 @@
 #import <AVFoundation/AVBase.h>
 #import <AVFoundation/AVAnimation.h>
 #import <AVFoundation/AVAsset.h>
+#import <AVFoundation/AVAssetVariant.h>
 #import <AVFoundation/AVAssetCache.h>
 #import <AVFoundation/AVAssetExportSession.h>
 #import <AVFoundation/AVAssetImageGenerator.h>
@@ -26,13 +27,15 @@
 #import <AVFoundation/AVAudioMix.h>
 #import <AVFoundation/AVAudioProcessingSettings.h>
 
-#if TARGET_OS_IPHONE
-#if __has_include(<AVFoundation/AVAssetDownloadTask.h>)
 #import <AVFoundation/AVAssetDownloadTask.h>
-#endif
-#if __has_include(<AVFoundation/AVAssetDownloadStorageManager.h>)
 #import <AVFoundation/AVAssetDownloadStorageManager.h>
-#endif
+#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
+#import <AVFoundation/AVCaption.h>
+#import <AVFoundation/AVCaptionGroup.h>
+#import <AVFoundation/AVCaptionGrouper.h>
+#import <AVFoundation/AVCaptionConversionValidator.h>
+#import <AVFoundation/AVCaptionFormatConformer.h>
+#import <AVFoundation/AVCaptionRenderer.h>
 #endif
 
 #import <AVFoundation/AVComposition.h>
@@ -50,6 +53,7 @@
 #import <AVFoundation/AVMovieTrack.h>
 #endif
 #import <AVFoundation/AVOutputSettingsAssistant.h>
+#import <AVFoundation/AVPlaybackCoordinator.h>
 #import <AVFoundation/AVPlayer.h>
 #import <AVFoundation/AVPlayerItem.h>
 #import <AVFoundation/AVPlayerItemMediaDataCollector.h>
@@ -67,10 +71,8 @@
 #import <AVFoundation/AVSampleBufferAudioRenderer.h>
 #import <AVFoundation/AVSampleBufferDisplayLayer.h>
 #import <AVFoundation/AVSampleBufferRenderSynchronizer.h>
-#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
 #import <AVFoundation/AVSampleBufferGenerator.h>
 #import <AVFoundation/AVSampleCursor.h>
-#endif
 #import <AVFoundation/AVSynchronizedLayer.h>
 #import <AVFoundation/AVTextStyleRule.h>
 #import <AVFoundation/AVTime.h>
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes	2021-03-16 02:33:23.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes	2021-06-01 21:08:48.000000000 -0400
@@ -1,6 +1,17 @@
 ---
 Name: AVFoundation
 Classes:
+- Name: AVAsset
+  Methods:
+  - Selector: 'loadChapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:completionHandler:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'loadMetadataForFormat:completionHandler:'
+    SwiftName: loadMetadata(for:completionHandler:)
+    MethodKind: Instance
+  - Selector: 'loadMediaSelectionGroupForMediaCharacteristic:completionHandler:'
+    SwiftName: loadMediaSelectionGroup(for:completionHandler:)
+    MethodKind: Instance
 - Name: AVAssetDownloadURLSession
   Methods:
   - Selector: 'assetDownloadTaskWithURLAsset:destinationURL:options:'
@@ -9,6 +20,42 @@
   - Selector: 'assetDownloadTaskWithURLAsset:assetTitle:assetArtworkData:options:'
     SwiftName: makeAssetDownloadTask(asset:assetTitle:assetArtworkData:options:)
     MethodKind: Instance
+  - Selector: 'assetDownloadTaskWithConfiguration:'
+    SwiftName: makeAssetDownloadTask(downloadConfiguration:)
+    MethodKind: Instance
+- Name: AVAssetVariant
+  Properties:
+  - Name: 'peakBitRate'
+    PropertyKind: Instance
+    SwiftPrivate: true
+  - Name: 'averageBitRate'
+    PropertyKind: Instance
+    SwiftPrivate: true
+- Name: AVAssetVariantVideoAttributes
+  SwiftName: AVAssetVariant.VideoAttributes
+  Properties:
+  - Name: 'nominalFrameRate'
+    PropertyKind: Instance
+    SwiftPrivate: true
+  - Name: 'codecTypes'
+    PropertyKind: Instance
+    SwiftPrivate: true
+- Name: AVAssetVariantAudioAttributes
+  SwiftName: AVAssetVariant.AudioAttributes
+  Properties:
+  - Name: 'formatIDs'
+    PropertyKind: Instance
+    SwiftPrivate: true
+  Methods:
+  - Selector: 'renditionSpecificAttributesForMediaOption:'
+    SwiftName: renditionSpecificAttributes(for:)
+    MethodKind: Instance
+- Name: AVAssetVariantAudioRenditionSpecificAttributes
+  SwiftName: AVAssetVariantAudioAttributes.RenditionSpecificAttributes
+  Properties:
+  - Name: 'channelCount'
+    PropertyKind: Instance
+    SwiftPrivate: true
 - Name: AVAssetWriterInput
   Methods:
   - Selector: 'appendSampleBuffer:'
@@ -24,28 +71,6 @@
   - Selector: 'appendTimedMetadataGroup:'
     SwiftName: append(_:)
     MethodKind: Instance
-- Name: AVAudioSession
-  Methods:
-  # AVAudioSession setActive
-  - Selector: 'setActive:error:'
-    MethodKind: Instance
-    Availability: nonswift
-  - Selector: 'setActive:withOptions:error:'
-    SwiftName: setActive(_:options:)
-    MethodKind: Instance
-  # AVAudioSession setCategory
-  - Selector: 'setCategory:error:'
-    SwiftName: setCategory(_:)
-    MethodKind: Instance
-  - Selector: 'setCategory:withOptions:error:'
-    SwiftName: setCategory(_:options:)
-    MethodKind: Instance
-  - Selector: 'setCategory:mode:options:error:'
-    SwiftName: setCategory(_:mode:options:)
-    MethodKind: Instance
-  - Selector: 'setCategory:mode:routeSharingPolicy:options:error:'
-    SwiftName: setCategory(_:mode:policy:options:)
-    MethodKind: Instance
 - Name: AVCaptureAudioDataOutput
   Methods:
   - Selector: 'new'
@@ -81,6 +106,82 @@
     MethodKind: Class
     Availability: nonswift
     AvailabilityMsg: 'use object initializers instead'
+- Name: AVCaption
+  Methods:
+  - Selector: 'textColorAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'backgroundColorAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'fontWeightAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'fontStyleAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'decorationAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'textCombineAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'rubyAtIndex:range:'
+    MethodKind: Instance
+    SwiftPrivate: true
+- Name: AVMutableCaption
+  Methods:
+  - Selector: 'setTextColor:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setBackgroundColor:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setFontWeight:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setFontStyle:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setDecoration:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setTextCombine:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'setRuby:inRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeTextColorInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeBackgroundColorInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeFontWeightInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeFontStyleInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeDecorationInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeTextCombineInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+  - Selector: 'removeRubyInRange:'
+    MethodKind: Instance
+    SwiftPrivate: true
+- Name: AVCaptionGrouper
+  Methods:
+  - Selector: 'flushAddedCaptionsIntoGroupsUpToTime:'
+    SwiftName: 'flushAddedCaptions(upTo:)'
+    MethodKind: Instance
+- Name: AVCaptionRuby
+  SwiftName: AVCaption.Ruby
+- Name: AVCaptionRendererScene
+  SwiftName: AVCaptionRenderer.Scene
 - Name: AVCaptureDevice
   Methods:
   - Selector: 'authorizationStatusForMediaType:'
@@ -325,6 +426,22 @@
   - Selector: 'removeMediaDataCollector:'
     SwiftName: remove(_:)
     MethodKind: Instance
+- Name: AVPlaybackCoordinator
+  Methods:
+  - Selector: 'beginSuspension:'
+    SwiftName: beginSuspension(_:)
+    MethodKind: Instance
+  - Selector: 'endSuspension:'
+    SwiftName: endSuspension(_:)
+    MethodKind: Instance
+  - Selector: 'beginSuspensionForReason:'
+    SwiftName: beginSuspension(for:)
+    MethodKind: Instance
+- Name: AVCoordinatedPlaybackSuspension
+  Methods:
+  - Selector: 'endProposingNewTime:'
+    SwiftName: end(proposingNewTime:)
+    MethodKind: Instance
 - Name: AVSampleCursor
   Methods:
   - Selector: 'stepByDecodeTime:wasPinned:'
@@ -344,6 +461,15 @@
   - Selector: 'videoCompositionWithAsset:applyingCIFiltersWithHandler:'
     SwiftName: init(asset:filterApplier:)
     MethodKind: Instance
+  Properties:
+  - Name: sourceSampleDataTrackIDs
+    PropertyKind: Instance
+    SwiftPrivate: true
+- Name: AVMutableVideoComposition
+  Properties:
+  - Name: sourceSampleDataTrackIDs
+    PropertyKind: Instance
+    SwiftPrivate: true
 - Name: AVMutableVideoCompositionLayerInstruction
   Methods:
   - Selector: 'setTransformRampFromStartTransform:toEndTransform:timeRange:'
@@ -373,6 +499,9 @@
   - Selector: 'makeSampleCursorWithPresentationTimeStamp:'
     SwiftName: makeSampleCursor(presentationTimeStamp:)
     MethodKind: Instance
+  - Selector: 'loadMetadataForFormat:completionHandler:'
+    SwiftName: loadMetadata(for:completionHandler:)
+    MethodKind: Instance
 - Name: AVAssetWriter
   Methods:
   - Selector: 'initWithURL:fileType:error:'
@@ -469,11 +598,20 @@
   - Selector: 'finishWithError:'
     SwiftName: finish(with:)
     MethodKind: Instance
+  Properties:
+  - Name: sourceSampleDataTrackIDs
+    PropertyKind: Instance
+    SwiftPrivate: true
 - Name: AVAsynchronousCIImageFilteringRequest
   Methods:
   - Selector: 'finishWithError:'
     SwiftName: finish(with:)
     MethodKind: Instance
+- Name: AVDelegatingPlaybackCoordinator
+  Methods:
+  - Selector: 'coordinateRateChangeToRate:options:'
+    SwiftName: coordinateRateChange(to:options:)
+    MethodKind: Instance    
 Protocols:
 - Name: AVCaptureAudioDataOutputSampleBufferDelegate
   Methods:
@@ -575,6 +713,24 @@
   - Selector: 'videoComposition:shouldContinueValidatingAfterFindingEmptyTimeRange:'
     SwiftName: videoComposition(_:shouldContinueValidatingAfterFindingEmptyTimeRange:)
     MethodKind: Instance
+- Name: AVPlaybackCoordinatorPlaybackControlDelegate
+  Methods:
+  - Selector: 'playbackCoordinator:didIssuePauseCommand:completionHandler:'
+    SwiftName: playbackCoordinator(_:didIssue:completionHandler:)
+    MethodKind: Instance
+  - Selector: 'playbackCoordinator:didIssueSeekCommand:completionHandler:'
+    SwiftName: playbackCoordinator(_:didIssue:completionHandler:)
+    MethodKind: Instance
+  - Selector: 'playbackCoordinator:didIssuePlayCommand:completionHandler:'
+    SwiftName: playbackCoordinator(_:didIssue:completionHandler:)
+    MethodKind: Instance
+  - Selector: 'playbackCoordinator:didIssueBufferingCommand:completionHandler:'
+    SwiftName: playbackCoordinator(_:didIssue:completionHandler:)
+    MethodKind: Instance
+  - Selector: 'playbackCoordinator:didIssuePrepareTransitionCommand:'
+    SwiftName: playbackCoordinator(_:didIssue:)
+    MethodKind: Instance
+
 Functions:
 - Name: AVMakeRectWithAspectRatioInsideRect
   SwiftName: AVMakeRect(aspectRatio:insideRect:)
@@ -596,6 +752,32 @@
 - Name: AVPlayerHDRModeHLG
   SwiftName: hlg
 Tags:
+- Name: AVCaptionFontWeight
+  SwiftName: AVCaption.FontWeight
+- Name: AVCaptionFontStyle
+  SwiftName: AVCaption.FontStyle
+- Name: AVCaptionDecoration
+  SwiftName: AVCaption.Decoration
+- Name: AVCaptionTextCombine
+  SwiftName: AVCaption.TextCombine
+- Name: AVCaptionTextAlignment
+  SwiftName: AVCaption.TextAlignment
+- Name: AVCaptionUnitType
+  SwiftName: AVCaption.UnitType
+- Name: AVCaptionRegionDisplayAlignment
+  SwiftName: AVCaptionRegion.DisplayAlignment
+- Name: AVCaptionRegionWritingMode
+  SwiftName: AVCaptionRegion.WritingMode
+- Name: AVCaptionRegionScroll
+  SwiftName: AVCaptionRegion.Scroll
+- Name: AVCaptionAnimation
+  SwiftName: AVCaption.Animation
+- Name: AVCaptionRubyPosition
+  SwiftName: AVCaption.Ruby.Position
+- Name: AVCaptionRubyAlignment
+  SwiftName: AVCaption.Ruby.Alignment
+- Name: AVCaptionConversionValidatorStatus
+  SwiftName: AVCaptionConversionValidator.Status
 - Name: AVAssetExportSessionStatus
   SwiftName: AVAssetExportSession.Status
 - Name: AVAssetImageGeneratorResult
@@ -604,32 +786,12 @@
   SwiftName: AVAssetReader.Status
 - Name: AVAssetWriterStatus
   SwiftName: AVAssetWriter.Status
-- Name: AVAudioSessionCategoryOptions
-  SwiftName: AVAudioSession.CategoryOptions
-- Name: AVAudioSessionInterruptionOptions
-  SwiftName: AVAudioSession.InterruptionOptions
-- Name: AVAudioSessionInterruptionType
-  SwiftName: AVAudioSession.InterruptionType
-- Name: AVAudioSessionIOType
-  SwiftName: AVAudioSession.IOType
-- Name: AVAudioSessionPortOverride
-  SwiftName: AVAudioSession.PortOverride
-- Name: AVAudioSessionRecordPermission
-  SwiftName: AVAudioSession.RecordPermission
-- Name: AVAudioSessionRouteChangeReason
-  SwiftName: AVAudioSession.RouteChangeReason
-- Name: AVAudioSessionRouteSharingPolicy
-  SwiftName: AVAudioSession.RouteSharingPolicy
-- Name: AVAudioSessionPromptStyle
-  SwiftName: AVAudioSession.PromptStyle
-- Name: AVAudioSessionSetActiveOptions
-  SwiftName: AVAudioSession.SetActiveOptions
-- Name: AVAudioSessionSilenceSecondaryAudioHintType
-  SwiftName: AVAudioSession.SilenceSecondaryAudioHintType
 - Name: AVCaptureAutoFocusRangeRestriction
   SwiftName: AVCaptureDevice.AutoFocusRangeRestriction
 - Name: AVCaptureAutoFocusSystem
   SwiftName: AVCaptureDeviceFormat.AutoFocusSystem
+- Name: AVCaptureBackgroundBlurControlMode
+  SwiftName: AVCaptureDevice.BackgroundBlurControlMode
 - Name: AVCaptureCenterStageControlMode
   SwiftName: AVCaptureDevice.CenterStageControlMode
 - Name: AVCaptureDevicePosition
@@ -685,18 +847,6 @@
   SwiftName: AVAssetImageGenerator.ApertureMode
 - Name: AVAssetWriterInputMediaDataLocation
   SwiftName: AVAssetWriterInput.MediaDataLocation
-- Name: AVAudioSessionCategory
-  SwiftName: AVAudioSession.Category
-- Name: AVAudioSessionLocation
-  SwiftName: AVAudioSession.Location
-- Name: AVAudioSessionMode
-  SwiftName: AVAudioSession.Mode
-- Name: AVAudioSessionOrientation
-  SwiftName: AVAudioSession.Orientation
-- Name: AVAudioSessionPolarPattern
-  SwiftName: AVAudioSession.PolarPattern
-- Name: AVAudioSessionPort
-  SwiftName: AVAudioSession.Port
 - Name: AVCaptureDeviceTransportControlsSpeed
   SwiftName: AVCaptureDevice.TransportControlsSpeed
 - Name: AVCaptureDeviceType
@@ -723,19 +873,12 @@
   SwiftName: AVSemanticSegmentationMatte.MatteType
 - Name: AVTrackAssociationType
   SwiftName: AVAssetTrack.AssociationType
-Globals:
-# AVAudioSession
-- Name: AVAudioSessionInterruptionNotification
-  SwiftName: AVAudioSession.interruptionNotification
-- Name: AVAudioSessionMediaServicesWereLostNotification
-  SwiftName: AVAudioSession.mediaServicesWereLostNotification
-- Name: AVAudioSessionRouteChangeNotification
-  SwiftName: AVAudioSession.routeChangeNotification
-- Name: AVAudioSessionSilenceSecondaryAudioHintNotification
-  SwiftName: AVAudioSession.silenceSecondaryAudioHintNotification
-- Name: AVAudioSessionMediaServicesWereResetNotification
-  SwiftName: AVAudioSession.mediaServicesWereResetNotification
+- Name: AVCoordinatedPlaybackSuspensionReason
+  SwiftName: AVCoordinatedPlaybackSuspension.Reason
+- Name: AVPlayerRateDidChangeReason
+  SwiftName: AVPlayer.RateDidChangeReason
 
+Globals:
 # AVCaptureDevice constants
 - Name: AVCaptureExposureDurationCurrent
   SwiftName: AVCaptureDevice.currentExposureDuration
@@ -770,6 +913,16 @@
 - Name: AVCaptureSessionPresetiFrame1280x720
   SwiftName: iFrame1280x720
 
+# AVCaptionSettingsKey
+- Name: AVCaptionMediaTypeKey
+  SwiftName: mediaType
+- Name: AVCaptionMediaSubTypeKey
+  SwiftName: mediaSubType
+- Name: AVCaptionTimeCodeFrameDurationKey
+  SwiftName: timeCodeFrameDuration
+- Name: AVCaptionUseDropFrameTimeCodeKey
+  SwiftName: useDropFrameTimeCode
+
 # AVFileType
 - Name: AVFileType3GPP
   SwiftName: mobile3GPP
@@ -1063,8 +1216,10 @@
   SwiftName: evaluatingBufferingRate
 - Name: AVPlayerWaitingWithNoItemToPlayReason
   SwiftName: noItemToPlay
+- Name: AVPlayerWaitingForCoordinatedPlaybackReason
+  SwiftName: waitingForCoordinatedPlayback
 - Name: AVPlayerWaitingDuringInterstitialEventReason
-  SwiftName: InterstitialEvent
+  SwiftName: interstitialEvent
 
 # AVVideoCodecType
 - Name: AVVideoCodecTypeHEVC
@@ -1084,6 +1239,14 @@
 - Name: AVVideoCodecTypeAppleProRes422Proxy
   SwiftName: proRes422Proxy
 
+# AVVideoRange
+- Name: AVVideoRangeSDR
+  SwiftName: sdr
+- Name: AVVideoRangeHLG
+  SwiftName: hlg
+- Name: AVVideoRangePQ
+  SwiftName: pq
+
 # AVSampleBufferRenderSynchronizer
 - Name: AVSampleBufferRenderSynchronizerRateDidChangeNotification
   SwiftName: AVSampleBufferRenderSynchronizer.rateDidChangeNotification
@@ -1091,19 +1254,55 @@
 # AVPlayer
 - Name: AVPlayerEligibleForHDRPlaybackDidChangeNotification
   SwiftName: AVPlayer.eligibleForHDRPlaybackDidChangeNotification
+- Name: AVPlayerRateDidChangeNotification
+  SwiftName: AVPlayer.rateDidChangeNotification
+- Name: AVPlayerRateDidChangeReasonKey
+  SwiftName: AVPlayer.rateDidChangeReasonKey
+- Name: AVPlayerRateDidChangeOriginatingParticipantKey
+  SwiftName: AVPlayer.rateDidChangeOriginatingParticipantKey
 
 # AVPlayerItem
 - Name: AVPlayerItemRecommendedTimeOffsetFromLiveDidChangeNotification
   SwiftName: AVPlayerItem.recommendedTimeOffsetFromLiveDidChangeNotification
 - Name: AVPlayerItemMediaSelectionDidChangeNotification
   SwiftName: AVPlayerItem.mediaSelectionDidChangeNotification
+- Name: AVPlayerItemTimeJumpedNotification
+  SwiftName: AVPlayerItem.timeJumpedNotification
+- Name: AVPlayerItemTimeJumpedOriginatingParticipantKey
+  SwiftName: AVPlayerItem.timeJumpedOriginatingParticipantKey
   
 # AVPlayerInterstitialEventController
-- Name: AVPlayerInterstitialEventObserverEventsDidChangeNotification
-  SwiftName: AVPlayerInterstitialEventObserver.eventsDidChangeNotification
-- Name: AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification
-  SwiftName: AVPlayerInterstitialEventObserver.currentEventDidChangeNotification
-
+- Name: AVPlayerInterstitialEventMonitorEventsDidChangeNotification
+  SwiftName: AVPlayerInterstitialEventMonitor.eventsDidChangeNotification
+- Name: AVPlayerInterstitialEventMonitorCurrentEventDidChangeNotification
+  SwiftName: AVPlayerInterstitialEventMonitor.currentEventDidChangeNotification
+
+# AVPlaybackCoordinator
+- Name: AVPlaybackCoordinatorOtherParticipantsDidChangeNotification
+  SwiftName: AVPlaybackCoordinator.otherParticipantsDidChangeNotification
+- Name: AVPlaybackCoordinatorSuspensionReasonsDidChangeNotification
+  SwiftName: AVPlaybackCoordinator.suspensionReasonsDidChangeNotification
+- Name: AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+  SwiftName: AVDelegatingPlaybackCoordinator.PlaybackControlCommand
+- Name: AVDelegatingPlaybackCoordinatorPauseCommand
+  SwiftName: AVDelegatingPlaybackCoordinator.PauseCommand
+- Name: AVDelegatingPlaybackCoordinatorPlayCommand
+  SwiftName: AVDelegatingPlaybackCoordinator.PlayCommand
+- Name: AVDelegatingPlaybackCoordinatorBufferingCommand
+  SwiftName: AVDelegatingPlaybackCoordinator.BufferingCommand
+- Name: AVDelegatingPlaybackCoordinatorSeekCommand
+  SwiftName: AVDelegatingPlaybackCoordinator.SeekCommand
+  
+# AVPlayerRateDidChangeReason
+- Name: AVPlayerRateDidChangeSetRateCalledReason
+  SwiftName: setRateCalled
+- Name: AVPlayerRateDidChangeSetRateFailedReason
+  SwiftName: setRateFailed
+- Name: AVPlayerRateDidChangeAudioSessionInterruptedReason
+  SwiftName: audioSessionInterrupted
+- Name: AVPlayerRateDidChangeAppBackgroundedReason
+  SwiftName: appBackgrounded
+  
 SwiftVersions:
 - Version: 3
   Classes:
@@ -1150,61 +1349,6 @@
     - Name: sampleBufferDelegate
       PropertyKind: Instance
       Nullability: U
-  - Name: AVAudioEngine
-    Properties:
-    - Name: inputNode
-      PropertyKind: Instance
-      Nullability: O
-  - Name: AVAudioChannelLayout
-    Methods:
-    - Selector: 'initWithLayoutTag:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-  - Name: AVAudioConverter
-    Methods:
-    - Selector: 'initFromFormat:toFormat:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-    Properties:
-    - Name: sampleRateConverterAlgorithm	
-      PropertyKind: Instance
-      Nullability: N
-  - Name: AVAudioFormat
-    Methods:
-    - Selector: 'initWithStreamDescription:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-    - Selector: 'initWithStreamDescription:channelLayout:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-      Nullability: [ N, O ]
-    - Selector: 'initStandardFormatWithSampleRate:channels:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-    - Selector: 'initWithCommonFormat:sampleRate:channels:interleaved:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-    - Selector: 'initWithSettings:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-  - Name: AVAudioNode
-    Methods:
-    - Selector: 'nameForInputBus:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-    - Selector: 'nameForOutputBus:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-  - Name: AVAudioPCMBuffer
-    Methods:
-    - Selector: 'initWithPCMFormat:frameCapacity:'
-      MethodKind: Instance
-      NullabilityOfRet: N
-  - Name: AVAudioTime
-    Methods:
-    - Selector: 'extrapolateTimeFromAnchor:'
-      MethodKind: Instance
-      NullabilityOfRet: N
   - Name: AVCaptureAudioFileOutput
     Methods:
     - Selector: availableOutputFileTypes
@@ -1954,8 +2098,6 @@
   - Name: AVCaptureDeviceTransportControlsPlayingMode
     SwiftName: playingMode
   Tags:
-  - Name: AVAudioSessionRecordPermission
-    EnumKind: NSOptions
   - Name: AVCaptureAutoFocusSystem
     SwiftName: AVCaptureAutoFocusSystem
   - Name: AVCaptureAutoFocusRangeRestriction
@@ -2367,32 +2509,6 @@
       PropertyKind: Instance
       Type: 'NSString *'
       Nullability: N
-  - Name: AVAudioSession
-    Methods:
-    # AVAudioSession setActive
-    - Selector: 'setActive:error:'
-      SwiftName: setActive(_:)
-      MethodKind: Instance
-    - Selector: 'setActive:withOptions:error:'
-      SwiftName: setActive(_:with:)
-      MethodKind: Instance
-    # AVAudioSession setCategory
-    - Selector: 'setCategory:error:'
-      SwiftName: setCategory(_:)
-      MethodKind: Instance
-    - Selector: 'setCategory:withOptions:error:'
-      SwiftName: setCategory(_:with:)
-      MethodKind: Instance
-    - Selector: 'setCategory:mode:options:error:'
-      SwiftName: setCategory(_:mode:options:)
-      MethodKind: Instance
-    - Selector: 'setCategory:mode:routeSharingPolicy:options:error:'
-      SwiftName: setCategory(_:mode:routeSharingPolicy:options:)
-      MethodKind: Instance
-    Properties:
-    - Name: recordPermission
-      PropertyKind: Instance
-      SwiftImportAsAccessors: true
   - Name: AVCameraCalibrationData
     Properties:
     - Name: inverseLensDistortionLookupTable
@@ -2507,27 +2623,6 @@
     SwiftName: AVAssetReaderStatus
   - Name: AVAssetWriterStatus
     SwiftName: AVAssetWriterStatus
-# AVAudioSession Options and Enums
-  - Name: AVAudioSessionCategoryOptions
-    SwiftName: AVAudioSessionCategoryOptions
-  - Name: AVAudioSessionInterruptionOptions
-    SwiftName: AVAudioSessionInterruptionOptions
-  - Name: AVAudioSessionInterruptionType
-    SwiftName: AVAudioSessionInterruptionType
-  - Name: AVAudioSessionIOType
-    SwiftName: AVAudioSessionIOType
-  - Name: AVAudioSessionPortOverride
-    SwiftName: AVAudioSessionPortOverride
-  - Name: AVAudioSessionRecordPermission
-    SwiftName: AVAudioSessionRecordPermission
-  - Name: AVAudioSessionRouteChangeReason
-    SwiftName: AVAudioSessionRouteChangeReason
-  - Name: AVAudioSessionRouteSharingPolicy
-    SwiftName: AVAudioSessionRouteSharingPolicy
-  - Name: AVAudioSessionSetActiveOptions
-    SwiftName: AVAudioSessionSetActiveOptions
-  - Name: AVAudioSessionSilenceSecondaryAudioHintType
-    SwiftName: AVAudioSessionSilenceSecondaryAudioHintType
   - Name: AVContentKeyRequestStatus
     SwiftName: AVContentKeyRequestStatus
   - Name: AVPlayerStatus
@@ -2545,45 +2640,14 @@
   - Name: AVSampleBufferRequestMode
     SwiftName: AVSampleBufferRequestMode
   Typedefs:
-  # AVAudioSession String Enums
   - Name: AVAssetWriterInputMediaDataLocation
     SwiftName: AVAssetWriterInputMediaDataLocation
-  - Name: AVAudioSessionCategory
-    SwiftName: AVAudioSessionCategory
-    SwiftWrapper: none
-  - Name: AVAudioSessionLocation
-    SwiftName: AVAudioSessionLocation
-    SwiftWrapper: none
-  - Name: AVAudioSessionMode
-    SwiftName: AVAudioSessionMode
-    SwiftWrapper: none
-  - Name: AVAudioSessionOrientation
-    SwiftName: AVAudioSessionOrientation
-    SwiftWrapper: none
-  - Name: AVAudioSessionPolarPattern
-    SwiftName: AVAudioSessionPolarPattern
-    SwiftWrapper: none
-  - Name: AVAudioSessionPort
-    SwiftName: AVAudioSessionPort
-    SwiftWrapper: none
   - Name: AVAssetImageGeneratorApertureMode
     SwiftName: AVAssetImageGeneratorApertureMode
   - Name: AVContentKeyRequestRetryReason
     SwiftName: AVContentKeyRequestRetryReason
   - Name: AVPlayerItemLegibleOutputTextStylingResolution
     SwiftName: AVPlayerItemLegibleOutputTextStylingResolution
-  Globals:
-  # AVAudioSession
-  - Name: AVAudioSessionInterruptionNotification
-    SwiftName: AVAudioSessionInterruption
-  - Name: AVAudioSessionMediaServicesWereLostNotification
-    SwiftName: AVAudioSessionMediaServicesWereLost
-  - Name: AVAudioSessionMediaServicesWereResetNotification
-    SwiftName: AVAudioSessionMediaServicesWereReset
-  - Name: AVAudioSessionRouteChangeNotification
-    SwiftName: AVAudioSessionRouteChange
-  - Name: AVAudioSessionSilenceSecondaryAudioHintNotification
-    SwiftName: AVAudioSessionSilenceSecondaryAudioHint
 
 - Version: 4.2
   Classes:
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h	2021-03-16 09:54:43.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h	2021-06-02 12:44:16.000000000 -0400
@@ -24,6 +24,20 @@
 AVF_EXPORT AVMediaType const AVMediaTypeMuxed                 API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
 
 /*!
+ @enum          AVVideoRange
+ @constant      AVVideoRangeSDR
+				  Indicates that the video range as SDR
+ @constant      AVVideoRangeHLG
+				  Indicates that the video range as HLG
+ @constant      AVVideoRangePQ
+				  Indicates that the video range as PQ
+ */
+typedef NSString * AVVideoRange NS_TYPED_ENUM;
+	AVF_EXPORT AVVideoRange const AVVideoRangeSDR									API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+	AVF_EXPORT AVVideoRange const AVVideoRangeHLG									API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+	AVF_EXPORT AVVideoRange const AVVideoRangePQ									API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
  @constant AVMediaTypeMetadataObject
  @abstract mediaType of AVCaptureInputPorts that provide AVMetadataObjects.
  @discussion
@@ -501,6 +515,24 @@
 AVF_EXPORT AVFileType const AVFileTypeTIFF API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
+ @constant AVFileTypeAppleiTT
+ @abstract A UTI for the Apple iTT caption file format
+ @discussion
+ The value of this UTI is @"com.apple.itunes-timed-text".
+ Files are identified with the .itt extension.
+ */
+AVF_EXPORT AVFileType const AVFileTypeAppleiTT API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @constant AVFileTypeSCC
+ @abstract A UTI for the Scenarist closed caption file format
+ @discussion
+ The value of this UTI is @"com.scenarist.closed-caption".
+ Files are identified with the .scc extension.
+ */
+AVF_EXPORT AVFileType const AVFileTypeSCC API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
  @constant AVStreamingKeyDeliveryContentKeyType
  @abstract A UTI for streaming key delivery content keys
  @discussion
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h	2021-03-16 08:44:48.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h	2021-06-02 12:44:18.000000000 -0400
@@ -167,6 +167,7 @@
 AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyDirectionMotion                 API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyContentIdentifier               API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0));
 AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyAccessibilityDescription        API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0));
+AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyIsMontage                       API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 // iTunesMetadata
 AVF_EXPORT AVMetadataFormat const AVMetadataFormatiTunesMetadata                             API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
@@ -232,7 +233,7 @@
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyAudioSeekPointIndex                   /* ASPI Audio seek point index */                               API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyComments                              /* COMM Comments */                                             API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyCommercial                            /* COMR Commercial frame */                                     API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0));
-AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyCommerical                            /* COMR Commercial frame */                                     API_DEPRECATED("No longer supported", macos(10.7, 10.11), ios(4.0, 9.0), tvos(9.0, 9.0), watchos(1.0, 1.0));
+AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyCommerical                            /* COMR Commercial frame */                                     API_DEPRECATED_WITH_REPLACEMENT("AVMetadataID3MetadataKeyCommercial", macos(10.7, 10.11), ios(4.0, 9.0), tvos(9.0, 9.0), watchos(1.0, 1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyEncryption                            /* ENCR Encryption method registration */                       API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyEqualization                          /* EQUA Equalization */                                         API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataID3MetadataKeyEqualization2                         /* EQU2 Equalisation (2) */                                     API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0));
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h	2021-03-16 13:58:48.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h	2021-06-02 05:38:04.000000000 -0400
@@ -151,7 +151,7 @@
 AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataVideoOrientation                API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0));
 AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataContentIdentifier               API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0), watchos(2.0));
 AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataAccessibilityDescription        API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0));
-
+AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataIsMontage                       API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 /*!
  @constant AVMetadataIdentifierQuickTimeMetadataAutoLivePhoto
  @abstract A value of type kCMMetadataBaseDataType_UInt8 indicating whether this Live Photo movie was captured in "Auto" mode.
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h	2021-03-16 09:54:43.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h	2021-06-02 05:38:00.000000000 -0400
@@ -308,7 +308,7 @@
 
 @class AVMetadataItemFilterInternal;
 
-API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0))
 @interface AVMetadataItemFilter : NSObject {
 @private
 	AVMetadataItemFilterInternal	*_itemFilterInternal __attribute__((unused));
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h	2021-03-16 08:44:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h	2021-06-02 07:35:56.000000000 -0400
@@ -4,7 +4,7 @@
  
     Framework:  AVFoundation
  
-    Copyright 2012-2019 Apple Inc. All rights reserved.
+    Copyright 2012-2021 Apple Inc. All rights reserved.
 */
 
 #import <AVFoundation/AVBase.h>
@@ -494,6 +494,7 @@
 
 @class CIBarcodeDescriptor;
 
+API_AVAILABLE(macos(10.15), ios(7.0), macCatalyst(14.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVMetadataMachineReadableCodeObject (AVMetadataMachineReadableCodeDescriptor)
 
 /*!
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h	2021-03-16 09:54:45.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h	2021-06-02 07:34:13.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:		AVFoundation
  
-	Copyright 2009-2019 Apple Inc. All rights reserved.
+	Copyright 2009-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -70,7 +70,7 @@
 	@param			URL
 					An NSURL object that specifies a file containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object.
 	@result			An AVMovie object
 	@discussion     By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil.
                     If you want to create an AVMutableMovie from a file and then append sample buffers to any of its tracks, you must first set one of these properties 
@@ -84,7 +84,7 @@
 	@param			URL
 					An NSURL object that specifies a file containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object.
 	@result			An AVMovie object
 	@discussion     By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil.
                     If you want to create an AVMutableMovie from a file and then append sample buffers to any of its tracks, you must first set one of these properties 
@@ -98,7 +98,7 @@
 	@param			data
 					An NSData object containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object.
 	@result			An AVMovie object
 	@discussion     You can use this method to operate on movie headers that are not stored in files; this might include movie headers on the pasteboard (which do not contain media data). In general you should avoid loading an entire movie file with its media data into an instance of NSData! By default, the defaultMediaDataStorage property will be nil and each associated AVMovieTrack's mediaDataStorage property will be nil.
                     If you want to create an AVMutableMovie from an NSData object and then append sample buffers to any of its tracks, you must first set one of these properties to indicate where the sample data should be written.
@@ -111,7 +111,7 @@
 	@param			data
 					An NSData object containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMovie object.
 	@result			An AVMovie object
 	@discussion     You can use this method to operate on movie headers that are not stored in files. In general you should avoid loading an entire movie file with its media data into an instance of NSData!
  
@@ -119,6 +119,19 @@
 */
 - (instancetype)initWithData:(NSData *)data options:(nullable NSDictionary<NSString *, id> *)options NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(13.0), watchos(6.0)) API_UNAVAILABLE(tvos);
 
+#pragma mark --- Keys for initialization options dictionary ---
+/*!
+	@constant		AVMovieShouldSupportAliasDataReferencesKey
+	@abstract		Indicates whether alias data references in the movie should be parsed and resolved.
+	@discussion
+		Default is NO. Although the majority of QuickTime movie files contain all of the media data they require, some contain references to media stored in other files. While AVFoundation and CoreMedia typically employ a URL reference for this purpose, older implementations such as QuickTime 7 have commonly employed a Macintosh alias instead, as documented in the QuickTime File Format specification. If your application must work with legacy QuickTime movie files containing alias-based references to media data stored in other files, the use of this AVMovie initialization option is appropriate. AVMovie and AVMutableMovie do not create movies using alias data references to external media files.
+ 
+	If you provide a value for AVMovieReferenceRestrictionsKey, restrictions will be observed for resolved alias references just as they are for URL references.
+ 
+	For more details about alias resolution, consult documentation of the bookmark-related interfaces of NSURL.
+*/
+AVF_EXPORT NSString *const AVMovieShouldSupportAliasDataReferencesKey API_AVAILABLE(macos(10.12), ios(13.0), watchos(6.0)) API_UNAVAILABLE(tvos);
+
 /*!
 	@property       URL
 	@abstract       The URL with which the instance of AVMovie was initialized; may be nil.
@@ -228,6 +241,16 @@
 - (nullable AVMovieTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+	@method		loadTrackWithTrackID:completionHandler:
+	@abstract	Loads an instance of AVMovieTrack that represents the track of the specified trackID.
+	@param		trackID
+				The trackID of the requested AVMovieTrack.
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVMovieTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaType:
   @abstract		Provides an array of AVMovieTracks of the asset that present media of the specified media type.
   @param		mediaType
@@ -238,6 +261,16 @@
 - (NSArray<AVMovieTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+	@method		loadTracksWithMediaType:completionHandler:
+	@abstract	Loads an array of AVMovieTracks of the asset that present media of the specified media type.
+	@param		mediaType
+				The media type according to which AVAsset filters its AVMovieTracks. (Media types are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaCharacteristic:
   @abstract		Provides an array of AVMovieTracks of the asset that present media with the specified characteristic.
   @param		mediaCharacteristic
@@ -247,6 +280,16 @@
 */
 - (NSArray<AVMovieTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+	@method		loadTracksWithMediaCharacteristic:completionHandler:
+	@abstract	Loads an array of AVMovieTracks of the asset that present media with the specified characteristic.
+	@param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVMovieTracks. (Media characteristics are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -277,7 +320,7 @@
 	@param			URL
 					An NSURL object that specifies a file containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -293,7 +336,7 @@
 	@param			URL
 					An NSURL object that specifies a file containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -309,7 +352,7 @@
 	@param			data
 					An NSData object containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -325,7 +368,7 @@
 	@param			data
 					An NSData object containing a movie header.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -341,7 +384,7 @@
 	@param			movie
 					If you wish to transfer settings from an existing movie (including movie userdata and metadata, preferred rate, preferred volume, etc.), pass a reference to an AVMovie object representing that movie. Otherwise pass nil. The userdata and metadata from the source movie may need to be converted if the format of that movie differs from fileType; you may wish to inspect the userdata or metadata of the receiver to ensure that important data was copied.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined; pass nil for default initialization behavior.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Pass nil for default initialization behavior.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -357,7 +400,7 @@
 	@param			movie
 					If you wish to transfer settings from an existing movie (including movie userdata and metadata, preferred rate, preferred volume, etc.), pass a reference to an AVMovie object representing that movie. Otherwise pass nil. The userdata and metadata from the source movie may need to be converted if the format of that movie differs from fileType; you may wish to inspect the userdata or metadata of the receiver to ensure that important data was copied.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Currently no keys are defined; pass nil for default initialization behavior.
+					An NSDictionary object that contains keys for specifying options for the initialization of the AVMutableMovie object. Pass nil for default initialization behavior.
 	@param			outError
 					If an error occurs creating a movie, describes the nature of the failure.
 	@result			An AVMutableMovie object
@@ -508,7 +551,7 @@
 	@param			track
 					If you wish to transfer settings from an existing track, including track userdata and metadata, width, height, preferred volume, etc., pass a reference to an AVAssetTrack representing that track. Otherwise pass nil.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the new AVMutableMovieTrack object. Currently no keys are defined; pass nil for default initialization behavior.
+					An NSDictionary object that contains keys for specifying options for the initialization of the new AVMutableMovieTrack object. Pass nil for default initialization behavior.
 	@result			An AVMutableMovieTrack object
     @discussion		The trackID of the newly added track is a property of the returned instance of AVMutableMovieTrack.
 */
@@ -520,7 +563,7 @@
 	@param			existingTracks
 					An array of AVAssetTrack objects.
 	@param			options
-					An NSDictionary object that contains keys for specifying options for the initialization of the new AVMutableMovieTrack objects. Currently no keys are defined; pass nil for default initialization behavior.
+					An NSDictionary object that contains keys for specifying options for the initialization of the new AVMutableMovieTrack objects. Pass nil for default initialization behavior.
 	@result			An array of AVMutableMovieTrack objects; the index of a track in this array is the same as the index of its source track in the existingTracks array.
     @discussion		This method creates one or more empty tracks in the target movie and configures those tracks with settings (such as track userdata and metadata, width, height, and preferred volume) copied from the source tracks in the existingTracks array. Also, properties involving pairs of tracks (such as track references) are copied from the source tracks to the target tracks.
 */
@@ -561,6 +604,16 @@
 - (nullable AVMutableMovieTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+	@method		loadTrackWithTrackID:completionHandler:
+	@abstract	Loads an instance of AVMutableMovieTrack that represents the track of the specified trackID.
+	@param		trackID
+				The trackID of the requested AVMutableMovieTrack.
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVMutableMovieTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaType:
   @abstract		Provides an array of AVMutableMovieTracks of the asset that present media of the specified media type.
   @param		mediaType
@@ -571,6 +624,16 @@
 - (NSArray<AVMutableMovieTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+	@method		loadTracksWithMediaType:completionHandler:
+	@abstract	Loads an array of AVMutableMovieTracks of the asset that present media of the specified media type.
+	@param		mediaType
+				The media type according to which AVAsset filters its AVMutableMovieTracks. (Media types are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVMutableMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaCharacteristic:
   @abstract		Provides an array of AVMutableMovieTracks of the asset that present media with the specified characteristic.
   @param		mediaCharacteristic
@@ -580,6 +643,16 @@
 */
 - (NSArray<AVMutableMovieTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+	@method		loadTracksWithMediaCharacteristic:completionHandler:
+	@abstract	Loads an array of AVMutableMovieTracks of the asset that present media with the specified characteristic.
+	@param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVMutableMovieTracks. (Media characteristics are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVMutableMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
@@ -667,6 +740,16 @@
 - (nullable AVFragmentedMovieTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
 
 /*!
+	@method		loadTrackWithTrackID:completionHandler:
+	@abstract	Loads an instance of AVFragmentedMovieTrack that represents the track of the specified trackID.
+	@param		trackID
+				The trackID of the requested AVFragmentedMovieTrack.
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded track (which may be nil if no track of the specified trackID is available) or an error.
+*/
+- (void)loadTrackWithTrackID:(CMPersistentTrackID)trackID completionHandler:(void (^)(AVFragmentedMovieTrack * _Nullable_result, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaType:
   @abstract		Provides an array of AVFragmentedMovieTracks of the asset that present media of the specified media type.
   @param		mediaType
@@ -677,6 +760,16 @@
 - (NSArray<AVFragmentedMovieTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;
 
 /*!
+	@method		loadTracksWithMediaType:completionHandler:
+	@abstract	Loads an array of AVFragmentedMovieTracks of the asset that present media of the specified media type.
+	@param		mediaType
+				The media type according to which AVAsset filters its AVFragmentedMovieTracks. (Media types are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks of the specified media type are available) or an error.
+*/
+- (void)loadTracksWithMediaType:(AVMediaType)mediaType completionHandler:(void (^)(NSArray<AVFragmentedMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
   @method		tracksWithMediaCharacteristic:
   @abstract		Provides an array of AVFragmentedMovieTracks of the asset that present media with the specified characteristic.
   @param		mediaCharacteristic
@@ -686,6 +779,16 @@
 */
 - (NSArray<AVFragmentedMovieTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;
 
+/*!
+	@method		loadTracksWithMediaCharacteristic:completionHandler:
+	@abstract	Loads an array of AVFragmentedMovieTracks of the asset that present media with the specified characteristic.
+	@param		mediaCharacteristic
+				The media characteristic according to which AVAsset filters its AVFragmentedMovieTracks. (Media characteristics are defined in AVMediaFormat.h.)
+	@param		completionHandler
+				A block that is called when the loading is finished, with either the loaded tracks (which may be empty if no tracks with the specified characteristic are available) or an error.
+*/
+- (void)loadTracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic completionHandler:(void (^)(NSArray<AVFragmentedMovieTrack *> * _Nullable, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 #pragma mark --- AVFragmentedMovieMinder ---
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlaybackCoordinator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlaybackCoordinator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlaybackCoordinator.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/AVFoundation.framework/Headers/AVPlaybackCoordinator.h	2021-06-02 12:44:18.000000000 -0400
@@ -0,0 +1,656 @@
+#if !__has_include(<AVFCore/AVPlaybackCoordinator.h>)
+/*
+	File: AVPlaybackCoordinator.h
+	
+	Framework: AVFoundation
+	
+	Copyright © 2020-2021 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVPlayer.h>
+#import <CoreMedia/CMTime.h>
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class AVPlaybackCoordinator;
+@class AVCoordinatedPlaybackParticipant;
+
+#pragma mark AVPlaybackCoordinator
+
+/**
+	@typedef 	AVCoordinatedPlaybackSuspensionReason
+	@abstract	Describes why an AVCoordinatedPlaybackParticipant is not currently available to participate in coordinated playback.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+typedef NSString *AVCoordinatedPlaybackSuspensionReason NS_TYPED_EXTENSIBLE_ENUM;
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonAudioSessionInterrupted
+	@abstract	The participant's audio session was interrupted.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonAudioSessionInterrupted API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonStallRecovery
+	@abstract	The player is buffering data after a stall.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonStallRecovery API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonPlayingInterstitial
+	@abstract	The participant is presented with interstitial content instead of the main player.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonPlayingInterstitial API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonCoordinatedPlaybackNotPossible
+	@abstract	The participant cannot participate in coordinated playback.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonCoordinatedPlaybackNotPossible API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonUserActionRequired
+	@abstract	The participant's playback object is in a state that requires manual intervention by the user to resume playback.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonUserActionRequired API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVCoordinatedPlaybackSuspensionReasonUserIsChangingCurrentTime
+	@abstract	The participant is actively changing current time.
+ */
+AVF_EXPORT AVCoordinatedPlaybackSuspensionReason const AVCoordinatedPlaybackSuspensionReasonUserIsChangingCurrentTime API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+	@class		AVCoordinatedPlaybackSuspension
+	@abstract	A representation of a temporary break in participation.
+	@note		See AVPlaybackCoordinator's beginSuspensionForReason: method for details on use.
+ */
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVCoordinatedPlaybackSuspension : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	reason
+	@abstract	The reason for the suspension. This will be communicated to other participants while coordination is suspended.
+ */
+@property (nonatomic, readonly) AVCoordinatedPlaybackSuspensionReason reason;
+
+/**
+	@property	beginDate
+	@abstract	The begin time of the suspension.
+ */
+@property (nonatomic, readonly) NSDate *beginDate;
+
+/**
+	@method		end
+	@abstract	Ends the suspension.
+	@discussion If this is the last suspension, the coordinator will adjust timing of its playback object to match the group.
+				Also see endProposingNewTime: for a way to end a suspension and simultaneously proposing a new time to the group.
+*/
+-(void)end;
+
+/**
+	@method		endProposingNewTime:
+	@abstract	Ends the suspension and proposes a new time that everyone should seek to.
+	@discussion If this is the last suspension, the coordinator will propose the new time to the group without changing the groups playback rate.
+				If this is not the last suspension, the time will be ignored.
+				If the time is not numeric, this will behave like a call to [suspension end].
+*/
+-(void)endProposingNewTime:(CMTime)time;
+
+@end
+
+/**
+	@constant	AVPlaybackCoordinatorOtherParticipantsDidChangeNotification
+	@abstract	Posted by the playback coordinator when its otherParticipants property changes.
+ */
+AVF_EXPORT NSNotificationName const AVPlaybackCoordinatorOtherParticipantsDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0))  API_UNAVAILABLE(watchos);
+
+/**
+	@constant	AVPlaybackCoordinatorSuspensionReasonsDidChangeNotification
+	@abstract	Posted by the playback coordinator when its suspensionReasons property changes.
+ */
+AVF_EXPORT NSNotificationName const AVPlaybackCoordinatorSuspensionReasonsDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0))  API_UNAVAILABLE(watchos);
+
+
+/**
+	@class		AVPlaybackCoordinator
+	@abstract	The playback coordinator negotiates playback state between a player, such as AVPlayer or a custom playback object represented by an implementation of the AVPlaybackCoordinatorPlaybackControlDelegate protocol, and a group of other connected players.
+	@discussion	AVPlaybackCoordinator will match rate and time of all connected players. This means that a local rate change or seek will be reflected in all connected players. Equally, a rate change or seek in any of the connected players will be reflected locally.
+				AVPlaybackCoordinator does not manage the items in the play queue of the connected players, so it is up to player's owner to share and match the play queue across participants.
+				The coordinator does, however, keep track of the identity of items enqueued in each player. This means that for one player's current time and rate to be applied on another player, both players must be playing the same item. If two players are playing different items, they each have independent playback states. When one of the two players transitions to the other's item later, it will match the time and rate of that other player.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVPlaybackCoordinator : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	otherParticipants
+	@abstract	The playback states of the other participants in the group.
+	@discussion	Use this property to create UI informing the local user about the state of other participants in the group.
+	@note		The coordinator posts AVPlaybackCoordinatorOtherParticipantsDidChangeNotification when the contents of the array changes.
+*/
+@property (nonatomic, readonly) NSArray<AVCoordinatedPlaybackParticipant*> *otherParticipants;
+
+/**
+	@property	suspensionReasons
+	@abstract	Describes why the coordinator is currently not able to participate in group playback.
+	@discussion	If the list of reasons is non-empty, the coordinator will not react to any changes of group playback state.
+*/
+@property (nonatomic, readonly) NSArray<AVCoordinatedPlaybackSuspensionReason> *suspensionReasons;
+
+/**
+	@method		beginSuspensionForReason:
+	@abstract	Informs the coordinator that its playback object is detached from the group for some reason and should not receive any playback commands from the coordinator.
+	@discussion	Use this to tell the coordinator that its player cannot, or should not, participate in coordinated playback temporarily.
+				The coordinator will not respond to playback commands coming from the group and it will also not send any commands to the group.
+				To resume in group playback, end a suspension by calling one of the suspension's end methods.
+	@note		See the description of AVPlaybackCoordinator subclasses for suspensions automatically begun on behalf of their playback objects, if any.
+	@param		suspensionReason
+					Indicates the reason for the suspension that is shared with other participants. Can be a system-defined reason (see AVCoordinatedPlaybackSuspensionReason*) or a custom string.
+*/
+- (AVCoordinatedPlaybackSuspension *)beginSuspensionForReason:(AVCoordinatedPlaybackSuspensionReason)suspensionReason;
+
+/**
+	@method 	expectedItemTimeAtHostTime:
+	@abstract 	Returns the item time (for the current item) that the coordinator expects to be playing at a given host clock time.
+	@discussion This method is useful to decide if it is appropriate to end a suspension, e.g. a suspension with AVCoordinatedPlaybackSuspensionReasonStallRecovery, while other participants are continuing playback.
+*/
+- (CMTime)expectedItemTimeAtHostTime:(CMTime)hostClockTime;
+
+@end
+
+/**
+	@class		AVCoordinatedPlaybackParticipant
+	@abstract	A participant in a coordinated playback group connected through AVPlaybackCoordinator.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVCoordinatedPlaybackParticipant : NSObject
+
+/**
+	@property	suspensionReasons
+	@abstract	The reason, if any, this participant is currently not participating in coordinated playback.
+*/
+@property (nonatomic, readonly) NSArray<AVCoordinatedPlaybackSuspensionReason> *suspensionReasons;
+
+/**
+	@property	readyToPlay
+	@abstract 	YES if the participant is ready to play.
+*/
+@property (nonatomic, readonly, getter=isReadyToPlay) BOOL readyToPlay;
+
+/**
+	@property	identifier
+	@abstract	A unique id for the participant.
+	@discussion	Use this identifier to distinguish participants.
+*/
+@property (nonatomic, readonly) NSUUID *identifier;
+
+@end
+
+/**
+	@category	AVPlaybackCoordinator (AVCoordinatedPlaybackPolicies)
+	@abstract	Policies used by AVPlaybackCoordinator to determine how to interact with the group.
+*/
+@interface AVPlaybackCoordinator (AVCoordinatedPlaybackPolicies)
+
+/**
+	@method		setParticipantLimit:forWaitingOutSuspensionsWithReason:
+	@abstract	Sets the amount of participants that can join a group before the coordinator stops waiting for this particular suspension reason.
+	@discussion	This allows additional configuration for suspension reasons in the suspensionReasonsThatTriggerWaiting array.
+				When the coordinator decides whether one participant's suspensions should cause others to wait, it will also consider this limit of participants currently in the group.
+*/
+- (void)setParticipantLimit:(NSInteger)participantLimit forWaitingOutSuspensionsWithReason:(AVCoordinatedPlaybackSuspensionReason)reason;
+
+/**
+	@method		participantLimitForWaitingOutSuspensionsWithReason:
+	@abstract	Returns the maximum number of participants that can be in a group before the coordinator stops waiting out this particular suspensions reason. Default value is NSIntegerMax.
+*/
+- (NSInteger)participantLimitForWaitingOutSuspensionsWithReason:(AVCoordinatedPlaybackSuspensionReason)reason;
+
+/**
+	@property	suspensionReasonsThatTriggerWaiting
+	@abstract	If the coordinator decides to delay playback to wait for others, it will wait out these reasons, but not others.
+*/
+@property (nonatomic, copy) NSArray<AVCoordinatedPlaybackSuspensionReason> *suspensionReasonsThatTriggerWaiting;
+
+/**
+	@property	pauseSnapsToMediaTimeOfOriginator
+	@abstract	Determines if participants should mirror the originator's stop time when pausing.
+	@discussion	If YES, all participants will seek to the originator's stop time after they pause. Use this if it is desirable to counteract any network delay incurred by communicating the originator's pause to the other participants.
+				If NO, it's acceptable for participants to stop at slightly different offsets and a pause will not cause other participants' time to jump back.
+*/
+@property (nonatomic, assign) BOOL pauseSnapsToMediaTimeOfOriginator;
+ 
+@end
+
+#pragma mark - AVPlayerPlaybackCoordinator
+
+@protocol AVPlayerPlaybackCoordinatorDelegate;
+
+/**
+	@class		AVPlayerPlaybackCoordinator
+	@abstract	An AVPlaybackCoordinator subclass for controlling an AVPlayer
+	@discussion	While the coordinator is connected to other participants, it will intercept rate changes and seeks issued to the player to share these with other participants if appropriate.
+				Clients of AVPlayer can thus use the AVPlayer interfaces to modify the playback state of connected participants. When appropriate, the coordinator will also impose rate changes and seeks from other participants on the player. If this occurs, the corresponding notifications will carry an originating participant in their payload.
+				See AVPlayer's playbackCoordinator property for more details about player behavior changes.
+				AVPlayerPlaybackCoordinator may begin suspensions on behalf of the player when the player's timeControlStatus changes from AVPlayerTimeControlStatusPlaying to AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate or AVPlayerTimeControlStatusPaused. These suspensions will end when the player's timeControlStatus changes back to AVPlayerTimeControlStatusPlaying. This means that a suspension that begun because the player entered a waiting state, will end automatically when the player is done waiting. A suspension that begun because the player paused, will only end once the player's rate changes back to non-zero.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVPlayerPlaybackCoordinator : AVPlaybackCoordinator
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	player
+	@abstract	The AVPlayer this coordinator is controlling.
+*/
+@property (nonatomic, readonly, weak) AVPlayer *player;
+
+/**
+	@property	delegate
+	@abstract An object implementing the AVPlaybackCoordinatorDelegate protocol.
+*/
+@property (weak) id<AVPlayerPlaybackCoordinatorDelegate> delegate;
+
+@end
+
+/**
+	@protocol	AVPlayerPlaybackCoordinatorDelegate
+	@abstract	Delegate protocol for AVPlayerPlaybackCoordinator.
+ */
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol AVPlayerPlaybackCoordinatorDelegate <NSObject>
+
+@optional
+/**
+	@method		playbackCoordinator:identifierForPlayerItem:
+	@abstract	Called by the coordinator to identify AVPlayerItems played by the coordinator's AVPlayer.
+	@discussion	Implementing this method allows the coordinator to establish identity of two items created from different URLs, e.g., because one participant is using a local cache and the other a remote URL.
+				If the method is not implemented, the coordinator will derive the identifier from the item's asset.
+*/
+-(NSString *)playbackCoordinator:(AVPlayerPlaybackCoordinator *)coordinator identifierForPlayerItem:(AVPlayerItem *)playerItem;
+
+@end
+
+
+#pragma mark - AVDelegatingPlaybackCoordinator
+
+@protocol AVPlaybackCoordinatorPlaybackControlDelegate;
+
+/**
+	@enum		AVDelegatingPlaybackCoordinatorRateChangeOptions
+	@abstract	Configuration for a call to [AVDelegatingPlaybackCoordinator coordinateRateChangeToRate:options:].
+	
+	@constant	AVDelegatingPlaybackCoordinatorRateChangeOptionPlayImmediately
+					Requests that the coordinator begin playback as soon as possible and ignore other participant's readiness and suspensions.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+typedef NS_OPTIONS(NSUInteger, AVDelegatingPlaybackCoordinatorRateChangeOptions) {
+	AVDelegatingPlaybackCoordinatorRateChangeOptionPlayImmediately = (1UL << 0),
+};
+
+/**
+	@enum		AVDelegatingPlaybackCoordinatorSeekOptions
+	@abstract	Configuration for a call to [AVDelegatingPlaybackCoordinator coordinateSeekToTime:options:].
+	
+	@constant	AVDelegatingPlaybackCoordinatorSeekOptionResumeImmediately
+					Requests that the coordinator resume playback as soon as possible after the seek is complete and ignore other participant's readiness and suspensions.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+typedef NS_OPTIONS(NSUInteger, AVDelegatingPlaybackCoordinatorSeekOptions) {
+	AVDelegatingPlaybackCoordinatorSeekOptionResumeImmediately = (1UL << 0),
+};
+
+/**
+	@class		AVDelegatingPlaybackCoordinator
+	@abstract	An AVPlaybackCoordinator subclass for controlling a custom playback object.
+	@note		Use AVPlayer's playbackCoordinator property to get an AVPlaybackCoordinator for an AVPlayer.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinator : AVPlaybackCoordinator
+
+/**
+	@method		initWithPlaybackControlDelegate:
+	@abstract	Creates an AVPlaybackCoordinator for a custom playback object.
+	@discussion	Use this to create an AVPlaybackCoordinator when playback is not driven by an AVPlayer.
+	@param		playbackControlDelegate
+					An object conforming to the AVPlaybackCoordinatorPlaybackControlDelegate protocol representing a custom playback object.
+					The coordinator will only hold a weak reference to its delegate.
+	@note		See AVPlayer's playbackCoordinator property to get an AVPlaybackCoordinator for an AVPlayer.
+*/
+-(instancetype)initWithPlaybackControlDelegate:(id<AVPlaybackCoordinatorPlaybackControlDelegate>)playbackControlDelegate;
+
+/**
+	@property	playbackControlDelegate
+	@abstract	The custom player implementation controlled by the coordinator.
+*/
+@property (nonatomic, readonly, weak) id<AVPlaybackCoordinatorPlaybackControlDelegate> playbackControlDelegate;
+
+
+/**
+	@method 	coordinateRateChangeToRate:options:
+	@abstract 	Coordinaties a rate change across the group of connected participants, waiting for other participants to become ready if necessary.
+	@discussion	The coordinator will request a coordinated rate change from all other connected participants.
+				When changing the rate from zero to non-zero, it may also wait out other participant's suspensions as configured by the suspensionReasonsThatTriggerWaiting property.
+				
+				This method should not be called when the rate change should not affect the group, or the group should not have control over local playback temporarily, e.g. a pause because of an audio session interruption.
+				In those cases, the coordinator should be informed by beginning a suspension with the appropriate reason instead. If other participants pause is dependent on the coordinator's configuration.
+				The suspension will stop the coordinator from issuing further commands to its playbackControlDelegate. After beginning the suspension, the playback object can be reconfigured as necessary.
+	@note		Calling this method while the coordinator is suspended affects only the local playback object. The group state will not be affected, even after the suspension ends.
+	@param		rate
+					The playback rate the group should be using.
+	@param		options
+					Additional configuration of the rate change. For details see AVDelegatingPlaybackCoordinatorRateChangeOptions.
+*/
+-(void)coordinateRateChangeToRate:(float)rate options:(AVDelegatingPlaybackCoordinatorRateChangeOptions)options;
+
+
+/**
+	@method 	coordinateSeekToTime:
+	@abstract 	Triggers a seek to the requested time for all connected participants.
+	@discussion	For behavior around resuming playback after the seek is complete and suspensions, see the discussion of coordinateRateChangeToRate:options.
+	@note		Calling this method while the coordinator is suspended affects only the local playback object. The group state will not be affected, even after the suspension ends.
+				To end a suspension and also affect the group timing see -[AVCoordinatedPlaybackSuspension endProposingNewTime:]
+	@param		time
+					The time the group should seek to when the command ends.
+	@param		options
+					Additional configuration of the seek. For details see AVDelegatingPlaybackCoordinatorSeekOptions.
+*/
+-(void)coordinateSeekToTime:(CMTime)time options:(AVDelegatingPlaybackCoordinatorSeekOptions)options;
+
+/**
+	@method 	transitionToItemWithIdentifier:proposingInitialTimingBasedOnTimebase:
+	@abstract 	Informs the coordinator to transition to a new current item.
+	@discussion	The coordinator will stop sending commands for any previous item identifier and begin sending commands for the new identifier.
+				The proposed timing will either be used as the new referece timing for the group, or it will be compared to an already existing reference timing.
+				If the proposed timing doesn't match such an existing reference timing, the coordinator will use the playbackControlDelegate to issue appropriate commands to match up the timing.
+	@note 		This is not a way to affect the play queue of other participants. All other participants must do this independently, e.g. as a side-effect of an automatic item transition or an out-of-band communication requesting a similar item change.
+	@param		itemIdentifier
+					The identifier for the new current item. May be nil if nothing is playing.
+	@param		snapshotTimebase
+					A timebase used to communicate the initial playback state of the new item. If NULL, the coordinator will assume that playback is paused at kCMTimeZero.
+					An appropriate timebase to pass to the completion handler may be retreived from AVFoundation playback objects such as AVSampleBufferRenderSynchronizer.
+					It can also be created manually using CMTimebaseCreateWithSourceClock. The timebase will only be used to take a snapshot of its immediate timing. It will not be observed further.
+*/
+-(void)transitionToItemWithIdentifier:(NSString * __nullable)itemIdentifier proposingInitialTimingBasedOnTimebase:(CMTimebaseRef __nullable)snapshotTimebase;
+
+/**
+	@property	currentItemIdentifier
+	@abstract	The item identifier of the current item. Previously set by a call to transitionToItemWithIdentifier:proposingInitialTimingBasedOnTimebase:
+*/
+@property (nonatomic, readonly, nullable) NSString *currentItemIdentifier;
+
+/**
+	@method 	reapplyCurrentItemStateToPlaybackControlDelegate
+	@abstract 	Instructs the coordinator to re-issue commands to synchronize the current item back to the state of the other participants.
+	@discussion Use this method when the playback object is in a state that doesn't match the group for some reason and should be re-synchronized.
+*/
+-(void)reapplyCurrentItemStateToPlaybackControlDelegate;
+
+@end
+
+@class AVDelegatingPlaybackCoordinatorPlayCommand;
+@class AVDelegatingPlaybackCoordinatorPauseCommand;
+@class AVDelegatingPlaybackCoordinatorSeekCommand;
+@class AVDelegatingPlaybackCoordinatorBufferingCommand;
+
+/**
+	@protocol	AVPlaybackCoordinatorPlaybackControlDelegate
+	@abstract	A custom player implementation
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@protocol AVPlaybackCoordinatorPlaybackControlDelegate <NSObject>
+
+/**
+	@method		playbackCoordinator:didIssuePlayCommand:completionHandler:
+	@abstract	Called by the coordinator to match the playback rate of the control delegate to the group, when the target rate is non-zero.
+	@discussion	The coordinator issues this command when the desired playback timeline has changed. This may mean that the rate has changed, but it can also mean that the anchor time has changed.
+				Play commands are only issued when the desired playback rate is non-zero.
+	@param		coordinator
+					The coordinator requesting a change in playback rate.
+	@param 		playCommand
+					A play command object. See AVDelegatingPlaybackCoordinatorPlayCommand.
+					The receiver should verify that the command is still valid by inspecting the expectedCurrentItemIdentifier property before applying the command.
+	@param		completionHandler
+					The receiver must call the completion handler when done, either when the command has been handled succesfully or when the receiver has indicated its inability
+					to handle the command by beginning a suspension with an appropriate reason.
+*/
+-(void)playbackCoordinator:(AVDelegatingPlaybackCoordinator *)coordinator
+	   didIssuePlayCommand:(AVDelegatingPlaybackCoordinatorPlayCommand *)playCommand
+		 completionHandler:(void (^)(void))completionHandler;
+
+/**
+	@method		playbackCoordinator:didIssuePauseCommand:completionHandler:
+	@abstract	Called by the coordinator to pause playback.
+	@param		coordinator
+					The coordinator requesting playback to pause.
+	@param 		pauseCommand
+					A pause command object. See AVDelegatingPlaybackCoordinatorPauseCommand.
+					The receiver should verify that the command is still valid by inspecting the expectedCurrentItemIdentifier property before applying the command.
+	@param		completionHandler
+					The receiver must call the completion handler when done, either when the command has been handled succesfully or when the receiver has indicated its inability
+					to handle the command by beginning a suspension with an appropriate reason.
+					If the command's shouldBufferInAnticipationOfPlayback is YES, the completion handler should also only be called once the playback object is ready to receive a subsequent play command.
+*/
+-(void)playbackCoordinator:(AVDelegatingPlaybackCoordinator *)coordinator
+	  didIssuePauseCommand:(AVDelegatingPlaybackCoordinatorPauseCommand *)pauseCommand
+		 completionHandler:(void (^)(void))completionHandler;
+
+
+/**
+	@method		playbackCoordinator:didIssueSeekCommand:completionHandler:
+	@abstract	Called by the coordinator to seek to a new time.
+	@discussion The coordinator issues this command when the playback object current time changes, potentially also pausing playback.
+	@param		coordinator
+					The coordinator requesting the seek.
+	@param 		seekCommand
+					A seek command object. See AVDelegatingPlaybackCoordinatorSeekCommand.
+					The receiver should verify that the command is still valid by inspecting the expectedCurrentItemIdentifier property before applying the command.
+	@param		completionHandler
+					The receiver must call the completion handler when done, either when the command has been handled succesfully or when the receiver has indicated its inability
+					to handle the command by beginning a suspension with an appropriate reason.
+					If the command's shouldBufferInAnticipationOfPlayback is YES, the completion handler should also only be called once the playback object is ready to receive a subsequent play command.
+*/
+-(void)playbackCoordinator:(AVDelegatingPlaybackCoordinator *)coordinator
+	   didIssueSeekCommand:(AVDelegatingPlaybackCoordinatorSeekCommand *)seekCommand
+		 completionHandler:(void (^)(void))completionHandler;
+
+
+/**
+	@method		playbackCoordinator:didIssueBufferingCommand:completionHandler:
+	@abstract	Called by the coordinator to indicate that playback is expected to begin soon and the playback object should begin buffering.
+	@discussion	The coordinator issues this command when playback is currently paused and the coordinator is expecting playback to start soon.
+ 				In response to this command, it is appropriate to update playback UI to indicate playback in a waiting state.
+				The expected start can be cancelled by calling -[AVDelegatingPlaybackCoordinator coordinateRateChangeTo:0].
+	@param		coordinator
+					The coordinator requesting buffering to begin.
+	@param 		bufferingCommand
+					A buffering command object. See AVDelegatingPlaybackCoordinatorBufferingCommand.
+					The receiver should verify that the command is still valid by inspecting the expectedCurrentItemIdentifier property before applying the command.
+	@param		completionHandler
+					The receiver must call the completion handler when done, either when the command has been handled succesfully or when the receiver has indicated its inability
+					to handle the command by beginning a suspension with an appropriate reason.
+					For buffering commands, the command should only be considered complete once the playback object is ready to receive a subsequent play command.
+*/
+-(void)playbackCoordinator:(AVDelegatingPlaybackCoordinator *)coordinator
+  didIssueBufferingCommand:(AVDelegatingPlaybackCoordinatorBufferingCommand *)bufferingCommand
+		 completionHandler:(void (^)(void))completionHandler;
+
+@end
+
+/**
+	@class		AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+	@abstract	Abstract superclass for playback commands
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinatorPlaybackControlCommand : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	originator
+	@abstract	The participant causing this command to be issued.
+	@discussion	Only commands issued on behalf of another participant will contain an originator.
+				Commands caused by local requests, e.g., requests to coordinate a rate change, will not contain an originator.
+				Similarly, re-application of older commands, e.g., in response to a call to [AVDelegatingPlaybackCoordinator reapplyCurrentItemStateToPlaybackControlDelegate], will not contain an originator.
+				If the originator is non-nil, it may be appropriate to show UI indicating someone else's action.
+*/
+@property (nonatomic, readonly, nullable) AVCoordinatedPlaybackParticipant *originator;
+
+/**
+	@property	expectedCurrentItemIdentifier
+	@abstract	Indicates the item this command was issued for.
+	@discussion	Commands are always meant for the current item. A command handler should verify that the identifier of its current item matches this identifier.
+				If it doesn't this command is obsolete and should be ignored. Note that any completion handler of the delegate method issuing the command must still be invoked.
+*/
+@property (nonatomic, readonly) NSString *expectedCurrentItemIdentifier;
+
+@end
+
+/**
+	@class		AVDelegatingPlaybackCoordinatorPlayCommand
+	@abstract	A playback command requesting playback with specific timing.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinatorPlayCommand : AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	rate
+	@abstract	Playback rate. Will always be non-zero.
+*/
+@property (nonatomic, readonly) float rate;
+
+/**
+	@property	itemTime
+	@abstract	The itemTime that playback should begin at.
+	@discussion	The receiver of this command should verify that data is loaded for the requested time and potentially begin loading it before beginning playback.
+				It is not important to load data for time exactly. If data "similar" to time is already loaded, it is acceptable to start playback with the loaded data. Playback should still start with the requested timing.
+				Should the receiver be unable to start with the exact requested timing, playback will be out of sync with the group.
+				If data for the requested time cannot be loaded, or playback stalls later, the command handler may want to indicate this to the coordinator by beginning a suspension with AVCoordinatedPlaybackSuspensionReasonStallRecovery.
+*/
+@property (nonatomic, readonly) CMTime itemTime;
+
+/**
+	@property	hostClockTime
+	@abstract	This is the host clock time (see CMClockGetHostTimeClock()) defining when playback should start (or should have started) at the given itemTime.
+*/
+@property (nonatomic, readonly) CMTime hostClockTime;
+
+@end
+
+
+/**
+	@class		AVDelegatingPlaybackCoordinatorBufferingCommand
+	@abstract	A playback command requesting buffering in anticipation of playback.
+	@discussion Receiving this command should be reflected to the user as playback in a buffering state.
+				To cancel the group intent to begin playback and move back into a paused state, call [AVDelegatingPlaybackCoordinator coordinateRateChangeToRate:0 options: 0]
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinatorBufferingCommand : AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	anticipatedPlaybackRate
+	@abstract	The rate to prepare playback for.
+	@discussion The command should only be considered complete once the player is ready to receive an AVDelegatingPlaybackCoordinatorPlayCommand with the indicated rate.
+*/
+@property (nonatomic, readonly) float anticipatedPlaybackRate;
+
+/**
+	@property	completionDueDate
+	@abstract	Communicates when the coordinator expects the command's completion handler at the latest.
+	@discussion	A receiver of a buffering command should fire the completion handler by this date at the latest. This is useful in buffering situations where the receiver
+				has not yet buffered enough data to be considered ready to play by the due date. The receiver should then decide to either complete the command as is
+				to try and keep up with the group, or alternatively begin a stall recovery suspension to communicate the situation to the other participants.
+				Completing the command after this date means that the coordinator will likely send a play command for a later time than the receiver buffered for.
+*/
+@property (nonatomic, readonly, nullable) NSDate *completionDueDate;
+
+@end
+
+/**
+	@class		AVDelegatingPlaybackCoordinatorPauseCommand
+	@abstract	A playback command requesting a pause
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinatorPauseCommand : AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	shouldBufferInAnticipationOfPlayback
+	@abstract	Indicates that playback is anticipated and the player should begin buffering if necessary.
+	@discussion	When shouldBufferInAnticipationOfPlayback is YES, some participant wants to resume playback at the rate indicated by the anticipatedPlaybackRate property.
+				This should be treated similar to receiving a separate AVDelegatingPlaybackCoordinatorBufferingCommand.
+				If YES, the command should only be considered complete once the player is ready to receive an AVDelegatingPlaybackCoordinatorPlayCommand with the indicated rate.
+*/
+@property (nonatomic, readonly) BOOL shouldBufferInAnticipationOfPlayback;
+
+/**
+	@property	anticipatedPlaybackRate
+	@abstract	The rate to prepare for if shouldBufferInAnticipationOfPlayback is YES.
+*/
+@property (nonatomic, readonly) float anticipatedPlaybackRate;
+
+@end
+
+
+/**
+	@class		AVDelegatingPlaybackCoordinatorSeekCommand
+	@abstract	A playback command requesting a seek.
+	@discussion	If the current playback rate is non-zero, playback should not automatically resume after the seek. Instead the delegate should pause and wait for the coordinator to issue another PlayCommand.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
+@interface AVDelegatingPlaybackCoordinatorSeekCommand : AVDelegatingPlaybackCoordinatorPlaybackControlCommand
+
+AV_INIT_UNAVAILABLE
+
+/**
+	@property	itemTime
+	@abstract	The time to seek the currentItem to.
+	@discussion	Playback should never automatically resume after seeking to this time. The coordinator will issue a new PlayCommand when everyone else is ready to resume.
+*/
+@property (nonatomic, readonly) CMTime itemTime;
+
+/**
+	@property	shouldBufferInAnticipationOfPlayback
+	@abstract	Indicates that playback is anticipated and the player should begin buffering if necessary.
+	@discussion	When shouldBufferInAnticipationOfPlayback, playback is expected to eventually resume at the rate indicated by the anticipatedPlaybackRate property.
+				This should be treated similar to receiving a separate AVDelegatingPlaybackCoordinatorBufferingCommand.
+				If YES, the command should only be considered complete once the player is ready to receive an AVDelegatingPlaybackCoordinatorPlayCommand with the indicated rate.
+*/
+@property (nonatomic, readonly) BOOL shouldBufferInAnticipationOfPlayback;
+
+/**
+	@property	anticipatedPlaybackRate
+	@abstract	The rate to prepare for if shouldBufferInAnticipationOfPlayback is YES.
+*/
+@property (nonatomic, readonly) float anticipatedPlaybackRate;
+
+/**
+	@property	completionDueDate
+	@abstract	Communicates when the coordinator expects the command's completion handler at the latest.
+	@discussion	A seek command expecting buffering in anticipation of playback does expect the receiver to fire the completion handler by this date at the latest.
+				This is useful in buffering situations where the receiver has not yet buffered enough data to be considered ready to play by the due date.
+				The receiver should then decide to either complete the command as is to try and keep up with the group, or alternatively begin a stall recovery
+				suspension to communicate the situation to the other participants.
+				Completing the command after this date means that the coordinator will likely send a play command for a later time than the receiver buffered for.
+*/
+@property (nonatomic, readonly, nullable) NSDate *completionDueDate;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#else
+#import <AVFCore/AVPlaybackCoordinator.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h	2021-03-16 08:47:41.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h	2021-06-02 11:07:17.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2019 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -40,6 +40,7 @@
 
 @class AVPlayerItem;
 @class AVPlayerInternal;
+@class AVPlayerPlaybackCoordinator;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -132,6 +133,32 @@
 
 @end
 
+/**
+ @constant AVPlayerRateDidChangeNotification
+ @abstract Indicates a player rate change.
+ @discussion Posted by the player when its rate changes. Similar to KVO of AVPlayer.rate, but providing additional information about the rate change in the userInfo. See keys below.
+ */
+AVF_EXPORT NSNotificationName const AVPlayerRateDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/**
+ @constant AVPlayerRateDidChangeReasonKey
+ @abstract Indicates a reason for the rate change notification.
+ @discussion The value corresponding to this key is of type AVPlayerRateDidChangeReason.
+ */
+AVF_EXPORT NSString *const AVPlayerRateDidChangeReasonKey API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/**
+ @constant AVPlayerRateDidChangeOriginatingParticipantKey
+ @abstract Indicates a rate change was caused by another participant connected through AVPlayerPlaybackCoordinator.
+ @discussion Informs the receiver of an AVPlayerRateDidChangeNotification about a rate change originated from another AVCoordinatedPlaybackParticipant connected through AVPlayerPlaybackCoordinator. This can be used to inform UI showing why the playback rate changed. The type of the value for this key is an AVCoordinatedPlaybackParticipant, which is part of the AVPlayerPlaybackCoordinator.otherParticipants array.
+ */
+AVF_EXPORT NSString *const AVPlayerRateDidChangeOriginatingParticipantKey API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+typedef NSString * AVPlayerRateDidChangeReason NS_STRING_ENUM;
+AVF_EXPORT AVPlayerRateDidChangeReason const AVPlayerRateDidChangeReasonSetRateCalled API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+AVF_EXPORT AVPlayerRateDidChangeReason const AVPlayerRateDidChangeReasonSetRateFailed API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+AVF_EXPORT AVPlayerRateDidChangeReason const AVPlayerRateDidChangeReasonAudioSessionInterrupted API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+AVF_EXPORT AVPlayerRateDidChangeReason const AVPlayerRateDidChangeReasonAppBackgrounded API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 @interface AVPlayer (AVPlayerPlaybackControl)
 
@@ -226,6 +253,12 @@
  */
 AVF_EXPORT AVPlayerWaitingReason const AVPlayerWaitingWithNoItemToPlayReason API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
+/**
+ @constant AVPlayerWaitingForCoordinatedPlaybackReason
+ @abstract Indicates that the player is waiting for another participant connected through its AVPlayerPlaybackCoordinator.
+ @discussion The player is waiting for playback because its connected AVPlayerPlaybackCoordinator requires information from one of the other participants before playback can start.
+*/
+AVF_EXPORT AVPlayerWaitingReason const AVPlayerWaitingForCoordinatedPlaybackReason API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property		reasonForWaitingToPlay
@@ -323,7 +356,8 @@
  @discussion		Use this method to seek to a specified time for the current player item and to be notified when the seek operation is complete.
 					The completion handler for any prior seek request that is still in process will be invoked immediately with the finished parameter 
 					set to NO. If the new request completes without being interrupted by another seek request or by any other operation the specified 
-					completion handler will be invoked with the finished parameter set to YES. 
+					completion handler will be invoked with the finished parameter set to YES.  If no item is attached, the completion handler will be
+					invoked immediately with the finished parameter set to NO.
  */
 - (void)seekToDate:(NSDate *)date completionHandler:(void (^)(BOOL finished))completionHandler API_AVAILABLE(macos(10.7), ios(5.0), tvos(9.0), watchos(1.0));
 
@@ -357,7 +391,8 @@
  @discussion		Use this method to seek to a specified time for the current player item and to be notified when the seek operation is complete.
 					The completion handler for any prior seek request that is still in process will be invoked immediately with the finished parameter 
 					set to NO. If the new request completes without being interrupted by another seek request or by any other operation the specified 
-					completion handler will be invoked with the finished parameter set to YES. 
+					completion handler will be invoked with the finished parameter set to YES.  If no item is attached, the completion handler will be
+					invoked immediately with the finished parameter set to NO.
  */
 - (void)seekToTime:(CMTime)time completionHandler:(void (^)(BOOL finished))completionHandler API_AVAILABLE(macos(10.7), ios(5.0), tvos(9.0), watchos(1.0));
 
@@ -373,7 +408,7 @@
 					Messaging this method with beforeTolerance:kCMTimePositiveInfinity and afterTolerance:kCMTimePositiveInfinity is the same as messaging seekToTime: directly.
 					The completion handler for any prior seek request that is still in process will be invoked immediately with the finished parameter set to NO. If the new 
 					request completes without being interrupted by another seek request or by any other operation the specified completion handler will be invoked with the 
-					finished parameter set to YES.
+					finished parameter set to YES.  If no item is attached, the completion handler will be invoked immediately with the finished parameter set to NO.
  */
 - (void)seekToTime:(CMTime)time toleranceBefore:(CMTime)toleranceBefore toleranceAfter:(CMTime)toleranceAfter completionHandler:(void (^)(BOOL finished))completionHandler API_AVAILABLE(macos(10.7), ios(5.0), tvos(9.0), watchos(1.0));
 
@@ -445,8 +480,12 @@
 */
 - (void)cancelPendingPrerolls API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
 
-/* NULL by default.  if not NULL, overrides the automatic choice of master clock for item timebases. This is most useful for synchronizing video-only movies with audio played via other means. IMPORTANT: If you specify a master clock other than the appropriate audio device clock, audio may drift out of sync. */
-@property (nonatomic, retain, nullable) __attribute__((NSObject)) CMClockRef masterClock API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
+/*!
+	@property		sourceClock
+	@abstract		Set to override the automatic choice of source clock for item timebases.
+	@discussion		NULL by default. This is most useful for synchronizing video-only movies with audio played via other means. IMPORTANT NOTE: If you specify a source clock other than the appropriate audio device clock, audio may drift out of sync.
+*/
+@property (nonatomic, retain, nullable) __attribute__((NSObject)) CMClockRef sourceClock API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 @end
 
@@ -626,16 +665,16 @@
 
 /* Indicates whether the player allows AirPlay Video playback. The default value is YES. 
 	This property is deprecated. Use AVPlayer's -allowsExternalPlayback instead. */
-@property BOOL allowsAirPlayVideo API_DEPRECATED("No longer supported", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
+@property BOOL allowsAirPlayVideo API_DEPRECATED_WITH_REPLACEMENT("allowsExternalPlayback", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
 
 /* Indicates whether the player is currently playing video via AirPlay. 
 	This property is deprecated. Use AVPlayer's -externalPlaybackActive instead.*/
-@property (nonatomic, readonly, getter=isAirPlayVideoActive) BOOL airPlayVideoActive API_DEPRECATED("No longer supported", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
+@property (nonatomic, readonly, getter=isAirPlayVideoActive) BOOL airPlayVideoActive API_DEPRECATED_WITH_REPLACEMENT("externalPlaybackActive", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
 
 /* Indicates whether the player should automatically switch to AirPlay Video while AirPlay Screen is active in order to play video content, switching back to AirPlay Screen as soon as playback is done. 
 	The default value is NO. Has no effect if allowsAirPlayVideo is NO.
 	This property is deprecated. Use AVPlayer's -usesExternalPlaybackWhileExternalScreenIsActive instead. */
-@property BOOL usesAirPlayVideoWhileAirPlayScreenIsActive API_DEPRECATED("No longer supported", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
+@property BOOL usesAirPlayVideoWhileAirPlayScreenIsActive API_DEPRECATED_WITH_REPLACEMENT("usesExternalPlaybackWhileExternalScreenIsActive", ios(5.0, 6.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(macos);
 
 @end
 
@@ -755,6 +794,54 @@
 
 @end
 
+@interface AVPlayer (AVPlayerBackgroundSupport)
+
+/*!
+ @typedef AVPlayerAudiovisualBackgroundPlaybackPolicy
+ @discussion This policy describes how AVPlayer behaves when the application transitions to UIApplicationStateBackground while playing video.
+ 
+ @constant	AVPlayerAudiovisualBackgroundPlaybackPolicyAutomatic
+	Indicates that the system is free to decide. This is the default policy.
+ 
+ @constant  AVPlayerAudiovisualBackgroundPlaybackPolicyPauses
+	Indicates that the player must be paused on going to background.
+ 
+ @constant	AVPlayerAudiovisualBackgroundPlaybackPolicyContinuesIfPossible
+	Indicates that the player continues to play if possible in background.
+ */
+typedef NS_ENUM(NSInteger, AVPlayerAudiovisualBackgroundPlaybackPolicy) {
+	AVPlayerAudiovisualBackgroundPlaybackPolicyAutomatic = 1,
+	AVPlayerAudiovisualBackgroundPlaybackPolicyPauses = 2,
+	AVPlayerAudiovisualBackgroundPlaybackPolicyContinuesIfPossible = 3,
+} API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
+	@property   audiovisualBackgroundPlaybackPolicy
+	@abstract   Controls the policy to be used in deciding how playback of audiovisual content should continue while the application transitions to background.
+	@discussion By default, the system is free to decide the background playback policy (AVPlayerAudiovisualBackgroundPlaybackPolicyAutomatic).
+		If set to AVPlayerAudiovisualBackgroundPlaybackPolicyPauses, player will be paused on entering background.
+		If set to AVPlayerAudiovisualBackgroundPlaybackPolicyContinuesIfPossible, the system makes the best effort to continue playback but the app also needs appropriate UIBackgroundModes for the system to let it continue running in the background. Note that this policy only applies to items with enabled video.
+ */
+@property (nonatomic) AVPlayerAudiovisualBackgroundPlaybackPolicy audiovisualBackgroundPlaybackPolicy API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+@end
+
+@interface AVPlayer (PlaybackCoordination)
+/**
+@property playbackCoordinator
+@abstract The playback coordinator for this player.
+@discussion If the playback coordinator is connected to other participants, rate changes and seeks on the current item will be automatically mirrored to all connected participants.
+			Depending on policies, the coordinator may also intercept rate changes to non-zero to coordinate playback start with the rest of the group.
+			Use [AVPlayer playImmediatelyAtRate:] to override the coordinated startup behavior and start playback immediately. This is useful to give users an opportunity to override waiting caused by other participants' suspensions.
+			Player configuration other than rate and seeks are not communicated to other participants and can be configured independently by each participant.
+			A player with a connected playbackCoordinator will change behavior in situations that require the player to pause for internal reasons, such as a route change or a stall.
+			When resuming after these events, the player will not resume at the stop time. Instead, it will attempt to rejoin the group, potentially seeking to match the other participant's progress.
+			It is left to the owner of the AVPlayer to ensure that all participants are playing the same item. See the discussion of AVPlaybackCoordinator for considerations about item transitions.
+*/
+@property (readonly, strong) AVPlayerPlaybackCoordinator *playbackCoordinator API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+@end
+
 @interface AVPlayer (AVPlayerDeprecated)
 
 /*!
@@ -775,6 +862,9 @@
  */
 @property (getter=isClosedCaptionDisplayEnabled) BOOL closedCaptionDisplayEnabled API_DEPRECATED("Allow AVPlayer to enable closed captions automatically according to user preferences by ensuring that the value of appliesMediaSelectionCriteriaAutomatically is YES.", macos(10.7, 10.13), ios(4.0, 11.0), tvos(9.0, 11.0)) API_UNAVAILABLE(watchos);
 
+/* Use sourceClock instead. */
+@property (nonatomic, retain, nullable) __attribute__((NSObject)) CMClockRef masterClock  API_DEPRECATED_WITH_REPLACEMENT( "sourceClock", macos(10.8, API_TO_BE_DEPRECATED), ios(6.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED), watchos(1.0, API_TO_BE_DEPRECATED));
+
 @end
 
 /*!
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h	2021-03-16 13:58:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h	2021-06-02 11:07:16.000000000 -0400
@@ -30,7 +30,7 @@
 	AVPlayerInterstitialEventRestrictionRequiresPlaybackAtPreferredRateForAdvancement = (1UL << 2),
 	
 	AVPlayerInterstitialEventRestrictionDefaultPolicy = AVPlayerInterstitialEventRestrictionNone
-} NS_SWIFT_NAME(AVPlayerInterstitialEvent.Restrictions) API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+} NS_SWIFT_NAME(AVPlayerInterstitialEvent.Restrictions) API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*!
   @class        AVPlayerInterstitialEvent
@@ -45,10 +45,10 @@
 
     The alternative interstitial content is specified as an array of one or more AVPlayerItems that will be used as templates for the creation of items for interstitial playback. In other words, these template items are not the actual items that will be played during interstitial playback; instead they are used to generate the items that are to be played, with property values that match the configuration of your template items.
 
-    If you wish to observe the scheduling and progress of interstitial events, use an AVPlayerInterstitialEventObserver. If you wish to specify your own schedule of interstitial events, use an AVPlayerInterstitialEventController.
+    If you wish to observe the scheduling and progress of interstitial events, use an AVPlayerInterstitialEventMonitor. If you wish to specify your own schedule of interstitial events, use an AVPlayerInterstitialEventController.
 
 */
-API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5))
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
 @interface AVPlayerInterstitialEvent : NSObject
 
 AV_INIT_UNAVAILABLE
@@ -57,6 +57,8 @@
   @abstract     Returns an instance of AVPlayerInterstitialEvent for use in scheduling interstitial playback.
   @param        primaryItem
                 An AVPlayerItem representing the primary content during the playback of which the interstitial event should occur. The primaryItem must have an AVAsset that provides an intrinsic mapping from its timeline to real-time dates.
+  @param        identifier
+                An external identifier for the event.
   @param        time
                 The time within the duration of the primary item at which playback of the primary content should be temporarily suspended and the interstitial items played.
   @param        templateItems
@@ -65,17 +67,23 @@
                 Indicates restrictions on the use of end user playback controls that are imposed by the event.
   @param        resumptionOffset
                 Specifies the offset in time at which playback of the primary item should resume after interstitial playback has finished. Definite numeric values are supported. The value kCMTimeIndefinite can also be used, in order to specify that the effective resumption time offset should accord with the wallclock time elapsed during interstitial playback.
+  @param        playoutLimit
+                Specifies the offset from the beginning of the interstitial at which interstitial playback should end, if the interstitial asset(s) are longer. Pass a positive numeric value, or kCMTimeInvalid to indicate no playout limit.
+  @param        userDefinedAttributes
+			    Storage for attributes defined by the client or the content vendor. Attribute names should begin with X- for uniformity with server insertion.
   @result       An instance of AVPlayerInterstitialEvent.
 */
-+ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem time:(CMTime)time templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset;
++ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem identifier:(nullable NSString *)identifier time:(CMTime)time templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset playoutLimit:(CMTime)playoutLimit;
 
-+ (instancetype)playerInterstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem time:(CMTime)time interstitialTemplateItems:(NSArray<AVPlayerItem *> *)interstitialTemplateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset;// COMPATIBILITY SHIM - 72562501
++ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem identifier:(nullable NSString *)identifier time:(CMTime)time templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset playoutLimit:(CMTime)playoutLimit userDefinedAttributes:(nullable NSDictionary*)userDefinedAttributes NS_REFINED_FOR_SWIFT;
 
 /*!
   @method       interstitialEventWithPrimaryItem:date:templateItems:restrictions:resumptionOffset:
   @abstract     Returns an instance of AVPlayerInterstitialEvent for use in scheduling interstitial playback.
   @param        primaryItem
                 An AVPlayerItem representing the primary content during the playback of which the interstitial event should occur. The primaryItem must have an AVAsset that provides an intrinsic mapping from its timeline to real-time dates.
+  @param        identifier
+                An external identifier for the event.
   @param        date
                 The date within the date range of the primary item at which playback of the primary content should be temporarily suspended and the interstitial items played.
   @param        templateItems
@@ -84,11 +92,15 @@
                 Indicates restrictions on the use of end user playback controls that are imposed by the event.
   @param        resumptionOffset
                 Specifies the offset in time at which playback of the primary item should resume after interstitial playback has finished. Definite numeric values are supported. The value kCMTimeIndefinite can also be used, in order to specify that the effective resumption time offset should accord with the wallclock time elapsed during interstitial playback.
+  @param        playoutLimit
+                Specifies the offset from the beginning of the interstitial at which interstitial playback should end, if the interstitial asset(s) are longer. Pass a positive numeric value, or kCMTimeInvalid to indicate no playout limit.
+  @param        userDefinedAttributes
+			    Storage for attributes defined by the client or the content vendor. Attribute names should begin with X- for uniformity with server insertion.
   @result       An instance of AVPlayerInterstitialEvent.
 */
-+ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem date:(NSDate *)date templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset;
++ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem identifier:(nullable NSString *)identifier date:(NSDate *)date templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset playoutLimit:(CMTime)playoutLimit;
 
-+ (instancetype)playerInterstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem date:(NSDate *)date interstitialTemplateItems:(NSArray<AVPlayerItem *> *)interstitialTemplateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset;// COMPATIBILITY SHIM - 72562501
++ (instancetype)interstitialEventWithPrimaryItem:(AVPlayerItem *)primaryItem identifier:(nullable NSString *)identifier date:(NSDate *)date templateItems:(NSArray<AVPlayerItem *> *)templateItems restrictions:(AVPlayerInterstitialEventRestrictions)restrictions resumptionOffset:(CMTime)resumptionOffset playoutLimit:(CMTime)playoutLimit userDefinedAttributes:(nullable NSDictionary*)userDefinedAttributes NS_REFINED_FOR_SWIFT;
 
 /*!
   @property     primaryItem
@@ -97,6 +109,13 @@
 @property (nonatomic, readonly, weak) AVPlayerItem *primaryItem;
 
 /*!
+  @property     identifier
+  @abstract     An external identifier for the event. 
+  @discussion	If an event is set on an AVPlayerInterstitialEventController that already has an event with the same identifier, the old event will be replaced by the new one.
+*/
+@property (nonatomic, readonly) NSString *identifier;
+
+/*!
   @property     time
   @abstract     The time within the duration of the primary item at which playback of the primary content should be temporarily suspended and the interstitial items played.
   @discussion	Will have a value equal to kCMTimeInvalid if the event was initialized with a date instead of a time.
@@ -115,7 +134,6 @@
   @abstract     An array of AVPlayerItems with configurations that will be reproduced for the playback of interstitial content.
 */
 @property (nonatomic, readonly) NSArray<AVPlayerItem *> *templateItems;
-@property (nonatomic, readonly) NSArray<AVPlayerItem *> *interstitialTemplateItems;// COMPATIBILITY SHIM - 72562501
 
 /*!
   @property     restrictions
@@ -131,30 +149,45 @@
 */
 @property (nonatomic, readonly) CMTime resumptionOffset;
 
+/*!
+  @property     playoutLimit
+  @abstract     Specifies the offset in time at which playback of the interstitial event should end.
+  @discussion
+    Can be any positive numeric value, or invalid. The default value is kCMTimeInvalid, which means there is no limit.
+*/
+@property (nonatomic, readonly) CMTime playoutLimit;
+
+/*!
+  @property     userDefinedAttributes
+  @abstract     Attributes of the event defined by the content vendor or the client.
+  @discussion
+    Dictionary keys are attribute names. Dictionary values are attribute values.
+*/
+@property (nonatomic, readonly) NSDictionary *userDefinedAttributes;
+
 @end
 
 /*!
-  @class        AVPlayerInterstitialEventObserver
+  @class        AVPlayerInterstitialEventMonitor
 
   @abstract
-    An AVPlayerInterstitialEventObserver allows you to observe the scheduling and progress of interstitial events, specified either intrinsically within the content of primary items, such as via use of directives carried by HLS media playlists, or via use of an AVPlayerInterstitialEventController.
+    An AVPlayerInterstitialEventMonitor allows you to observe the scheduling and progress of interstitial events, specified either intrinsically within the content of primary items, such as via use of directives carried by HLS media playlists, or via use of an AVPlayerInterstitialEventController.
     
   @discussion
     The schedule of interstitial events is provided as an array of AVPlayerInterstitialEvents. For each AVPlayerInterstitialEvent, when the primary player's current item is the primary item of the interstitial event and its currentDate reaches the date of the event, playback of the primary item by the primary player is temporarily suspended, i.e. its timeControlStatus changes to AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate and its reasonForWaitingToPlay will change to AVPlayerWaitingDuringInterstitialEventReason. During this suspension, playback of items that replicate the interstitial template items of the event are played by the interstitial player, which temporarily assumes the output configuration of the primary player; for example, its visual content will be routed to AVPlayerLayers that reference the primary player. Once the interstitial player has advanced through playback of the interstitial items specified by the event or its current item otherwise becomes nil, playback of the primary content will resume, at an offset from the time at which it was suspended as specified by the event.
   
 */
-API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5))
-@interface AVPlayerInterstitialEventObserver : NSObject
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVPlayerInterstitialEventMonitor : NSObject
 
 /*!
-  @method       interstitialEventObserverWithPrimaryPlayer:
+  @method       interstitialEventMonitorWithPrimaryPlayer:
   @abstract     Returns an instance of AVPlayerInterstitialEvent for use in observing and scheduling interstitial playback.
   @param        primaryPlayer
                 The AVPlayer that will play the primaryItems of the receiver's interstitial events.
-  @result       An instance of AVPlayerInterstitialEventObserver.
+  @result       An instance of AVPlayerInterstitialEventMonitor.
 */
-+ (instancetype)interstitialEventObserverWithPrimaryPlayer:(AVPlayer *)primaryPlayer;
-+ (instancetype)playerInterstitialEventObserverWithPrimaryPlayer:(AVPlayer *)primaryPlayer;// COMPATIBILITY SHIM - 72562501
++ (instancetype)interstitialEventMonitorWithPrimaryPlayer:(AVPlayer *)primaryPlayer;
 
 - (instancetype)initWithPrimaryPlayer:(AVPlayer *)primaryPlayer  NS_DESIGNATED_INITIALIZER;
 
@@ -168,7 +201,7 @@
   @property     interstitialPlayer
   @abstract     The AVQueuePlayer that will play interstitial items during suspension of playback of primary items.
 */
-@property (nonatomic, readonly, weak) AVQueuePlayer *interstitialPlayer;
+@property (nonatomic, readonly) AVQueuePlayer *interstitialPlayer;
 
 /*!
   @property     events
@@ -178,7 +211,6 @@
     When interstitial events follow a schedule specified via use of an AVPlayerInterstitialEventController, the value of this property changes only when a new schedule is set on the AVPlayerInterstitialEventController.
 */
 @property (readonly) NSArray<AVPlayerInterstitialEvent *> *events;
-@property (readonly) NSArray<AVPlayerInterstitialEvent *> *interstitialEvents;// COMPATIBILITY SHIM - 72562501
 
 /*!
   @property     currentEvent
@@ -189,17 +221,28 @@
 @end
 
 /*!
-  @constant     AVPlayerInterstitialEventObserverEventsDidChangeNotification
-  @abstract     A notification that's posted whenever the value of events of an AVPlayerInterstitialEventObserver is changed.
+  @constant     AVPlayerInterstitialEventMonitorEventsDidChangeNotification
+  @abstract     A notification that's posted whenever the value of events of an AVPlayerInterstitialEventMonitor is changed.
 */
-AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventObserverEventsDidChangeNotification API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventMonitorEventsDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*!
-  @constant     AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification
-  @abstract     A notification that's posted whenever the currentEvent of an AVPlayerInterstitialEventObserver changes.
+  @constant     AVPlayerInterstitialEventMonitorCurrentEventDidChangeNotification
+  @abstract     A notification that's posted whenever the currentEvent of an AVPlayerInterstitialEventMonitor changes.
 */
-AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventMonitorCurrentEventDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+
+/* Compatibility Shim implementation - remove with rdar://75898249 */
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVPlayerInterstitialEventObserver : AVPlayerInterstitialEventMonitor
 
++ (instancetype)interstitialEventObserverWithPrimaryPlayer:(AVPlayer *)primaryPlayer;
+- (instancetype)initWithPrimaryPlayer:(AVPlayer *)primaryPlayer  NS_DESIGNATED_INITIALIZER;
+
+@end
+AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventObserverEventsDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+AVF_EXPORT NSNotificationName const AVPlayerInterstitialEventObserverCurrentEventDidChangeNotification API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 
 /*!
@@ -213,8 +256,8 @@
     The schedule of interstitial events is specified as an array of AVPlayerInterstitialEvents. For each AVPlayerInterstitialEvent, when the primary player's current item is the primary item of the interstitial event and its currentDate reaches the date of the event, playback of the primary item by the primary player is temporarily suspended, i.e. its timeControlStatus changes to AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate and its reasonForWaitingToPlay will change to AVPlayerWaitingDuringInterstitialEventReason. During this suspension, playback of items that replicate the interstitial template items of the event are played by the interstitial player, which temporarily assumes the output configuration of the primary player; for example, its visual content will be routed to AVPlayerLayers that reference the primary player. Once the interstitial player has advanced through playback of the interstitial items specified by the event or its current item otherwise becomes nil, playback of the primary content will resume, at an offset from the time at which it was suspended as specified by the event.
 
 */
-API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5))
-@interface AVPlayerInterstitialEventController : AVPlayerInterstitialEventObserver
+API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0))
+@interface AVPlayerInterstitialEventController : AVPlayerInterstitialEventMonitor
 
 /*!
   @method       interstitialEventControllerWithPrimaryPlayer
@@ -224,7 +267,6 @@
   @result       An instance of AVPlayerInterstitialEventController.
 */
 + (instancetype)interstitialEventControllerWithPrimaryPlayer:(AVPlayer *)primaryPlayer;
-+ (instancetype)playerInterstitialEventControllerWithPrimaryPlayer:(AVPlayer *)primaryPlayer;// COMPATIBILITY SHIM - 72562501
 
 - (instancetype)initWithPrimaryPlayer:(AVPlayer *)primaryPlayer;
 
@@ -241,7 +283,6 @@
     If interstitial events are scheduled for the same date, they are ordered according to their position in the events array.
 */
 @property (copy, null_resettable) NSArray<AVPlayerInterstitialEvent *> *events;
-@property (copy, null_resettable) NSArray<AVPlayerInterstitialEvent *> *interstitialEvents;// COMPATIBILITY SHIM - 72562501
 
 /*!
   @method       cancelCurrentEventWithResumptionOffset:
@@ -263,9 +304,9 @@
  @constant AVPlayerWaitingDuringInterstitialEventReason
  @abstract Indicates that the player is waiting for the completion of an interstitial event.
  @discussion
-    The player is waiting for playback because an interstitial event is currently in progress. Interstitial events can be monitored via use of an AVPlayerInterstitialEventObserver.
+    The player is waiting for playback because an interstitial event is currently in progress. Interstitial events can be monitored via use of an AVPlayerInterstitialEventMonitor.
  */
-AVF_EXPORT AVPlayerWaitingReason const AVPlayerWaitingDuringInterstitialEventReason API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+AVF_EXPORT AVPlayerWaitingReason const AVPlayerWaitingDuringInterstitialEventReason API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 @end
 
@@ -275,13 +316,13 @@
   @property     automaticallyHandlesInterstitialEvents
   @abstract     Allows interstitials to be played according to a schedule that's specified by server-side directives. The default value is YES. A value of NO prevents automatic scheduling of future server-side interstitial events. Events specified by an AVPlayerInterstitialEventController override server-side events, regardless of the value of this property.
 */
-@property (nonatomic) BOOL automaticallyHandlesInterstitialEvents API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5));
+@property (nonatomic) BOOL automaticallyHandlesInterstitialEvents API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*!
   @property     templatePlayerItem
   @abstract     If the item was created automatically according to a template item for looping, for interstitial playback, or for other purposes, indicates the AVPlayerItem that was used as the template.
 */
-@property (nonatomic, readonly, nullable) AVPlayerItem *templatePlayerItem API_AVAILABLE(macos(11.4), ios(14.5), tvos(14.5));
+@property (nonatomic, readonly, nullable) AVPlayerItem *templatePlayerItem API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 @end
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h	2021-03-16 13:58:46.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h	2021-06-02 07:35:57.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2020 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -55,6 +55,12 @@
 
 // notification userInfo key                                                                    type
 AVF_EXPORT NSString *const AVPlayerItemFailedToPlayToEndTimeErrorKey     API_AVAILABLE(macos(10.7), ios(4.3), tvos(9.0), watchos(1.0));   // NSError
+/**
+ @constant AVPlayerItemTimeJumpedOriginatingParticipantKey
+ @abstract Indicates a time jump was caused by another participant connected through AVPlayerPlaybackCoordinator.
+ @discussion Informs the receiver of an AVPlayerItemTimeJumpedNotification that a time jump originated from another AVCoordinatedPlaybackParticipant connected through AVPlayerPlaybackCoordinator. This can be used to inform UI showing why the current time changed. The type of the value for this key is an AVCoordinatedPlaybackParticipant, which is part of the AVPlayerPlaybackCoordinator.otherParticipants array.
+ */
+AVF_EXPORT NSString *const AVPlayerItemTimeJumpedOriginatingParticipantKey API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @enum AVPlayerItemStatus
@@ -76,27 +82,6 @@
 	AVPlayerItemStatusFailed = 2
 };
 
-/*!
-@enum AVAudioSpatializationFormats
- @abstract
-	These constants can be used to specify values for allowedAudioSpatializationFormats.
- 
- @constant	 AVAudioSpatializationFormatNone
-	Indicates that no audio spatialization is allowed.
- @constant	 AVAudioSpatializationFormatMonoAndStereo
-	Indicates that only mono and stereo formats may be used for audio spatialization.
- @constant	 AVAudioSpatializationFormatMultichannel
-	Indicates that only multichannel layouts may be used for audio spatialization.
- @constant	 AVAudioSpatializationFormatMonoStereoAndMultichannel
-	Indicates that mono, stereo and multichannel layouts may be used for audio spatialization.
- */
-typedef NS_OPTIONS(NSUInteger, AVAudioSpatializationFormats) {
-	AVAudioSpatializationFormatNone = 0UL,
-	AVAudioSpatializationFormatMonoAndStereo = 0x3UL,
-	AVAudioSpatializationFormatMultichannel = 0x4UL,
-	AVAudioSpatializationFormatMonoStereoAndMultichannel = 0x7UL
-};
-
 @class AVPlayer;
 @class AVAsset;
 @class AVAssetTrack;
@@ -460,7 +445,7 @@
  @property		timebase
  @abstract		The item's timebase.
  @discussion 
-   You can examine the timebase to discover the relationship between the item's time and the master clock used for drift synchronization.
+   You can examine the timebase to discover the relationship between the item's time and the source clock used for drift synchronization.
    This timebase is read-only; you cannot set its time or rate to affect playback.  The value of this property may change during playback.
  */
 @property (nonatomic, readonly, nullable) __attribute__((NSObject)) CMTimebaseRef timebase API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
@@ -539,7 +524,8 @@
  @abstract	Indicates the processing algorithm used to manage audio pitch at varying rates and for scaled audio edits.
  @discussion
    Constants for various time pitch algorithms, e.g. AVAudioTimePitchSpectral, are defined in AVAudioProcessingSettings.h.
-   The default value on iOS is AVAudioTimePitchAlgorithmLowQualityZeroLatency and on OS X is AVAudioTimePitchAlgorithmSpectral.
+   The default value for applications linked on or after iOS 15.0 or macOS 12.0 is AVAudioTimePitchAlgorithmTimeDomain. For iOS versions prior to 15.0 the default value is AVAudioTimePitchAlgorithmLowQualityZeroLatency.
+   For macOS versions prior to 12.0 the default value is AVAudioTimePitchAlgorithmSpectral.
 */
 @property (copy) AVAudioTimePitchAlgorithm audioTimePitchAlgorithm API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
@@ -555,9 +541,9 @@
  @property allowedAudioSpatializationFormats
  @abstract Indicates the source audio channel layouts allowed by the receiver for spatialization.
  @discussion
-   Spatialization uses psychoacoustic methods to create a more immersive audio rendering when the content is played on specialized headphones and speaker arrangements. When an AVPlayerItem's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMonoAndStereo the AVPlayer will attempt to spatialize content tagged with a stereo channel layout, two-channel content with no layout specified as well as mono. It is considered incorrect to render a binaural recording with spatialization. A binaural recording is captured using two carefully placed microphones at each ear where the intent, when played on headphones, is to reproduce a naturally occurring spatial effect. Content tagged with a binaural channel layout will ignore this property value. When an AVPlayerItem's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMultichannel the AVPlayer will attempt to spatialize any decodable multichannel layout. Setting this property to AVAudioSpatializationFormatMonoStereoAndMultichannel indicates that the sender allows the AVPlayer to spatialize any decodable mono, stereo or multichannel layout. This property is not observable. The default value for this property is AVAudioSpatializationFormatMultichannel.
+   Spatialization uses psychoacoustic methods to create a more immersive audio rendering when the content is played on specialized headphones and speaker arrangements. When an AVPlayerItem's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMonoAndStereo the AVPlayer will attempt to spatialize content tagged with a stereo channel layout, two-channel content with no layout specified as well as mono. It is considered incorrect to render a binaural recording with spatialization. A binaural recording is captured using two carefully placed microphones at each ear where the intent, when played on headphones, is to reproduce a naturally occurring spatial effect. Content tagged with a binaural channel layout will ignore this property value. When an AVPlayerItem's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMultichannel the AVPlayer will attempt to spatialize any decodable multichannel layout. Setting this property to AVAudioSpatializationFormatMonoStereoAndMultichannel indicates that the sender allows the AVPlayer to spatialize any decodable mono, stereo or multichannel layout. This property is not observable. The default value for this property with video content is AVAudioSpatializationFormatMonoStereoAndMultichannel. Otherwise, audio only content default value is AVAudioSpatializationFormatMultichannel.
  */
-@property (nonatomic, assign) AVAudioSpatializationFormats allowedAudioSpatializationFormats API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
+@property (nonatomic, assign) AVAudioSpatializationFormats allowedAudioSpatializationFormats API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property audioMix
@@ -639,6 +625,21 @@
 @property double preferredPeakBitRate API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0), watchos(1.0));
 
 /*!
+ @property preferredPeakBitRateForExpensiveNetworks
+ @abstract Indicates the desired limit of network bandwidth consumption for this item over expensive networks.
+
+ @discussion
+	When preferredPeakBitRateForExpensiveNetworks is set to non-zero, the player will attempt to limit item playback to that bit rate 
+	when streaming over an expensive network, such as when using a cellular data plan.  (See -[NWPath isExpensive])
+
+	If network bandwidth consumption cannot be lowered to meet the preferredPeakBitRateForExpensiveNetworks, it will be reduced as much as possible while continuing to play the item.
+	
+	Note that preferredPeakBitRate still applies unconditionally.  If preferredPeakBitRateForExpensiveNetworks is less restrictive (greater) than preferredPeakBitRate,
+	preferredPeakBitRateForExpensiveNetworks has no practical effect.
+*/
+@property double preferredPeakBitRateForExpensiveNetworks API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
  @property preferredMaximumResolution
  @abstract Indicates a preferred upper limit on the resolution of the video to be downloaded (or otherwise transferred) and rendered by the player.
  @discussion
@@ -648,6 +649,20 @@
 @property CGSize preferredMaximumResolution API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos);
 
 /*!
+ @property preferredMaximumResolutionForExpensiveNetworks
+ @abstract Indicates a preferred upper limit on the resolution of the video to be downloaded that applies only when the download occurs over expensive networks.
+ @discussion
+	The default value is CGSizeZero, which indicates that the client enforces no limit on video resolution. Other values indicate a preferred maximum video resolution.
+	This limit applies only when streaming over an expensive network, such as when using a cellular data plan.  (See -[NWPath isExpensive])
+
+	It only applies to HTTP Live Streaming asset.
+ 
+	Note that preferredMaximumResolution still applies unconditionally.  If preferredMaximumResolutionForExpensiveNetworks is less restrictive (higher resolution)
+	than preferredMaximumResolution, preferredMaximumResolutionForExpensiveNetworks has no practical effect.
+ */
+@property CGSize preferredMaximumResolutionForExpensiveNetworks API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/*!
  @property		startsOnFirstEligibleVariant
  @abstract		Directs the player to start playback with the first eligible variant  that appears in the stream's master playlist.
  @discussion
@@ -982,7 +997,7 @@
  				This property is not observable.
  				This property is deprecated. Use numberOfMediaRequests instead.
  */
-@property (nonatomic, readonly) NSInteger numberOfSegmentsDownloaded API_DEPRECATED("No longer supported", macos(10.7, 10.9), ios(4.3, 7.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, readonly) NSInteger numberOfSegmentsDownloaded API_DEPRECATED_WITH_REPLACEMENT("numberOfMediaRequests", macos(10.7, 10.9), ios(4.3, 7.0), tvos(9.0, 9.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property		numberOfMediaRequests
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h	2021-03-16 13:58:47.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h	2021-06-02 07:35:58.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2016-2017 Apple Inc. All rights reserved.
+	Copyright 2016-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -72,7 +72,8 @@
 	@discussion
 		Constants for various time pitch algorithms, e.g. AVAudioTimePitchSpectral, are defined in AVAudioProcessingSettings.h.
 	
-		The default value on iOS is AVAudioTimePitchAlgorithmLowQualityZeroLatency and on macOS is AVAudioTimePitchAlgorithmTimeDomain.
+		The default value for applications linked on or after iOS 15.0 or macOS 12.0 is AVAudioTimePitchAlgorithmTimeDomain. For iOS versions prior to 15.0 the default value is AVAudioTimePitchAlgorithmLowQualityZeroLatency.
+		For macOS versions prior to 12.0 the default value is AVAudioTimePitchAlgorithmSpectral.
 
 		If the timebase's rate is not supported by the audioTimePitchAlgorithm, audio will be muted.
 
@@ -80,6 +81,14 @@
 */
 @property (nonatomic, copy) AVAudioTimePitchAlgorithm audioTimePitchAlgorithm;
 
+/*!
+	@property allowedAudioSpatializationFormats
+	@abstract Indicates the source audio channel layouts allowed by the receiver for spatialization.
+	@discussion
+		Spatialization uses psychoacoustic methods to create a more immersive audio rendering when the content is played on specialized headphones and speaker arrangements. When an  AVSampleBufferAudioRenderer's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMonoAndStereo the  AVSampleBufferAudioRenderer will attempt to spatialize content tagged with a stereo channel layout, two-channel content with no layout specified as well as mono. It is considered incorrect to render a binaural recording with spatialization. A binaural recording is captured using two carefully placed microphones at each ear where the intent, when played on headphones, is to reproduce a naturally occurring spatial effect. Content tagged with a binaural channel layout will ignore this property value. When an  AVSampleBufferAudioRenderer's allowedAudioSpatializationFormats property is set to AVAudioSpatializationFormatMultichannel the  AVSampleBufferAudioRenderer will attempt to spatialize any decodable multichannel layout. Setting this property to AVAudioSpatializationFormatMonoStereoAndMultichannel indicates that the sender allows the  AVSampleBufferAudioRenderer to spatialize any decodable mono, stereo or multichannel layout. This property is not observable. The default value for this property is AVAudioSpatializationFormatMultichannel.
+ */
+@property (nonatomic, assign) AVAudioSpatializationFormats allowedAudioSpatializationFormats API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 @end
 
 @interface AVSampleBufferAudioRenderer (AVSampleBufferAudioRendererVolumeControl)
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h	2021-03-16 05:18:29.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h	2021-06-02 07:34:16.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2011-2020 Apple Inc. All rights reserved.
+	Copyright 2011-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -52,7 +52,7 @@
 					If a non-NULL control timebase is set, it will be used to interpret time stamps.
 					You can control the timing of frame display by setting the rate and time of the
 					control timebase.  
-					If you are synchronizing video to audio, you can use a timebase whose master clock
+					If you are synchronizing video to audio, you can use a timebase whose source clock
 					is a CMAudioDeviceClock for the appropriate audio device to prevent drift.
 					
 					Note that prior to OSX 10.10 and iOS 8.0, the control timebase could not be changed after enqueueSampleBuffer: was called.  As of OSX 10.10 and iOS 8.0, the control timebase may be changed at any time.
@@ -215,7 +215,7 @@
  @property   preventsDisplaySleepDuringVideoPlayback
  @abstract   Indicates whether video playback prevents display and device sleep.
  @discussion
- Default is YES on iOS.  Default is NO on macOS.
+ Default is YES on iOS, tvOS and in Mac Catalyst apps.  Default is NO on macOS.
  Setting this property to NO does not force the display to sleep, it simply stops preventing display sleep.  Other apps or frameworks within your app may still be preventing display sleep for various reasons.
  Note: If sample buffers are being enqueued for playback at the user's request, you should ensure that the value of this property is set to YES. If video is not being displayed as part of the user's primary focus, you should ensure that the value of this property is set to NO.
  */
@@ -243,7 +243,7 @@
 	 be externally specified. If the content does not require external protection, the value of this
 	 property will be NO.
  */
-@property (nonatomic, readonly) BOOL outputObscuredDueToInsufficientExternalProtection API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5), watchos(7.4));
+@property (nonatomic, readonly) BOOL outputObscuredDueToInsufficientExternalProtection API_AVAILABLE(macos(11.3), ios(14.5), tvos(14.5)) API_UNAVAILABLE(watchos);
 @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/AVFoundation.framework/Headers/AVSampleBufferGenerator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h	2021-03-16 09:54:47.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h	2021-06-02 12:44:19.000000000 -0400
@@ -18,8 +18,6 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-#if ! TARGET_OS_IPHONE
-
 #pragma pack(push)
 #pragma pack()
 
@@ -124,8 +122,6 @@
 
 #pragma pack(pop)
 
-#endif // ! TARGET_OS_IPHONE
-
 NS_ASSUME_NONNULL_END
 
 
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h	2021-03-16 09:54:45.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h	2021-06-02 12:47:16.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2013-2018 Apple Inc. All rights reserved.
+	Copyright 2013-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -34,7 +34,7 @@
 	@discussion
 		By default, this timebase will be driven by the clock of an added AVSampleBufferAudioRenderer.
 	
-		If no AVSampleBufferAudioRenderer has been added, the master clock will be the host time clock (mach_absolute_time with the appropriate timescale conversion; this is the same as Core Animation's CACurrentMediaTime).
+		If no AVSampleBufferAudioRenderer has been added, the source clock will be the host time clock (mach_absolute_time with the appropriate timescale conversion; this is the same as Core Animation's CACurrentMediaTime).
 					
 		The timebase is a read-only timebase.  Use the rate property and corresponding methods to adjust the timebase.
 */
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h	2021-03-16 09:54:44.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h	2021-06-02 12:47:15.000000000 -0400
@@ -4,12 +4,10 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2014-2017 Apple Inc. All rights reserved.
+	Copyright 2014-2021 Apple Inc. All rights reserved.
 
 */
 
-#if !TARGET_OS_IPHONE
-
 #import <AVFoundation/AVBase.h>
 #import <Foundation/Foundation.h>
 #import <CoreMedia/CMTime.h>
@@ -198,6 +196,12 @@
 @property (nonatomic, readonly) AVSampleCursorDependencyInfo currentSampleDependencyInfo;
 
 /*!
+       @property               currentSampleDependencyAttachments
+       @abstract               Provides a dictionary containing dependency related sample buffer attachments, if known.  See kCMSampleAttachmentKey_... in CoreMedia/CMSampleBuffer.h.
+*/
+@property (nonatomic, readonly, nullable) NSDictionary *currentSampleDependencyAttachments API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
 	@struct		AVSampleCursorAudioDependencyInfo
 	@abstract   A struct for describing the independent decodability of audio samples
 	@field      audioSampleIsIndependentlyDecodable
@@ -315,8 +319,6 @@
 
 NS_ASSUME_NONNULL_END
 
-#endif // !TARGET_OS_IPHONE
-
 
 #else
 #import <AVFCore/AVSampleCursor.h>
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h	2021-03-16 09:54:45.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h	2021-06-02 11:07:16.000000000 -0400
@@ -44,8 +44,7 @@
  @constant AVSemanticSegmentationMatteTypeGlasses
  A matting image segmenting all glasses ( e.g. eyeglasses, sunglasses ) from all persons wearing glasses in the visible field-of-view of an image.
  */
-AVF_EXPORT AVSemanticSegmentationMatteType const AVSemanticSegmentationMatteTypeGlasses API_AVAILABLE(macos(11.0), ios(14.1), macCatalyst(14.1)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);
-
+AVF_EXPORT AVSemanticSegmentationMatteType const AVSemanticSegmentationMatteTypeGlasses API_AVAILABLE(macos(11.0), ios(14.1), macCatalyst(14.1), tvos(14.5), watchos(8.0));
 
 /*!
  @class AVSemanticSegmentationMatte
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h	2021-03-16 09:54:44.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h	2021-06-02 11:07:15.000000000 -0400
@@ -9,8 +9,10 @@
 
 #import <Foundation/Foundation.h>
 #import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVTimedMetadataGroup.h>
 #import <CoreVideo/CVPixelBufferPool.h>
 #import <CoreMedia/CMTimeRange.h>
+#import <CoreMedia/CMSampleBuffer.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -205,6 +207,28 @@
 @property (nonatomic, readonly) BOOL supportsHDRSourceFrames API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0)) API_UNAVAILABLE(watchos);
 
 /*!
+ @property canConformColorOfSourceFrames
+ @abstract
+	Indicates that the custom compositor can conform supported sources to the composition color space by performing color conversions internally.
+ 
+ @discussion
+	When the composition engine sees this property set to YES, it will not convert source pixel buffers that meet the custom compositor's processing requirements, as indicated via its
+	implementation of the AVVideoCompositing protocol, including the values it provides for sourcePixelBufferAttributes and supportsWideColorSourceFrames.
+	Source pixel buffers that do not meet its processing requirements will be converted. This includes cases where:
+
+	1. supportsWideColorSourceFrames is set to NO and supportsHDRSourceFrames is set to NO or not implemented, and any source has a wide color gamut. In this case the source color space will be converted to BT.709 color space by the composition engine before it passes the source pixel buffer to the custom compositor. Note that if supportsHDRSourceFrames is YES, supportsWideColorSourceFrames is assumed to be YES.
+ 
+	2. supportsHDRSourceFrames is set to NO and any source has HDR color.  In this case the source color space will be converted to the composition color space by the composition engine before it passes the source pixel buffer to the custom compositor
+
+	3. The source frame's pixel format is not in the list specified in sourcePixelBufferAttributes. In this case the composition engine will convert the pixel format to one of the supported formats, AND convert the color space to the composition color space.
+
+	If a custom compositor does not implement this property, it is considered the same as returning NO.
+ */
+
+@optional
+@property (nonatomic, readonly) BOOL canConformColorOfSourceFrames API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+/*!
 	@method			anticipateRenderingUsingHint:
 	@abstract		Informs a custom video compositor about upcoming rendering requests.
 	@param			renderHint
@@ -260,9 +284,12 @@
 /* The time for which the frame should be composed */
 @property (nonatomic, readonly) CMTime compositionTime;
 
-/* Track ID of all the source buffers that are available to compose the frame. */
+/* Track IDs of all the source video buffers that are available to compose the frame. */
 @property (nonatomic, readonly) NSArray<NSNumber *> *sourceTrackIDs;
 
+/* Track IDs of all the source sample data buffers that are available to compose the frame.*/
+@property (nonatomic, readonly) NSArray<NSNumber *> *sourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 /* The AVVideoCompositionInstruction to use to compose the frame. */
 @property (nonatomic, readonly) id<AVVideoCompositionInstruction> videoCompositionInstruction;
 
@@ -274,6 +301,22 @@
 */
 - (nullable CVPixelBufferRef)sourceFrameByTrackID:(CMPersistentTrackID)trackID CF_RETURNS_NOT_RETAINED;
 
+/*!
+	@method			sourceSampleBufferByTrackID:
+	@abstract		Returns the source CMSampleBufferRef for the given track ID
+	@param			trackID
+					The track ID for the requested source sample buffer
+*/
+- (nullable CMSampleBufferRef)sourceSampleBufferByTrackID:(CMPersistentTrackID)trackID CF_RETURNS_NOT_RETAINED API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+/*!
+	@method			sourceTimedMetadataByTrackID:
+	@abstract		Returns the source AVTimedMetadataGroup * for the given track ID
+	@param			trackID
+					The track ID for the requested source timed metadata group.
+*/
+- (nullable AVTimedMetadataGroup *)sourceTimedMetadataByTrackID:(CMPersistentTrackID)trackID API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 /* callback the custom compositor should call when composition succeeded */
 - (void)finishWithComposedVideoFrame:(CVPixelBufferRef)composedVideoFrame;
 
@@ -307,11 +350,11 @@
 /* The time for which the frame should be filtered */
 @property (nonatomic, readonly) CMTime compositionTime;
 
-/* CIImage for the first enabled source video track. The pixel format will be kCIFormatBGRA8 (kCVPixelFormatType_32BGRA). Unlike AVAsynchronousVideoCompositionRequest, renderContext.renderTransform is already applied to the source image. */
+/* CIImage for the first enabled source video track. Unlike AVAsynchronousVideoCompositionRequest, renderContext.renderTransform is already applied to the source image. */
 @property (nonatomic, readonly) CIImage *sourceImage;
 
 /*
-Callback the filter should call when filtering succeeded. The pixel format of the filteredImage must be kCIFormatBGRA8 (kCVPixelFormatType_32BGRA). If context is nil then a default context will be used, GPU-accelerated if possible.
+Callback the filter should call when filtering succeeded. If context is nil then a default context will be used, GPU-accelerated if possible.
 
 It is safe to pass in the sourceImage in which case the filter will appear to have no effect, essentially functioning as a pass-through.
 */
@@ -354,6 +397,13 @@
    matched to the required values automatically */
 @property (nonatomic, readonly) CMPersistentTrackID passthroughTrackID; // kCMPersistentTrackID_Invalid if not a passthrough instruction
 
+
+@optional
+
+/* List of sample data track IDs required to compose frames for this instruction.  An empty array indicates that no sample data is required for this instruction. */
+@property (nonatomic, readonly) NSArray<NSNumber *> *requiredSourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
+
 @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/AVFoundation.framework/Headers/AVVideoComposition.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoComposition.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoComposition.h	2021-03-16 09:54:44.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoComposition.h	2021-06-02 07:34:13.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2017 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -90,6 +90,9 @@
 /* indicates a special video composition tool for use of Core Animation; may be nil */
 @property (nonatomic, readonly, retain, nullable) AVVideoCompositionCoreAnimationTool *animationTool;
 
+/* List of all track IDs for tracks from which sample data should be presented to the compositor at any point in the overall composition. The sample data will be delivered to the custom compositor via AVAsynchronousVideoCompositionRequest. */
+@property (nonatomic, readonly) NSArray<NSNumber *> *sourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 @end
 
 /*
@@ -274,6 +277,9 @@
 /* indicates a special video composition tool for use of Core Animation; may be nil */
 @property (nonatomic, retain, nullable) AVVideoCompositionCoreAnimationTool *animationTool;
 
+/* List of all track IDs for tracks from which sample data should be presented to the compositor at any point in the overall composition.  Currently only tracks of type kCMMediaType_Metadata are allowed to be specified. */
+@property (nonatomic, copy) NSArray<NSNumber *> *sourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 @end
 
 /*
@@ -413,6 +419,9 @@
    frame will be used instead. The value of this property is computed from the layer instructions */
 @property (nonatomic, readonly) CMPersistentTrackID passthroughTrackID API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos); // kCMPersistentTrackID_Invalid if not a passthrough instruction
 
+/* List of track IDs for which sample data should be presented to the compositor for this instruction. */
+@property (nonatomic, readonly) NSArray<NSNumber *> *requiredSourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 @end
 
 /*!
@@ -458,6 +467,9 @@
    See +[AVVideoCompositionCoreAnimationTool videoCompositionToolWithPostProcessingAsVideoLayer:inLayer:].*/
 @property (nonatomic, assign) BOOL enablePostProcessing;
 
+/* List of sample data track IDs required to compose frames for this instruction.  Currently only tracks of type kCMMediaType_Metadata are allowed to be specified.  If this property is unspecified or is an empty array, no sample data is considered to be required for this instruction.  Note that you must also specify all tracks for which sample data is required for ANY instruction in the AVVideoComposition, in AVVideoComposition's property sourceSampleDataTrackIDs.  */
+@property (nonatomic, copy) NSArray<NSNumber *> *requiredSourceSampleDataTrackIDs API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+
 @end
 
 /*!
@@ -748,6 +760,14 @@
 
 - (CMPersistentTrackID)unusedTrackID;
 
+/*!
+ @method	findUnusedTrackIDWithCompletionHandler:
+ @abstract	Loads a track ID that will not collide with any existing track
+ @param		completionHandler
+			A block that is invoked when loading is complete, vending the track ID or an error.
+ */
+- (void)findUnusedTrackIDWithCompletionHandler:(void (^)(CMPersistentTrackID, NSError * _Nullable))completionHandler API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
 @end
 
 
Clone this wiki locally