Skip to content

AVFoundation iOS xcode13.0 beta4

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_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h	2021-07-13 00:37:56.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h	2021-07-22 14:19:32.000000000 -0400
@@ -122,7 +122,7 @@
 				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>
+@interface AVAssetDownloadConfiguration : NSObject
 
 AV_INIT_UNAVAILABLE
 
@@ -170,7 +170,7 @@
  @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>
+@interface AVAssetDownloadContentConfiguration : NSObject <NSCopying>
 
 /*!
  @property		variantQualifiers
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h	2021-07-13 00:39:50.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h	2021-07-23 13:32:26.000000000 -0400
@@ -669,12 +669,8 @@
  @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_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h	2021-07-13 00:33:57.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h	2021-07-22 14:22:34.000000000 -0400
@@ -422,7 +422,7 @@
  				If obtaining the streaming content key request fails, will be set to an instance of NSError describing the failure.
  @result		The key request data that must be transmitted to the key vendor to obtain the content key.
 */
-- (nullable NSData *)streamingContentKeyRequestDataForApp:(NSData *)appIdentifier contentIdentifier:(NSData *)contentIdentifier options:(nullable NSDictionary<NSString *, id> *)options error:(NSError * _Nullable * _Nullable)outError;
+- (nullable NSData *)streamingContentKeyRequestDataForApp:(NSData *)appIdentifier contentIdentifier:(NSData *)contentIdentifier options:(nullable NSDictionary<NSString *, id> *)options error:(NSError * _Nullable * _Nullable)outError API_DEPRECATED_WITH_REPLACEMENT("-[AVContentKeyRequest makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:]", macos(10.9, API_TO_BE_DEPRECATED), ios(7.0, API_TO_BE_DEPRECATED));
 
 /*! 
  @method 		persistentContentKeyFromKeyVendorResponse:options:error:
@@ -436,7 +436,7 @@
  @result		The persistable content key data that may be stored offline to answer future loading requests of the same content key.
  @discussion	The data returned from this method may be used to immediately satisfy an AVAssetResourceLoadingDataRequest, as well as any subsequent requests for the same key url. The value of AVAssetResourceLoadingContentInformationRequest.contentType must be set to AVStreamingKeyDeliveryPersistentContentKeyType when responding with data created with this method.
 */
