-
Notifications
You must be signed in to change notification settings - Fork 516
AVFoundation tvOS 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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAsset.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetImageGenerator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetReaderOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetResourceLoader.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetTrack.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetVariant.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriter.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetWriterInput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h 2021-03-16 13:56:37.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioProcessingSettings.h 2021-06-02 05:35:32.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureStillImageOutput.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVComposition.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVContentKeySession.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVContentKeySession.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVDisplayCriteria.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVDisplayCriteria.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVDisplayCriteria.h 2021-03-16 13:56:36.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVDisplayCriteria.h 2021-06-02 05:35:30.000000000 -0400
@@ -27,7 +27,7 @@
@private
AVDisplayCriteriaInternal *_displayCriteria;
}
-
+AV_INIT_UNAVAILABLE
@end
NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVError.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h 2021-03-16 13:52:19.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCore.h 2021-06-01 21:04:23.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFoundation.apinotes
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataObject.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMovie.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlaybackCoordinator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlaybackCoordinator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerInterstitialEventController.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItem.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferAudioRenderer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferDisplayLayer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h 1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferGenerator.h 2021-06-02 12:44:19.000000000 -0400
@@ -0,0 +1,130 @@
+#if !__has_include(<AVFCore/AVSampleBufferGenerator.h>)
+/*
+ File: AVSampleBufferGenerator.h
+
+ Framework: AVFoundation
+
+ Copyright 2014-2018 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <AVFoundation/AVAsset.h>
+#import <AVFoundation/AVSampleCursor.h>
+#import <Foundation/Foundation.h>
+#import <CoreMedia/CMTime.h>
+#import <CoreMedia/CMSync.h>
+#import <CoreMedia/CMSampleBuffer.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma pack(push)
+#pragma pack()
+
+/*!
+ @class AVSampleBufferGenerator
+
+ @abstract An AVSampleBufferGenerator creates CMSampleBuffers.
+ @discussion
+ Each request for CMSampleBuffer creation is described in an AVSampleBufferRequest object.
+ CMSampleBuffers are returned synchronously.
+ If requested, sample data may be loaded asynchronously (depending on file format support).
+*/
+@class AVSampleBufferRequest;
+
+@class AVSampleBufferGeneratorInternal;
+
+API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVSampleBufferGenerator : NSObject {
+@private
+ AVSampleBufferGeneratorInternal *_generator;
+}
+AV_INIT_UNAVAILABLE
+
+/* If timebase is NULL, requests will be handled synchronously. */
+- (instancetype)initWithAsset:(AVAsset *)asset timebase:(nullable CMTimebaseRef)timebase NS_DESIGNATED_INITIALIZER;
+
+/* It is an error to use an AVSampleBufferRequest with mode set to AVSampleBufferRequestModeScheduled when the AVSampleBufferGenerator was created with a NULL timebase. */
+- (nullable CMSampleBufferRef)createSampleBufferForRequest:(AVSampleBufferRequest *)request CF_RETURNS_RETAINED;
+
+/* completionHandler is called when data is ready or as soon as an error has occurred. */
++ (void)notifyOfDataReadyForSampleBuffer:(CMSampleBufferRef)sbuf completionHandler:(void (^)(BOOL dataReady, NSError *error))completionHandler;
+
+@end
+
+typedef NS_ENUM(NSInteger, AVSampleBufferRequestDirection) {
+ AVSampleBufferRequestDirectionForward = +1,
+ AVSampleBufferRequestDirectionNone = 0,
+ AVSampleBufferRequestDirectionReverse = -1,
+};
+
+
+
+/*!
+ @enum AVSampleBufferRequestMode
+ @abstract
+ Defines the allowed values for AVSampleBufferRequest's mode property.
+
+ @constant AVSampleBufferRequestModeImmediate
+ Sample data for requests with AVSampleBufferRequestModeImmediate will be loaded as soon as possible. The current time represented by AVSampleBufferGenerator's timebase has no influence on these requests.
+ @constant AVSampleBufferRequestModeScheduled
+ AVSampleBufferRequestModeScheduled indicates that a request is needed by the time AVSampleBufferGenerator's timebase reaches the CMSampleBuffer's presentationTime or, if specificed, AVSampleBufferRequest's overrideTime. The AVSampleBufferGenerator will attempt to deliver sample data with sufficient leeway for downstream processing. It will also attempt to hold off on loading data until the CMSampleBuffer is needed. If AVSampleBufferGenerator's timebase has a rate of zero, this mode behaves like AVSampleBufferRequestModeImmediate.
+ @constant AVSampleBufferRequestModeOpportunistic
+ The AVSampleBufferGenerator will attempt to read data for opportunistic requests as soon as possible. However, in situations with multiple competing requests, the AVSampleBufferGenerator may defer an opportunistic request in favor of another immediate request or a scheduled requests with a presentation time close to the timebase time. Because a request with AVSampleBufferRequestModeOpportunistic may be postponed indefinitely, this mode should not be used for time-sensitive processing.
+*/
+typedef NS_ENUM(NSInteger, AVSampleBufferRequestMode) {
+ AVSampleBufferRequestModeImmediate = 0,
+ AVSampleBufferRequestModeScheduled = 1,
+ AVSampleBufferRequestModeOpportunistic = 2,
+};
+
+@class AVSampleBufferRequestInternal;
+
+/*!
+ @class AVSampleBufferRequest
+
+ @abstract An AVSampleBufferRequest describes a CMSampleBuffer creation request.
+ */
+API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVSampleBufferRequest : NSObject {
+@private
+ AVSampleBufferRequestInternal *_request;
+}
+AV_INIT_UNAVAILABLE
+
+- (instancetype)initWithStartCursor:(AVSampleCursor *)startCursor NS_DESIGNATED_INITIALIZER;
+
+/* mandatory: the created CMSampleBuffer must include the sample at this position */
+@property (nonatomic, retain, readonly) AVSampleCursor *startCursor;
+
+/* If AVSampleBufferRequestDirectionNone, only one sample will be loaded and limitCursor, preferredMinSampleCount, and maxSampleCount will be ignored.
+ If AVSampleBufferRequestDirectionForward, zero or more following samples may be included, subject to limitCursor, preferredMinSampleCount, and maxSampleCount.
+ If AVSampleBufferRequestDirectionReverse, zero or more preceeding samples may be included, subject to limitCursor, preferredMinSampleCount, and maxSampleCount.
+ Default is AVSampleBufferRequestDirectionNone. */
+@property (nonatomic, assign) AVSampleBufferRequestDirection direction;
+
+/* optional: if not nil, the sequence of samples to be loaded may include the sample at this position, but no further. */
+@property (nonatomic, retain, nullable) AVSampleCursor *limitCursor;
+
+/* optional: if not zero, indicates the preferred number of samples to load. Fewer samples may be loaded if there is a change of format description. */
+@property (nonatomic, assign) NSInteger preferredMinSampleCount;
+
+/* optional: if not zero, indicates the maximum number of samples to load. */
+@property (nonatomic, assign) NSInteger maxSampleCount;
+
+/* One of AVSampleBufferRequestMode*. This property is ignored when scheduling the request on an AVSampleBufferGenerator created with a NULL timebase. */
+@property (nonatomic, assign) AVSampleBufferRequestMode mode;
+
+/* optional: indicates deadline for sample data and output PTS for CMSampleBuffer. */
+@property (nonatomic, assign) CMTime overrideTime;
+
+@end
+
+#pragma pack(pop)
+
+NS_ASSUME_NONNULL_END
+
+
+#else
+#import <AVFCore/AVSampleBufferGenerator.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleBufferRenderSynchronizer.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h 1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSampleCursor.h 2021-06-02 12:47:15.000000000 -0400
@@ -0,0 +1,325 @@
+#if !__has_include(<AVFCore/AVSampleCursor.h>)
+/*
+ File: AVSampleCursor.h
+
+ Framework: AVFoundation
+
+ Copyright 2014-2021 Apple Inc. All rights reserved.
+
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+#import <CoreMedia/CMTime.h>
+#import <CoreMedia/CMSampleBuffer.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma pack(push)
+#pragma pack()
+
+/*!
+ @class AVSampleCursor
+
+ @abstract An AVSampleCursor is always positioned at a specific media sample in a sequence of media samples as defined by a higher-level construct, such as an AVAssetTrack. It can be moved to a new position in that sequence either backwards or forwards, either in decode order or in presentation order. Movement can be requested according to a count of samples or according to a delta in time.
+ @discussion
+ AVSampleCursors can be compared by position within the sample sequence.
+ AVSampleCursors can be used synchronously to perform I/O in order to load media data of one or more media samples into memory.
+ An AVSampleCursor can provide information about the media sample at its current position, such as its duration, its presentation and decode timestamps, whether it can be decoded independently of other media samples, its offset and length in its storage container, and whether the track signals that the sample is intended to be loaded with other contiguous media samples in a "chunk".
+*/
+
+@class AVSampleCursorInternal;
+
+API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, tvos, watchos)
+@interface AVSampleCursor : NSObject <NSCopying> {
+@private
+ AVSampleCursorInternal *_sampleCursor;
+}
+AV_INIT_UNAVAILABLE
+
+/*!
+ @method stepInDecodeOrderByCount:
+ @abstract Moves the cursor a given number of samples in decode order.
+ @param stepCount
+ The number of samples to move across. If positive, step forward this many samples. If negative, step backward (-stepCount) samples.
+ @result The number of samples the cursor traversed. If the beginning or the end of the sample sequence was reached before the requested number of samples was traversed, the absolute value of the result will be less than the absolute value of stepCount.
+*/
+- (int64_t)stepInDecodeOrderByCount:(int64_t)stepCount;
+
+/*!
+ @method stepInPresentationOrderByCount:
+ @abstract Moves the cursor a given number of samples in presentation order.
+ @param stepCount
+ The number of samples to move across. If positive, step forward this many samples. If negative, step backward (-stepCount) samples.
+ @result The number of samples the cursor traversed. If the beginning or the end of the sample sequence was reached before the requested number of samples was traversed, the absolute value of the result will be less than the absolute value of stepCount.
+*/
+- (int64_t)stepInPresentationOrderByCount:(int64_t)stepCount;
+
+/*!
+ @method stepByDecodeTime:wasPinned:
+ @abstract Moves the cursor by a given deltaTime on the decode timeline.
+ @param deltaDecodeTime
+ The amount of time to move in the decode timeline.
+ @param outWasPinned
+ If the beginning or the end of the sample sequence was reached before the requested deltaDecodeTime was traversed, the BOOL value at the address specified by outWasPinned will be set to YES. May be NULL if this information isn't desired.
+ @result The amount of time the cursor was moved along the decode timeline. Because sample cursors snap to sample boundaries when stepped, this value may not be equal to deltaDecodeTime even if the cursor was not pinned.
+*/
+- (CMTime)stepByDecodeTime:(CMTime)deltaDecodeTime wasPinned:(nullable BOOL *)outWasPinned;
+
+/*!
+ @method stepByPresentationTime:wasPinned:
+ @abstract Moves the cursor by a given deltaTime on the presentation timeline.
+ @param deltaPresentationTime
+ The amount of time to move in the presentation timeline.
+ @param outWasPinned
+ If the beginning or the end of the sample sequence was reached before the requested deltaPresentationTime was traversed, the BOOL value at the address specified by outWasPinned will be set to YES. May be NULL if this information isn't desired.
+ @result The amount of time the cursor was moved along the presentation timeline. Because sample cursors snap to sample boundaries when stepped, this value may not be equal to deltaPresentationTime even if the cursor was not pinned.
+*/
+- (CMTime)stepByPresentationTime:(CMTime)deltaPresentationTime wasPinned:(nullable BOOL *)outWasPinned;
+
+@end
+
+
+@interface AVSampleCursor (AVSampleCursorTemporalPosition)
+
+/*!
+ @property presentationTimeStamp
+ @abstract The presentation timestamp (PTS) of the sample at the current position of the cursor.
+*/
+@property (nonatomic, readonly) CMTime presentationTimeStamp;
+
+/*!
+ @property decodeTimeStamp
+ @abstract The decode timestamp (DTS) of the sample at the current position of the cursor.
+*/
+@property (nonatomic, readonly) CMTime decodeTimeStamp;
+
+/*!
+ @method comparePositionInDecodeOrderWithPositionOfCursor:
+ @abstract Compares the relative positions of two AVSampleCursors.
+ @param cursor
+ An instance of AVSampleCursor with which to compare positions.
+ @result kCFCompareLessThan, kCFCompareEqualTo or kCFCompareGreaterThan, depending on whether the receiver points at a sample before, the same as, or after the sample pointed to by the specified AVSampleCursor.
+ @discussion If the receiver and cursor reference different sequences of samples, as when they're created by different instances of AVAssetTrack, results are undefined.
+*/
+- (NSComparisonResult)comparePositionInDecodeOrderWithPositionOfCursor:(AVSampleCursor *)cursor;
+
+/*!
+ @method samplesWithEarlierDecodeTimeStampsMayHaveLaterPresentationTimeStampsThanCursor:
+ @abstract This method tests a boundary in the reordering from decode order to presentation order, determining whether it's possible for any sample earlier in decode order than the sample at the position of the receiver can have a presentation timestamp later than that of the specified sample cursor.
+ @param cursor
+ An instance of AVSampleCursor with which to test the sample reordering boundary.
+ @result YES if it's possible for any sample earlier in decode order than the sample at the position of the receiver can have a presentation timestamp later than that of the specified sample cursor.
+ @discussion If the receiver and cursor reference different sequences of samples, as when they're created by different instances of AVAssetTrack, results are undefined.
+*/
+-(BOOL)samplesWithEarlierDecodeTimeStampsMayHaveLaterPresentationTimeStampsThanCursor:(AVSampleCursor *)cursor;
+
+/*!
+ @method samplesWithLaterDecodeTimeStampsMayHaveEarlierPresentationTimeStampsThanCursor:
+ @abstract This method tests a boundary in the reordering from decode order to presentation order, determining whether it's possible for any sample later in decode order than the sample at the position of the receiver can have a presentation timestamp earlier than that of the specified sample cursor.
+ @param cursor
+ An instance of AVSampleCursor with which to test the sample reordering boundary.
+ @result YES if it's possible for any sample later in decode order than the sample at the position of the receiver can have a presentation timestamp earlier than that of the specified sample cursor.
+ @discussion If the receiver and cursor reference different sequences of samples, as when they're created by different instances of AVAssetTrack, results are undefined.
+*/
+-(BOOL)samplesWithLaterDecodeTimeStampsMayHaveEarlierPresentationTimeStampsThanCursor:(AVSampleCursor *)cursor;
+
+@end
+
+
+@interface AVSampleCursor (AVSampleCursorCurrentSampleInfo)
+
+/*!
+ @property currentSampleDuration
+ @abstract Indicates the decode duration of the sample at the receiver's current position.
+ @discussion If the receiver must be advanced past its current position in order to determine the decode duration of the current sample, the value of currentSampleDuration is equal to kCMTimeIndefinite. This can occur with streaming formats such as MPEG-2 transport streams.
+*/
+@property (nonatomic, readonly) CMTime currentSampleDuration;
+
+/*!
+ @method copyCurrentSampleFormatDescription:
+ @abstract Provides the format description of the sample at the receiver's current position.
+*/
+- (CMFormatDescriptionRef)copyCurrentSampleFormatDescription CF_RETURNS_RETAINED;
+
+/*!
+ @struct AVSampleCursorSyncInfo
+ @abstract A struct for describing attributes of a media sample for consideration when resynchronizing a decoder.
+ @field sampleIsFullSync
+ Indicates whether the sample is a full sync sample, also known as an Instantaneous Decoder Refresh sample, and is sufficient in itself to completely resynchronize a decoder.
+ @field sampleIsPartialSync
+ Indicates whether the sample is a partial sync sample.
+ @field sampleIsDroppable
+ Indicates whether the sample is droppable.
+*/
+typedef struct {
+ BOOL sampleIsFullSync;
+ BOOL sampleIsPartialSync;
+ BOOL sampleIsDroppable;
+} AVSampleCursorSyncInfo;
+
+/*!
+ @property currentSampleSyncInfo
+ @abstract Provides information about the current sample for consideration when resynchronizing a decoder, as when scrubbing.
+*/
+@property (nonatomic, readonly) AVSampleCursorSyncInfo currentSampleSyncInfo;
+
+/*!
+ @struct AVSampleCursorDependencyInfo
+ @abstract A struct for describing dependencies between a media sample and other media samples in the same sample sequence.
+ @field sampleIndicatesWhetherItHasDependentSamples
+ Indicates whether the presence or absence of other samples that are dependent on the sample is known.
+ @field sampleHasDependentSamples
+ If sampleIndicatesWhetherItHasDependentSamples is YES, indicates whether the sample has dependent samples.
+ @field sampleIndicatesWhetherItDependsOnOthers
+ Indicates whether the sample's independency from other samples or dependency on other samples is known.
+ @field sampleDependsOnOthers
+ If sampleIndicatesWhetherItDependsOnOthers is YES, indicates whether the sample depends on other media samples.
+ @field sampleIndicatesWhetherItHasRedundantCoding
+ Indicates whether the presence of redundant coding of the sample is known.
+ @field sampleHasRedundantCoding
+ If sampleIndicatesWhetherItHasRedundantCoding is YES, indicates whether the sample has redundant coding.
+*/
+typedef struct {
+ BOOL sampleIndicatesWhetherItHasDependentSamples;
+ BOOL sampleHasDependentSamples;
+ BOOL sampleIndicatesWhetherItDependsOnOthers;
+ BOOL sampleDependsOnOthers;
+ BOOL sampleIndicatesWhetherItHasRedundantCoding;
+ BOOL sampleHasRedundantCoding;
+} AVSampleCursorDependencyInfo;
+
+/*!
+ @property currentSampleDependencyInfo
+ @abstract Provides information about dependencies between a media sample and other media samples in the same sample sequence, if known.
+*/
+@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
+ Indicates whether the sample is independently decodable. Will be YES for Immediate Playout Frames (IPFs) and Independent Frames (IFs).
+ @field audioSamplePacketRefreshCount
+ If audioSampleIsIndependentlyDecodable is YES, indicates how many samples, starting at this sample, must be fed to the decoder to achieve full decoder refresh. Will be zero for Immediate Playout Frames (IPFs).
+*/
+typedef struct {
+ BOOL audioSampleIsIndependentlyDecodable;
+ NSInteger audioSamplePacketRefreshCount;
+} AVSampleCursorAudioDependencyInfo;
+
+/*!
+ @property currentSampleAudioDependencyInfo
+ @abstract Provides information about the independent decodability of an audio sample.
+ @discussion In order to position a sample cursor at the first sample that the audio decoder requires for a full refresh, you will need to walk it back from
+ the current sample until you find a sample that is independently decodable, and whose audioSamplePacketRefreshCount is greater than or equal to
+ the number of steps back you have taken. This implies that if the current sample (before this walk) is independently decodable, with an
+ audioSampleRefreshCount of zero, no walk is required.
+*/
+@property (nonatomic, readonly) AVSampleCursorAudioDependencyInfo currentSampleAudioDependencyInfo API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, tvos, watchos);
+
+/*!
+ @property samplesRequiredForDecoderRefresh
+ @abstract Count of samples prior to the current sample, in decode order, that the decoder requires in order to achieve fully coherent output at the current decode time, as after a seek. Zero will be returned if no samples are required for decoder refresh or if the track does not contain this information.
+ @discussion Some sample sequences that do not indicate sample dependencies may instead indicate that in order for a specific sample to be decoded with all available accuracy, samples prior to that sample in decode order must be decoded before the specific sample is decoded.
+
+ In order to position a sample cursor at the first sample that the decoder requires for a full refresh, you can use code like the following:
+
+
+ NSInteger samplesPriorToCurrentSampleToFeedToDecoder = [mySampleCursor samplesRequiredForDecoderRefresh];
+ AVSampleCursor *cursorForObtainingRefreshSamples = [mySampleCursor copy];
+ [cursorForObtainingRefreshSamples stepInDecodeOrderByCount: -samplesPriorToCurrentSampleToFeedToDecoder ];
+
+ // cursorForObtainingRefreshSamples is now positioned at the first sample that must be provided to the decoder
+ // in order to decode the sample at the position of mySampleCursor in full
+
+*/
+@property (nonatomic, readonly) NSInteger samplesRequiredForDecoderRefresh API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, tvos, watchos);
+
+@end
+
+
+@interface AVSampleCursor (AVSampleCursorSampleStorageInfo)
+
+/*!
+ @property currentChunkStorageURL
+ @abstract The URL of the storage container of the current sample, as well as other samples that are intended to be loaded in the same operation as a "chunk".
+ @discussion May be nil; if nil, the storage location of the chunk is the URL of the sample cursor's track's asset, if it has one.
+*/
+@property (nonatomic, readonly, nullable) NSURL *currentChunkStorageURL;
+
+/*!
+ @struct AVSampleCursorStorageRange
+ @abstract A struct for indicating the offset and length of storage occupied by a media sample or its chunk.
+ @field offset
+ The offset of the first byte of storage occupied by a media sample or its chunk.
+ @field length
+ The count of bytes of storage occupied by a media sample or its chunk.
+ @discussion Like NSRange, but rangier.
+*/
+typedef struct {
+ int64_t offset;
+ int64_t length;
+} AVSampleCursorStorageRange;
+
+/*!
+ @property currentChunkStorageRange
+ @abstract The offset and length of samples in currentChunkStorageURL that are intended to be loaded together with the current sample as a "chunk".
+ @discussion If the current chunk isn't stored contiguously in its storage container, currentChunkStorageRange.offset will be -1. In such cases you can use AVSampleBufferGenerator to obtain the sample data.
+*/
+@property (nonatomic, readonly) AVSampleCursorStorageRange currentChunkStorageRange;
+
+/*!
+ @struct AVSampleCursorChunkInfo
+ @abstract Provides information about a chunk of media samples.
+ @field chunkSampleCount
+ The count of media samples in the chunk.
+ @field chunkHasUniformSampleSizes
+ YES if all of the samples in the chunk occupy the same number of bytes in storage.
+ @field currentChunkHasUniformSampleDurations
+ YES if all of the samples in the chunk have the same duration.
+ @field currentChunkHasUniformFormatDescriptions
+ YES if all of the samples in the chunk have the same format description.
+*/
+typedef struct {
+ int64_t chunkSampleCount;
+ BOOL chunkHasUniformSampleSizes;
+ BOOL chunkHasUniformSampleDurations;
+ BOOL chunkHasUniformFormatDescriptions;
+} AVSampleCursorChunkInfo;
+
+/*!
+ @property currentChunkInfo
+ @abstract Provides information about the "chunk" of samples to which the current sample belongs. If the media format that defines the sequence of samples does not signal "chunking" of samples in any way, each sample will be considered by the receiver as belonging to a chunk of one sample only.
+*/
+@property (nonatomic, readonly) AVSampleCursorChunkInfo currentChunkInfo;
+
+/*!
+ @property currentSampleIndexInChunk
+ @abstract The index of the current sample within the chunk to which it belongs.
+*/
+@property (nonatomic, readonly) int64_t currentSampleIndexInChunk;
+
+/*!
+ @property currentSampleStorageRange
+ @abstract The offset and length of the current sample in currentChunkStorageURL.
+ @discussion If the current sample isn't stored contiguously in its storage container, currentSampleStorageRange.offset will be -1. In such cases you can use AVSampleBufferGenerator to obtain the sample data.
+*/
+@property (nonatomic, readonly) AVSampleCursorStorageRange currentSampleStorageRange;
+
+@end
+
+#pragma pack(pop)
+
+NS_ASSUME_NONNULL_END
+
+
+#else
+#import <AVFCore/AVSampleCursor.h>
+#endif
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVSemanticSegmentationMatte.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoCompositing.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoComposition.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoComposition.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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/AppleTVOS.platform/Developer/SDKs/AppleTVOS.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
- README
- xcode13.0 Binding Status
- xcode13.1 Binding Status
- xcode13.2 Binding Status
- xcode13.3 Binding Status
- xcode13.4 Binding Status
- xcode14.0 Binding Status
- xcode14.1 Binding Status
- xcode14.2 Binding Status
- xcode14.3 Binding Status
- xcode15.0 Binding Status
- xcode15.1 Binding Status
- xcode15.3 Binding Status
- xcode15.4 Binding Status
- xcode16.0 Binding Status
- xcode16.1 Binding Status
- xcode16.2 Binding Status