-- (nullable NSData *)persistentContentKeyFromKeyVendorResponse:(NSData *)keyVendorResponse options:(nullable NSDictionary<NSString *, id> *)options error:(NSError **)outError API_AVAILABLE(macos(10.15), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+- (nullable NSData *)persistentContentKeyFromKeyVendorResponse:(NSData *)keyVendorResponse options:(nullable NSDictionary<NSString *, id> *)options error:(NSError **)outError API_DEPRECATED_WITH_REPLACEMENT("-[AVPersistableContentKeyRequest persistableContentKeyFromKeyVendorResponse:options:error:]", macos(10.15, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED), tvos(9.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(watchos);
 
 @end
 
@@ -445,7 +445,7 @@
  @constant		AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresPersistentKey
  @abstract		Specifies whether the content key request should require a persistable key to be returned from the key vendor. Value should be a NSNumber created with +[NSNumber numberWithBool:].
 */
-AVF_EXPORT NSString *const AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresPersistentKey API_AVAILABLE(macos(10.14), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+AVF_EXPORT NSString *const AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresPersistentKey API_DEPRECATED_WITH_REPLACEMENT("-[AVPersistableContentKeyRequest persistableContentKeyFromKeyVendorResponse:options:error:]", macos(10.14, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(watchos);
 
 @interface AVAssetResourceLoadingRequest (AVAssetResourceLoadingRequestDeprecated)
 
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h	2021-07-13 00:37:57.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h	2021-07-22 14:19:32.000000000 -0400
@@ -27,7 +27,7 @@
 				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>
+@interface AVAssetVariant : NSObject
 
 AV_INIT_UNAVAILABLE
 
@@ -121,7 +121,7 @@
 @end
 
 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos)
-@interface AVAssetVariantQualifier : NSObject <NSCopying, NSSecureCoding>
+@interface AVAssetVariantQualifier : NSObject <NSCopying>
 
 AV_INIT_UNAVAILABLE
 
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h	2021-07-08 01:07:37.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h	2021-07-22 02:33:05.000000000 -0400
@@ -29,7 +29,7 @@
 
 #import <AVFoundation/AVAssetDownloadTask.h>
 #import <AVFoundation/AVAssetDownloadStorageManager.h>
-#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
+#if TARGET_OS_OSX
 #import <AVFoundation/AVCaption.h>
 #import <AVFoundation/AVCaptionGroup.h>
 #import <AVFoundation/AVCaptionGrouper.h>
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h	2021-07-13 00:33:56.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h	2021-07-22 04:36:17.000000000 -0400
@@ -172,22 +172,28 @@
  AVPlayer can reset the desired rate to 0.0 when a change in overall state requires playback to be halted, such as when an interruption occurs on iOS, as announced by AVAudioSession, or when the playback buffer becomes empty and playback stalls while automaticallyWaitsToMinimizeStalling is NO.
 
  The effective rate of playback may differ from the desired rate even while timeControlStatus is AVPlayerTimeControlStatusPlaying, if the processing algorithm in use for managing audio pitch requires quantization of playback rate. For information about quantization of rates for audio processing, see AVAudioProcessingSettings.h. You can always obtain the effective rate of playback from the currentItem's timebase; see the timebase property of AVPlayerItem.
+ 
+ This property must be accessed on the main thread/queue.
  */
-@property (nonatomic) float rate;
+@property (nonatomic) float rate NS_SWIFT_UI_ACTOR;
 
 /*!
  @method		play
  @abstract		Signals the desire to begin playback at the current item's natural rate.
  @discussion	Equivalent to setting the value of rate to 1.0.
+ 
+ This method must be invoked on the main thread/queue.
  */
-- (void)play;
+- (void)play NS_SWIFT_UI_ACTOR;
 
 /*!
  @method		pause
  @abstract		Pauses playback.
  @discussion	Equivalent to setting the value of rate to 0.0.
+ 
+ This method must be invoked on the main thread/queue.
  */
-- (void)pause;
+- (void)pause NS_SWIFT_UI_ACTOR;
 
 /*!
  @enum AVPlayerTimeControlStatus
@@ -279,8 +285,10 @@
  @discussion
  When the player's currentItem has a value of NO for playbackBufferEmpty, this method causes the value of rate to change to the specified rate, the value of timeControlStatus to change to AVPlayerTimeControlStatusPlaying, and the receiver to play the available media immediately, whether or not prior buffering of media data is sufficient to ensure smooth playback.
  If insufficient media data is buffered for playback to start (e.g. if the current item has a value of YES for playbackBufferEmpty), the receiver will act as if the buffer became empty during playback, except that no AVPlayerItemPlaybackStalledNotification will be posted.
+ 
+ This method must be invoked on the main thread/queue.
  */
-- (void)playImmediatelyAtRate:(float)rate API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+- (void)playImmediatelyAtRate:(float)rate NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @end
 
@@ -436,9 +444,11 @@
  If you employ an AVAssetResourceLoader delegate that loads media data for playback, you should set the value of your AVPlayer’s automaticallyWaitsToMinimizeStalling property to NO. Allowing the value of automaticallyWaitsToMinimizeStalling to remain YES when an AVAssetResourceLoader delegate is used for the loading of media data can result in poor start-up times for playback and poor recovery from stalls, because the behaviors provided by AVPlayer when automaticallyWaitsToMinimizeStalling has a value of YES depend on predictions of the future availability of media data that that do not function as expected when data is loaded via a client-controlled means, using the AVAssetResourceLoader delegate interface.
 
  You can allow the value of automaticallyWaitsToMinimizeStalling to remain YES if you use an AVAssetResourceLoader delegate to manage content keys for FairPlay Streaming, to provide dynamically-generated master playlists for HTTP Live Streaming, or to respond to authentication challenges, but not to load media data for playback.
+ 
+ This property must be accessed on the main thread/queue.
 */
 
-@property (nonatomic) BOOL automaticallyWaitsToMinimizeStalling API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+@property (nonatomic) BOOL automaticallyWaitsToMinimizeStalling NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 
 
@@ -458,8 +468,10 @@
 					If hostClockTime is specified, the player will not ensure that media data is loaded before the timebase starts moving.
 					If hostClockTime is kCMTimeInvalid, the rate and time will be set together, but without external synchronization;
 					a host time in the near future will be used, allowing some time for media data loading.
+ 
+					This method must be invoked on the main thread/queue.
 */
-- (void)setRate:(float)rate time:(CMTime)itemTime atHostTime:(CMTime)hostClockTime API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
+- (void)setRate:(float)rate time:(CMTime)itemTime atHostTime:(CMTime)hostClockTime NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.8), ios(6.0), tvos(9.0), watchos(1.0));
 
 /*!
 	@method			prerollAtRate:completionHandler:
@@ -589,16 +601,20 @@
 		c) Underlying system preferences change, e.g. system language, accessibility captions.
 
    Specific selections made by -[AVPlayerItem selectMediaOption:inMediaSelectionGroup:] within any group will override automatic selection in that group until -[AVPlayerItem selectMediaOptionAutomaticallyInMediaSelectionGroup:] is received.
+ 
+   This method must be invoked on the main thread/queue.
 */
-- (void)setMediaSelectionCriteria:(nullable AVPlayerMediaSelectionCriteria *)criteria forMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
+- (void)setMediaSelectionCriteria:(nullable AVPlayerMediaSelectionCriteria *)criteria forMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
 /*!
  @method     mediaSelectionCriteriaForMediaCharacteristic:
  @abstract   Returns the automatic selection criteria for media that has the specified media characteristic.
  @param      mediaCharacteristic
   The media characteristic for which the selection criteria is to be returned. Supported values include AVMediaCharacteristicAudible, AVMediaCharacteristicLegible, and AVMediaCharacteristicVisual.
+ 
+  This method must be invoked on the main thread/queue.
 */
-- (nullable AVPlayerMediaSelectionCriteria *)mediaSelectionCriteriaForMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
+- (nullable AVPlayerMediaSelectionCriteria *)mediaSelectionCriteriaForMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
 @end
 
@@ -789,8 +805,10 @@
  @discussion
 	 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.
+
+	 This property must be accessed on the main thread/queue.
  */
-@property (nonatomic) BOOL preventsDisplaySleepDuringVideoPlayback API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic) BOOL preventsDisplaySleepDuringVideoPlayback NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0)) API_UNAVAILABLE(watchos);
 
 @end
 
@@ -863,7 +881,7 @@
 @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));
+@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_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h	2021-07-13 00:36:28.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h	2021-07-22 14:19:30.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-   Copyright:  2020 by Apple Inc., all rights reserved.
+   Copyright:  2020-2021 by Apple Inc., all rights reserved.
 
 */
 
@@ -299,8 +299,9 @@
 /*!
   @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.
+  @discussion	This property must be accessed on the main thread/queue.
 */
-@property (nonatomic) BOOL automaticallyHandlesInterstitialEvents API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+@property (nonatomic) BOOL automaticallyHandlesInterstitialEvents NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*!
   @property     templatePlayerItem
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h	2021-07-13 00:37:59.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h	2021-07-22 14:19:30.000000000 -0400
@@ -160,6 +160,9 @@
  */
 - (instancetype)initWithAsset:(AVAsset *)asset automaticallyLoadedAssetKeys:(nullable NSArray<NSString *> *)automaticallyLoadedAssetKeys NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
+- (id)copyWithZone:(nullable NSZone *)zone NS_SWIFT_UI_ACTOR;
+- (id)copy NS_SWIFT_UI_ACTOR;
+
 /*!
  @property status
  @abstract
@@ -248,8 +251,10 @@
  @discussion
    Notifications of changes are available via key-value observation.
    As an optimization for playback, AVPlayerItem may omit the processing of timed metadata when no observer of this property is registered. Therefore, when no such observer is registered, the value of the timedMetadata property may remain nil regardless of the contents of the underlying media.
+ 
+   This property must be accessed on the main thread/queue.
  */
-@property (nonatomic, readonly, nullable) NSArray<AVMetadataItem *> *timedMetadata API_DEPRECATED("Use AVPlayerItemMetadataOutput to obtain timed metadata", macos(10.7, 10.15), ios(4.0, 13.0), tvos(9.0, 13.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, readonly, nullable) NSArray<AVMetadataItem *> *timedMetadata NS_SWIFT_UI_ACTOR API_DEPRECATED("Use AVPlayerItemMetadataOutput to obtain timed metadata", macos(10.7, 10.15), ios(4.0, 13.0), tvos(9.0, 13.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property automaticallyLoadedAssetKeys
@@ -291,8 +296,10 @@
  @property		configuredTimeOffsetFromLive
  @abstract		Indicates how close to the latest content in a live stream playback will begin after a live start or a seek to kCMTimePositiveInfinity.
  @discussion	For non-live assets this value is kCMTimeInvalid.
+ 
+ This property must be accessed on the main thread/queue.
  */
-@property CMTime configuredTimeOffsetFromLive API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
+@property CMTime configuredTimeOffsetFromLive NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
 
 /*!
  @property		recommendedTimeOffsetFromLive
@@ -312,9 +319,11 @@
   Note that if the network cannot deliver media quickly enough to maintain the playback rate, playback may stall interminably.
  
  This property value has no effect if the asset is not a live stream. The default value of this property is NO.
+ 
+ This property must be accessed on the main thread/queue.
  */
 
-@property (nonatomic) BOOL automaticallyPreservesTimeOffsetFromLive API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0),watchos(6.0));
+@property (nonatomic) BOOL automaticallyPreservesTimeOffsetFromLive NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0),watchos(6.0));
 
 @end
 
@@ -438,8 +447,10 @@
    The number of steps by which to move. A positive number results in stepping forward, a negative number in stepping backward.
  @discussion
    The size of each step depends on the enabled AVPlayerItemTracks of the AVPlayerItem. 
+
+   This method must be invoked on the main thread/queue.
  */
-- (void)stepByCount:(NSInteger)stepCount;
+- (void)stepByCount:(NSInteger)stepCount NS_SWIFT_UI_ACTOR;
 
 /*!
  @property		timebase
@@ -458,10 +469,12 @@
 @interface AVPlayerItem (AVPlayerItemVisualPresentation)
 
 /*!
- @property videoComposition
- @abstract Indicates the video composition settings to be applied during playback.
+ @property 		videoComposition
+ @abstract 		Indicates the video composition settings to be applied during playback.
+ @discussion	This property must be accessed on the main thread/queue.
+
  */
-@property (nonatomic, copy, nullable) AVVideoComposition *videoComposition API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, copy, nullable) AVVideoComposition *videoComposition NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property customVideoCompositor
@@ -469,8 +482,10 @@
  @discussion
  	This property is nil if there is no video compositor, or if the internal video compositor is in use. This reference can be used to provide
 	extra context to the custom video compositor instance if required.
+ 
+	This property must be accessed on the main thread/queue.
  */
-@property (nonatomic, readonly, nullable) id<AVVideoCompositing> customVideoCompositor API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, readonly, nullable) id<AVVideoCompositing> customVideoCompositor NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property seekingWaitsForVideoCompositionRendering
@@ -542,8 +557,10 @@
  @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 with video content is AVAudioSpatializationFormatMonoStereoAndMultichannel. Otherwise, audio only content default value is AVAudioSpatializationFormatMultichannel.
+ 
+ This property must be accessed on the main thread/queue.
  */
-@property (nonatomic, assign) AVAudioSpatializationFormats allowedAudioSpatializationFormats API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, assign) AVAudioSpatializationFormats allowedAudioSpatializationFormats NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property audioMix
@@ -636,8 +653,10 @@
 	
 	Note that preferredPeakBitRate still applies unconditionally.  If preferredPeakBitRateForExpensiveNetworks is less restrictive (greater) than preferredPeakBitRate,
 	preferredPeakBitRateForExpensiveNetworks has no practical effect.
+ 
+	This property must be accessed on the main thread/queue.
 */
-@property double preferredPeakBitRateForExpensiveNetworks API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+@property double preferredPeakBitRateForExpensiveNetworks NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*!
  @property preferredMaximumResolution
@@ -659,8 +678,10 @@
  
 	Note that preferredMaximumResolution still applies unconditionally.  If preferredMaximumResolutionForExpensiveNetworks is less restrictive (higher resolution)
 	than preferredMaximumResolution, preferredMaximumResolutionForExpensiveNetworks has no practical effect.
+ 
+	This property must be accessed on the main thread/queue.
  */
-@property CGSize preferredMaximumResolutionForExpensiveNetworks API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
+@property CGSize preferredMaximumResolutionForExpensiveNetworks NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchos);
 
 /*!
  @property		startsOnFirstEligibleVariant
@@ -717,8 +738,10 @@
    If the value of the property allowsEmptySelection of the AVMediaSelectionGroup is YES, you can pass nil for mediaSelectionOption to deselect
    all media selection options in the group.
    Note that if multiple options within a group meet your criteria for selection according to locale or other considerations, and if these options are otherwise indistinguishable to you according to media characteristics that are meaningful for your application, content is typically authored so that the first available option that meets your criteria is appropriate for selection.
+ 
+   This method must be invoked on the main thread/queue.
  */
-- (void)selectMediaOption:(nullable AVMediaSelectionOption *)mediaSelectionOption inMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));
+- (void)selectMediaOption:(nullable AVMediaSelectionOption *)mediaSelectionOption inMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0));
 
 /*!
  @method		selectMediaOptionAutomaticallyInMediaSelectionGroup:
@@ -727,8 +750,10 @@
  @param 		mediaSelectionGroup		The media selection group, obtained from the receiver's asset, that contains the specified option.
  @discussion
    Has no effect unless the appliesMediaSelectionCriteriaAutomatically property of the associated AVPlayer is YES and unless automatic media selection has previously been overridden via -[AVPlayerItem selectMediaOption:inMediaSelectionGroup:].
+ 
+   This method must be invoked on the main thread/queue.
  */
-- (void)selectMediaOptionAutomaticallyInMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
+- (void)selectMediaOptionAutomaticallyInMediaSelectionGroup:(AVMediaSelectionGroup *)mediaSelectionGroup NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0), watchos(1.0));
 
 /*!
   @property		currentMediaSelection
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h	2021-07-13 00:41:23.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h	2021-07-22 14:22:33.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2018 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -50,15 +50,18 @@
 /*!
  @property		enabled
  @abstract		Indicates whether the track is enabled for presentation during playback.
+ @discussion	This property must be accessed on the main thread/queue.
 */
-@property (nonatomic, assign, getter=isEnabled) BOOL enabled;
+@property (nonatomic, assign, getter=isEnabled) BOOL enabled NS_SWIFT_UI_ACTOR;
 
 /*!
  @property		currentVideoFrameRate
  @abstract		If the media type of the assetTrack is AVMediaTypeVideo, indicates the current frame rate of the track as it plays, in units of frames per second. If the item is not playing, or if the media type of the track is not video, the value of this property is 0.
  @discussion	This property is not observable.
+
+ This property must be accessed on the main thread/queue.
 */
-@property (nonatomic, readonly) float currentVideoFrameRate API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+@property (nonatomic, readonly) float currentVideoFrameRate NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.9), ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
 
 #if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
 
@@ -73,8 +76,10 @@
  @abstract		If the media type of the assetTrack is AVMediaTypeVideo, specifies the handling of video frames that contain multiple fields.
  @discussion	A value of nil indicates default processing of video frames. If you want video fields to be deinterlaced, set videoFieldMode to AVPlayerItemTrackVideoFieldModeDeinterlaceFields.
  				You can test whether video being played has multiple fields by examining the underlying AVAssetTrack's format descriptions. See -[AVAssetTrack formatDescriptions] and, for video format descriptions, kCMFormatDescriptionExtension_FieldCount.
+ 
+ This property must be accessed on the main thread/queue.
 */
-@property (nonatomic, copy, nullable) NSString *videoFieldMode API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos);
+@property (nonatomic, copy, nullable) NSString *videoFieldMode NS_SWIFT_UI_ACTOR API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos);
 
 #endif
 
diff -ruN /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSynchronizedLayer.h /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSynchronizedLayer.h
--- /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSynchronizedLayer.h	2021-07-13 00:41:22.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSynchronizedLayer.h	2021-07-22 14:22:32.000000000 -0400
@@ -4,7 +4,7 @@
 
 	Framework:  AVFoundation
  
-	Copyright 2010-2013 Apple Inc. All rights reserved.
+	Copyright 2010-2021 Apple Inc. All rights reserved.
 
 */
 
@@ -66,8 +66,12 @@
 */
 + (AVSynchronizedLayer *)synchronizedLayerWithPlayerItem:(AVPlayerItem *)playerItem;
 
-/* indicates the instance of AVPlayerItem to which the timing of the AVSynchronizedLayer is synchronized */
-@property (nonatomic, retain, nullable) AVPlayerItem *playerItem;
+/*!
+	@property		playerItem
+	@abstract		Indicates the instance of AVPlayerItem to which the timing of the AVSynchronizedLayer is synchronized.
+	@discussion		This property must be accessed on the main thread/queue.
+*/
+@property (nonatomic, retain, nullable) AVPlayerItem *playerItem NS_SWIFT_UI_ACTOR;
 
 @end
 
Clone this wiki locally