Skip to content

AVFoundation tvOS xcode16.0 rc

Rolf Bjarne Kvinge edited this page Sep 12, 2024 · 2 revisions

#AVFoundation.framework

Manuel

diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureControl.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureControl.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureControl.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureControl.h	2024-08-07 08:28:01
@@ -0,0 +1,49 @@
+#if !__has_include(<AVFCapture/AVCaptureControl.h>)
+/*
+    File:  AVCaptureControl.h
+ 
+    Framework:  AVFoundation
+ 
+    Copyright 2024 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVBase.h>
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @protocol AVCaptureControl
+ @abstract
+    AVCaptureControl is an abstract class that defines an interface for a unique type of control which allows deep integration with the camera system through AVCaptureSession.
+ 
+ @discussion
+    Various concrete subclasses of `AVCaptureControl` are provided by AVFoundation to allow your application to both leverage common system controls and define unique custom controls.
+ 
+    Controls may be added to an `AVCaptureSession` using `-[AVCaptureSession addControl:]`.
+ 
+    For controls that use symbols to represent them, only SF Symbols may be used.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@interface AVCaptureControl : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property enabled
+ @abstract
+    Indicates whether the control should be enabled for user interaction.
+
+ @discussion
+    The value of this property is a `BOOL` that determines whether the control should be enabled for user interaction. Clients can set this property to keep a control added to an `AVCaptureSession` but prevent it from being interacted with by the user. A control's value may still be changed while it is disabled. The default value is `YES`.
+ */
+@property(nonatomic, getter=isEnabled) BOOL enabled;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#else
+#import <AVFCapture/AVCaptureControl.h>
+#endif
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h	2024-08-13 06:55:10
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h	2024-08-07 08:28:01
@@ -1860,7 +1860,7 @@
  @discussion
     In some system user interfaces, like the macOS Video Effects Menu, the video zoom factor value is displayed in a way most appropriate for visual representation and might differ from the videoZoomFactor property value on the receiver by a fixed ratio. For example, if the videoZoomFactor property value is 1.0 and the displayVideoZoomFactorMultiplier property value is 0.5, then multiplying 1.0 and 0.5 produces 0.5 which can be displayed in the UI. Client applications can key value observe this property to update the display video zoom factor values in their UI to stay consistent with Apple's system UIs.
   */
-@property(nonatomic, readonly) CGFloat displayVideoZoomFactorMultiplier API_AVAILABLE(macos(14.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(ios, watchos, visionos);
+@property(nonatomic, readonly) CGFloat displayVideoZoomFactorMultiplier API_AVAILABLE(macos(14.0), ios(18.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(watchos, visionos);
 
 @end
 
@@ -2686,6 +2686,52 @@
 @end
 
 
+#pragma mark - AVExposureBiasRange
+
+/*!
+ @class AVExposureBiasRange
+ @abstract
+    An AVExposureBiasRange expresses an inclusive range of supported exposure bias values, in EV units.
+ 
+ @discussion
+    This is used by AVCaptureSystemExposureBiasSlider for the range the slider uses.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos) NS_REFINED_FOR_SWIFT
+@interface AVExposureBiasRange : NSObject
+
+AV_INIT_UNAVAILABLE
+
+/*!
+ @property minExposureBias
+ @abstract
+    A float indicating the minimum exposure bias in EV units supported by this range.
+ */
+@property(nonatomic, readonly) float minExposureBias;
+
+/*!
+ @property maxExposureBias
+ @abstract
+    A float indicating the maximum exposure bias in EV units supported by this range.
+ */
+@property(nonatomic, readonly) float maxExposureBias;
+
+/*!
+ @method containsExposureBias:
+ @abstract
+    Tests if a given exposure bias in EV units is within the exposure bias range.
+ 
+ @param exposureBias
+    The exposure bias to test.
+ @result
+    Returns YES if the given exposure bias is within the exposure bias, NO otherwise.
+ 
+ @discussion
+    Note that the exposure bias ranges are inclusive.
+ */
+- (BOOL)containsExposureBias:(float)exposureBias;
+
+@end
+
 #pragma mark - AVFrameRateRange
 
 @class AVFrameRateRangeInternal;
@@ -2962,6 +3008,18 @@
 @property(nonatomic, readonly) CGFloat videoZoomFactorUpscaleThreshold API_UNAVAILABLE(macos, visionos);
 
 /*!
+ @property systemRecommendedVideoZoomRange
+ @abstract
+    Indicates the system's recommended zoom range for this device format.
+ 
+ @discussion
+    This property can be used to create a slider in your app's user interface to control the device's zoom with a system-recommended video zoom range. When a recommendation is not available, this property returns nil. Clients can key value observe AVCaptureDevice's minAvailableVideoZoomFactor and maxAvailableVideoZoomFactor properties to know when a device's supported zoom is restricted within the recommended zoom range.
+ 
+    The value of this property is also used for the AVCaptureSystemZoomSlider's range.
+ */
+@property(nonatomic, readonly, nullable) AVZoomRange *systemRecommendedVideoZoomRange API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) NS_REFINED_FOR_SWIFT;
+
+/*!
  @property minExposureDuration
  @abstract
     A CMTime indicating the minimum supported exposure duration.
@@ -2980,6 +3038,18 @@
     This read-only property indicates the maximum supported exposure duration.
  */
 @property(nonatomic, readonly) CMTime maxExposureDuration API_AVAILABLE(ios(8.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(macos, visionos);
+
+/*!
+ @property systemRecommendedExposureBiasRange
+ @abstract
+    Indicates the system's recommended exposure bias range for this device format.
+ 
+ @discussion
+    This property can be used to create a slider in your app's user interface to control the device's exposure bias with a system-recommended exposure bias range. When a recommendation is not available, this property returns nil.
+ 
+    The value of this property is also used for the AVCaptureSystemExposureBiasSlider's range.
+ */
+@property(nonatomic, readonly, nullable) AVExposureBiasRange *systemRecommendedExposureBiasRange API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) NS_REFINED_FOR_SWIFT;
 
 /*!
  @property minISO
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureFileOutput.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureFileOutput.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureFileOutput.h	2024-08-07 10:37:42
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureFileOutput.h	2024-08-16 05:36:40
@@ -114,7 +114,7 @@
  @discussion
     This property indicates recording to the file returned by outputFileURL has been previously paused using the pauseRecording method. When a recording is paused, captured samples are not written to the output file, but new samples can be written to the same file in the future by calling resumeRecording.
  */
-@property(nonatomic, readonly, getter=isRecordingPaused) BOOL recordingPaused API_UNAVAILABLE(ios, tvos, visionos);
+@property(nonatomic, readonly, getter=isRecordingPaused) BOOL recordingPaused API_AVAILABLE(macos(10.7), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 /*!
  @method pauseRecording
@@ -130,7 +130,7 @@
  
     A format or device change will result in the recording being stopped, even when it's paused.
  */
-- (void)pauseRecording API_UNAVAILABLE(ios, tvos, visionos);
+- (void)pauseRecording API_AVAILABLE(macos(10.7), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 /*!
  @method resumeRecording
@@ -142,7 +142,7 @@
  
     On macOS, if this method is called within the captureOutput:didOutputSampleBuffer:fromConnection: delegate method, the first samples written to the current file are guaranteed to be those contained in the sample buffer passed to that method.
  */
-- (void)resumeRecording API_UNAVAILABLE(ios, tvos, visionos);
+- (void)resumeRecording API_AVAILABLE(macos(10.7), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 /*!
  @property recordedDuration
@@ -243,7 +243,7 @@
  
     Clients should not assume that this method will be called on a specific thread, and should also try to make this method as efficient as possible.
  */
-- (void)captureOutput:(AVCaptureFileOutput *)output didPauseRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray<AVCaptureConnection *> *)connections API_UNAVAILABLE(ios, tvos, visionos);
+- (void)captureOutput:(AVCaptureFileOutput *)output didPauseRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray<AVCaptureConnection *> *)connections API_AVAILABLE(macos(10.7), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 /*!
  @method captureOutput:didResumeRecordingToOutputFileAtURL:fromConnections:
@@ -262,7 +262,7 @@
  
     Clients should not assume that this method will be called on a specific thread, and should also try to make this method as efficient as possible.
  */
-- (void)captureOutput:(AVCaptureFileOutput *)output didResumeRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray<AVCaptureConnection *> *)connections API_UNAVAILABLE(ios, tvos, visionos);
+- (void)captureOutput:(AVCaptureFileOutput *)output didResumeRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray<AVCaptureConnection *> *)connections API_AVAILABLE(macos(10.7), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 /*!
  @method captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureIndexPicker.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureIndexPicker.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureIndexPicker.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureIndexPicker.h	2024-08-13 06:18:09
@@ -0,0 +1,156 @@
+#if !__has_include(<AVFCapture/AVCaptureIndexPicker.h>)
+/*
+    File:  AVCaptureIndexPicker.h
+ 
+    Framework:  AVFoundation
+ 
+    Copyright 2024 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVCaptureControl.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @class AVCaptureIndexPicker
+ @abstract
+    An `AVCaptureControl` for selecting from a set of mutually exclusive values by index.
+ 
+ @discussion
+    `AVCaptureIndexPicker` is ideal when the set of values is provided by an indexed container like `NSArray`, `Array`, or `Sequence`. Controls may be added to an `AVCaptureSession` using `-[AVCaptureSession addControl:]`.
+ 
+    `AVCaptureIndexPicker` uses zero-based indexing.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@interface AVCaptureIndexPicker : AVCaptureControl
+
+/*!
+ @method initWithLocalizedTitle:symbolName:numberOfIndexes:
+ @abstract
+    Initializes an `AVCaptureIndexPicker` to pick between `numberOfIndexes` values.
+ 
+ @param localizedTitle
+    A localized string that describes the picker's `action`.
+ @param symbolName
+    The name of a symbol to represent the picker.
+ @param numberOfIndexes
+    The number of indexes to pick between. `numberOfIndexes` must be greater than 0, otherwise an `NSInvalidArgumentException` is thrown.
+ @result
+    An `AVCaptureIndexPicker` instance that picks between `numberOfIndexes` values.
+ 
+ @discussion
+    Suitable when your picked values don't need titles.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName numberOfIndexes:(NSInteger)numberOfIndexes NS_SWIFT_NAME(init(_:symbolName:numberOfIndexes:));
+
+/*!
+ @method initWithLocalizedTitle:symbolName:numberOfIndexes:localizedTitleTransform:
+ @abstract
+    Initializes an `AVCaptureIndexPicker` to pick between `numberOfIndexes` values.
+    
+ @param localizedTitle
+    A localized string that describes the picker's `action`.
+ @param symbolName
+    The name of a symbol to represent the picker.
+ @param numberOfIndexes
+    The number of indexes to pick between. `numberOfIndexes` must be greater than 0, otherwise an `NSInvalidArgumentException` is thrown.
+ @param localizedTitleTransform
+    A transformation from index to localized title.
+ @result
+    An `AVCaptureIndexPicker` instance that picks between `numberOfIndexes` values with a transformation from index to localized title.
+ 
+ @discussion
+    Suitable when you want to provide a title for each picked value lazily.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName numberOfIndexes:(NSInteger)numberOfIndexes localizedTitleTransform:(NS_NOESCAPE NSString * (^)(NSInteger index))localizedTitleTransform NS_SWIFT_NAME(init(_:symbolName:numberOfIndexes:localizedTitleTransform:));
+
+/*!
+ @method initWithLocalizedTitle:symbolName:localizedIndexTitles:
+ @abstract
+    Initializes an `AVCaptureIndexPicker` to pick between `localizedIndexTitles.count` values.
+    
+ @param localizedTitle
+    A localized string that describes the picker's `action`.
+ @param symbolName
+    The name of a symbol to represent the picker.
+ @param localizedIndexTitles
+    The titles to use for each index. `localizedIndexTitles` must be greater than 0, otherwise an `NSInvalidArgumentException` is thrown.
+ @result
+    An `AVCaptureIndexPicker` instance that picks between `localizedIndexTitles.count` values.
+ 
+ @discussion
+    Suitable when you already have an array containing a title for each picked value.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName localizedIndexTitles:(NSArray<NSString *> *)localizedIndexTitles NS_SWIFT_NAME(init(_:symbolName:localizedIndexTitles:));
+
+/*!
+ @property selectedIndex
+ @abstract
+    The currently selected index.
+ 
+ @discussion
+    Because the camera system may be independent from the main thread or `@MainActor`, `selectedIndex` must be changed on `actionQueue` – the queue provided to `setActionQueue:action:`. The default value is 0. An index may only be set if it is greater than 0 or less than `numberOfIndexes`, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+@property(nonatomic, assign) NSInteger selectedIndex;
+
+/*!
+ @property localizedTitle
+ @abstract
+    A localized string that describes the picker's `action`.
+ */
+@property(nonatomic, copy, readonly) NSString *localizedTitle;
+
+/*!
+ @property symbolName
+ @abstract
+    The name of a symbol to represent the picker.
+ */
+@property(nonatomic, copy, readonly) NSString *symbolName;
+
+/*!
+ @property numberOfIndexes
+ @abstract
+    The number of indexes to pick between.
+ */
+@property(nonatomic, assign, readonly) NSInteger numberOfIndexes;
+
+/*!
+ @property localizedIndexTitles
+ @abstract
+    The titles used for each index.
+ */
+@property(nonatomic, copy, readonly) NSArray<NSString *> *localizedIndexTitles;
+
+/*!
+ @property accessibilityIdentifier
+ @abstract
+    A string that identifies the picker.
+ */
+@property(nullable, nonatomic, copy) NSString *accessibilityIdentifier;
+
+// MARK: Actions
+
+/*!
+ @method setActionQueue:action:
+ @abstract
+    Configures the picker's `action` which is called on `actionQueue` whenever the index of the picker is changed.
+ 
+ @param actionQueue
+    A queue for the `action` to be called.
+ @param action
+    An action called on `actionQueue` whenever the selected index of the picker is changed.
+ 
+ @discussion
+    Because the camera system may be independent from the main thread or `@MainActor`, `action` is always called on an internal `DispatchSerialQueue` targeted at `actionQueue`.
+ 
+    If `action` modifies a property of the camera system, `actionQueue` must represent the same exclusive execution context as the camera system (see `isSameExclusiveExecutionContext`).
+ */
+- (void)setActionQueue:(dispatch_queue_t)actionQueue action:(void (^)(NSInteger selectedIndex))action NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCapture/AVCaptureIndexPicker.h>
+#endif
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureInput.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureInput.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureInput.h	2024-08-06 14:48:05
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureInput.h	2024-08-13 06:18:09
@@ -290,10 +290,13 @@
     Indicates that no multichannel audio should be used.
  @constant AVCaptureMultichannelAudioModeStereo
     Indicates that the audio should be recorded using stereo.
+ @constant AVCaptureMultichannelAudioModeFirstOrderAmbisonics
+    Indicates that the audio should be recorded using first-order ambisonics. When recording a QuickTime movie file, a stereo audio track will be recorded alongside the FOA track for backward playback compatibility.
  */
 typedef NS_ENUM(NSInteger, AVCaptureMultichannelAudioMode) {
-    AVCaptureMultichannelAudioModeNone   = 0,
-    AVCaptureMultichannelAudioModeStereo = 1,
+    AVCaptureMultichannelAudioModeNone                 = 0,
+    AVCaptureMultichannelAudioModeStereo               = 1,
+    AVCaptureMultichannelAudioModeFirstOrderAmbisonics = 2,
 } API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(watchos, visionos);
 
 /*!
@@ -324,6 +327,26 @@
     The default value is AVCaptureMultichannelAudioModeNone, in which case the default single channel audio recording is used.
  */
 @property(nonatomic) AVCaptureMultichannelAudioMode multichannelAudioMode API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(watchos, visionos);
+
+/*!
+ @property windNoiseRemovalSupported
+ @abstract
+    Returns whether or not the device supports wind noise removal during audio capture.
+ 
+ @discussion
+    YES if the device supports wind noise removal, NO otherwise.
+ */
+@property(nonatomic, readonly, getter=isWindNoiseRemovalSupported) BOOL windNoiseRemovalSupported API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
+
+/*!
+ @property windNoiseRemovalEnabled
+ @abstract
+    Specifies whether or not wind noise is removed during audio capture.
+ 
+ @discussion
+    Wind noise removal is available when the AVCaptureDeviceInput multichannelAudioMode property is set to any value other than AVCaptureMultichannelAudioModeNone.
+ */
+@property(nonatomic, getter=isWindNoiseRemovalEnabled) BOOL windNoiseRemovalEnabled API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
 
 @end
 
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h	2024-08-06 14:48:06
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCapturePhotoOutput.h	2024-08-16 05:36:40
@@ -170,6 +170,15 @@
 @property(nonatomic, readonly) NSArray<AVVideoCodecType> *availablePhotoCodecTypes;
 
 /*!
+ @property availableRawPhotoCodecTypes
+ @abstract
+    An array of available AVVideoCodecType values that may be used for the raw photo.
+
+ @discussion
+    Not all codecs can be used for all rawPixelFormatType values and this call will show all of the possible codecs available. To check if a codec is available for a specific rawPixelFormatType and rawFileType, one should use supportedRawPhotoCodecTypesForRawPhotoPixelFormatType:fileType:.
+ */
+@property(nonatomic, readonly) NSArray<AVVideoCodecType> *availableRawPhotoCodecTypes API_AVAILABLE(ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(macos, visionos) API_UNAVAILABLE(watchos);
+/*!
  @property appleProRAWSupported
  @abstract
     Indicates whether the current configuration supports Apple ProRAW pixel formats.
@@ -274,6 +283,22 @@
 - (NSArray<AVVideoCodecType> *)supportedPhotoCodecTypesForFileType:(AVFileType)fileType API_AVAILABLE(ios(11.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(visionos);
 
 /*!
+ @method supportedRawPhotoCodecTypesForRawPhotoPixelFormatType:fileType:
+ @abstract
+    An array of AVVideoCodecType values that are currently supported by the receiver for a particular file container and raw pixel format.
+
+ @param pixelFormatType
+    A Bayer RAW or Apple ProRAW pixel format OSType (defined in CVPixelBuffer.h).
+ @param fileType
+    The AVFileType container type intended for storage of a photo which can be retrieved from -availableRawPhotoFileTypes.
+ @result
+    An array of AVVideoCodecType values supported by the receiver for the file type and and raw pixel format in question.
+
+ @discussion
+    If you wish to capture a raw photo for storage using a Bayer RAW or Apple ProRAW pixel format and to be stored in a file container, such as DNG, you must ensure that the codec type you request is valid for that file and pixel format type. If no RAW codec types are supported for a given file type and/or pixel format type, an empty array is returned. If you have not yet added your receiver to an AVCaptureSession with a video source, an empty array is returned.
+ */
+- (NSArray<AVVideoCodecType> *)supportedRawPhotoCodecTypesForRawPhotoPixelFormatType:(OSType)pixelFormatType fileType:(AVFileType)fileType API_AVAILABLE(ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(macos, visionos) API_UNAVAILABLE(watchos);
+/*!
  @method supportedRawPhotoPixelFormatTypesForFileType:
  @abstract
     An array of CVPixelBufferPixelFormatType values that are currently supported by the receiver for a particular file container.
@@ -1262,6 +1287,15 @@
  */
 @property(readonly, copy, nullable) NSDictionary<NSString *, id> *format;
 
+/*!
+@property rawFileFormat
+@abstract
+    A dictionary of AVVideoSettings keys specifying the RAW file format to be used for the RAW photo.
+
+@discussion
+    One can specify desired format properties of the RAW file that will be created. Currently only the key AVVideoAppleProRAWBitDepthKey is allowed and the value to which it can be set should be from 8-16.  The AVVideoCodecKey must be present in the receiver's -availableRawPhotoCodecTypes array as well as in -supportedRawPhotoCodecTypesForRawPhotoPixelFormatType:fileType:. AVVideoQualityKey (NSNumber in range [0.0,1.0]) can be optionally set and a value between [0.0,1.0] will use lossy compression with lower values being more lossy resulting in smaller file sizes but lower image quality, while a value of 1.0 will use lossless compression resulting in the largest file size but also the best quality.
+*/
+@property(nonatomic, copy, nullable) NSDictionary<NSString *, id> *rawFileFormat API_AVAILABLE(ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(macos, visionos) API_UNAVAILABLE(watchos);
 /*!
  @property processedFileType
  @abstract
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h	2024-08-13 06:46:27
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h	2024-08-07 08:28:00
@@ -149,7 +149,9 @@
 @class AVCaptureInput;
 @class AVCaptureOutput;
 @class AVCaptureConnection;
+@class AVCaptureControl;
 @class AVCaptureSessionInternal;
+@protocol AVCaptureSessionControlsDelegate;
 
 /*!
  @class AVCaptureSession
@@ -375,6 +377,116 @@
 - (void)removeConnection:(AVCaptureConnection *)connection API_AVAILABLE(ios(8.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(visionos);
 
 /*!
+ @property supportsControls
+ @abstract
+    Indicates whether session controls are supported on this platform.
+ 
+ @discussion
+    `AVCaptureControl`s are only supported on platforms with necessary hardware.
+ */
+@property(nonatomic, readonly) BOOL supportsControls API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+
+/*!
+ @property maxControlsCount
+ @abstract
+    Specifies the maximum number of controls that can be added to a session.
+ */
+@property(nonatomic, readonly) NSInteger maxControlsCount API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
+
+/*!
+ @method setControlsDelegate:queue:
+ @abstract
+    Sets the receiver's controls delegate that receives events about the session's controls and the dispatch queue on which the delegate is called.
+ 
+ @param controlsDelegate
+    An object conforming to the `AVCaptureSessionControlsDelegate` protocol that receives events about the session's controls.
+ @param controlsDelegateCallbackQueue
+    A dispatch queue on which all delegate methods are called.
+ 
+ @discussion
+    Users can interact with an `AVCaptureSession`'s controls by performing specific gestures to enable their visibility. A delegate may be specified to be informed when the controls can be interacted with and are dismissed. All delegate methods will be called on the specified dispatch queue.
+ 
+    A serial dispatch queue must be used to guarantee that delegate callbacks will be delivered in order. The `controlsDelegateCallbackQueue` parameter may not be `NULL`, except when setting the `controlsDelegate` to `nil` otherwise `-setControlsDelegate:queue:` throws an `NSInvalidArgumentException`.
+ */
+- (void)setControlsDelegate:(nullable id<AVCaptureSessionControlsDelegate>)controlsDelegate queue:(nullable dispatch_queue_t)controlsDelegateCallbackQueue API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @property controlsDelegate
+ @abstract
+    The receiver's controls delegate.
+ 
+ @discussion
+    The value of this property is an object conforming to the `AVCaptureSessionControlsDelegate` protocol that receives events about the session's controls. The delegate is set using the `-setControlsDelegate:queue:` method.
+ 
+    A controls delegate must be specified for controls to become active.
+ */
+@property(nonatomic, readonly, nullable) id<AVCaptureSessionControlsDelegate> controlsDelegate API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @property controlsDelegateCallbackQueue
+ @abstract
+    The dispatch queue on which all controls delegate methods will be called.
+ 
+ @discussion
+    The value of this property is a `dispatch_queue_t`. The queue is set using the `-setControlsDelegate:queue:` method.
+ */
+@property(nonatomic, readonly, nullable) dispatch_queue_t controlsDelegateCallbackQueue API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @property controls
+ @abstract
+    An `NSArray` of `AVCaptureControl`s currently added to the session.
+ 
+ @discussion
+    The value of this property is an `NSArray` of `AVCaptureControl`s currently added to the session. Clients can add `AVCaptureControl`s to a session by calling `-addControl:`.
+ */
+@property(nonatomic, readonly) NSArray<__kindof AVCaptureControl *> *controls API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @method canAddControl:
+ @abstract
+    Returns whether the proposed control can be added to the session.
+ 
+ @param control
+    An `AVCaptureControl` instance.
+ @result
+    `YES` if the proposed control can be added to the session, `NO` otherwise.
+ 
+ @discussion
+    An `AVCaptureControl` instance can only be added to a session using `-addControl:` if `-canAddControl:` returns `YES`. For example, some platforms do not support controls. Instances of `AVCaptureSlider`, `AVCaptureToggle` and `AVCaptureIndexPicker` must have an action and an action queue set before being added to a session.
+ */
+- (BOOL)canAddControl:(AVCaptureControl *)control API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @method addControl:
+ @abstract
+    Adds an `AVCaptureControl` instance to the session.
+ 
+ @param control
+    An `AVCaptureControl` instance.
+ 
+ @discussion
+    An `AVCaptureControl` instance can only be added to a session using `-addControl:` if `-canAddControl:` returns `YES`, otherwise an `NSInvalidArgumentException` is thrown. `-addControl:` may be called while the session is running.
+ 
+    For an `AVCaptureControl` instance to become active, an `AVCaptureSessionControlsDelegate` must be set on the session.
+ */
+- (void)addControl:(AVCaptureControl *)control API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
+ @method removeControl:
+ @abstract
+    Removes an `AVCaptureControl` instance from the session.
+ 
+ @param control
+    An `AVCaptureControl` instance.
+ 
+ @discussion
+    `-removeControl:` may be called while the session is running.
+ */
+- (void)removeControl:(AVCaptureControl *)control API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos);
+
+/*!
  @method beginConfiguration
  @abstract
     When paired with commitConfiguration, allows a client to batch multiple configuration operations on a running session into atomic updates.
@@ -557,6 +669,73 @@
     AVCaptureMultiCamSessions always computes this hardwareCost. AVCaptureSessions only computes a non-zero hardwareCost when multiple AVCaptureVideoDataOutputs or an AVCaptureMovieFileOutput and one or more AVCaptureVideoDataOutputs are added to the session.
  */
 @property(nonatomic, readonly) float hardwareCost API_AVAILABLE(ios(16.0), macCatalyst(16.0), tvos(17.0)) API_UNAVAILABLE(macos, visionos) API_UNAVAILABLE(watchos);
+
+@end
+
+
+/*!
+ @protocol AVCaptureSessionControlsDelegate
+ @abstract
+    Defines an interface for delegates of `AVCaptureSession` to receive events about the session's controls.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@protocol AVCaptureSessionControlsDelegate <NSObject>
+
+@required
+
+/*!
+ @method sessionControlsDidBecomeActive:
+ @abstract
+    Called when the controls of an `AVCaptureSession` instance become active and are available for interaction.
+ 
+ @param session
+    The `AVCaptureSession` instance whose controls are active.
+ 
+ @discussion
+    Delegates receive this message when the controls of an `AVCaptureSession` instance become active and are available for interaction.
+ */
+- (void)sessionControlsDidBecomeActive:(AVCaptureSession *)session;
+
+
+/*!
+ @method sessionControlsWillEnterFullscreenAppearance:
+ @abstract
+    Called when the controls of an `AVCaptureSession` instance will enter a fullscreen appearance.
+ 
+ @param session
+    The `AVCaptureSession` instance whose controls will enter a fullscreen appearance.
+ 
+ @discussion
+    When the controls enter a fullscreen appearance, applications are encouraged to hide portions of their user interface including zoom or exposure sliders and shutter buttons. Few on-screen elements should be visible so users can focus on the controls they are interacting with and view the camera preview unobstructed.
+ */
+- (void)sessionControlsWillEnterFullscreenAppearance:(AVCaptureSession *)session;
+
+/*!
+ @method sessionControlsWillExitFullscreenAppearance:
+ @abstract
+    Called when the controls of an `AVCaptureSession` instance will exit a fullscreen appearance.
+ 
+ @param session
+    The `AVCaptureSession` instance whose controls will exit a fullscreen appearance.
+ 
+ @discussion
+    Delegates receive this message when the controls of an `AVCaptureSession` instance should resume showing portions of their user interface that were hidden in response to receiving `-sessionControlsWillEnterFullscreenAppearance:`. This message is sent before `sessionControlsDidBecomeInactive:`.
+ */
+- (void)sessionControlsWillExitFullscreenAppearance:(AVCaptureSession *)session;
+
+
+/*!
+ @method sessionControlsDidBecomeInactive:
+ @abstract
+    Called when the controls of an `AVCaptureSession` instance become inactive and are no longer available for interaction.
+ 
+ @param session
+    The `AVCaptureSession` instance whose controls are inactive.
+ 
+ @discussion
+    Delegates receive this message when the controls of an `AVCaptureSession` instance become inactive and are no longer available for interaction.
+ */
+- (void)sessionControlsDidBecomeInactive:(AVCaptureSession *)session;
 
 @end
 
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSlider.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSlider.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSlider.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSlider.h	2024-08-16 05:36:40
@@ -0,0 +1,170 @@
+#if !__has_include(<AVFCapture/AVCaptureSlider.h>)
+/*
+    File:  AVCaptureSlider.h
+ 
+    Framework:  AVFoundation
+ 
+    Copyright 2024 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVCaptureControl.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @class AVCaptureSlider
+ @abstract
+    An `AVCaptureControl` for selecting a value from a bounded range of values.
+ 
+ @discussion
+    `AVCaptureSlider` is ideal when your control only needs a single float value. Controls may be added to an `AVCaptureSession` using `-[AVCaptureSession addControl:]`.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@interface AVCaptureSlider : AVCaptureControl
+
+/*!
+ @method initWithLocalizedTitle:symbolName:minValue:maxValue:
+ @abstract
+    Initializes an `AVCaptureSlider` as a continuous slider between `minValue` and `maxValue`.
+ 
+ @param localizedTitle
+    A localized string that describes the slider's `action`.
+ @param symbolName
+    The name of a symbol to represent the slider.
+ @param minValue
+    The minimum value the slider can have. `minValue` must be less than `maxValue`, otherwise an `NSInvalidArgumentException` is thrown.
+ @param maxValue
+    The maximum value the slider can have. `maxValue` must be greater than `minValue`, otherwise an `NSInvalidArgumentException` is thrown.
+ @result
+    An `AVCaptureSlider` instance as a continuous slider between `minValue` and `maxValue`.
+ 
+ @discussion
+    Continuous sliders are used when any value in the range `minValue...maxValue` is supported.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName minValue:(float)minValue maxValue:(float)maxValue NS_REFINED_FOR_SWIFT;
+
+/*!
+ @method initWithLocalizedTitle:symbolName:minValue:maxValue:step:
+ @abstract
+    Initializes an `AVCaptureSlider` as a discrete slider where the valid values are between `minValue` and `maxValue` with `step` distance between each value.
+ 
+ @param localizedTitle
+    A localized string that describes the slider's `action`.
+ @param symbolName
+    The name of a symbol to represent the slider.
+ @param minValue
+    The minimum value the slider can have. `minValue` must be less than `maxValue`, otherwise an `NSInvalidArgumentException` is thrown.
+ @param maxValue
+    The maximum value the slider can have. `maxValue` must be greater than `minValue`, otherwise an `NSInvalidArgumentException` is thrown.
+ @param step
+    The distance between each valid value. `step` must be greater than 0, otherwise an `NSInvalidArgumentException` is thrown.
+ @result
+    An `AVCaptureSlider` instance as a discrete slider where the valid values are between `minValue` and `maxValue` with `step` distance between each value.
+ 
+ @discussion
+    Discrete sliders are used when only specific values are valid.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName minValue:(float)minValue maxValue:(float)maxValue step:(float)step NS_REFINED_FOR_SWIFT;
+
+/*!
+ @method initWithLocalizedTitle:symbolName:values:
+ @abstract
+    Initializes an `AVCaptureSlider` as a discrete slider where `values` contains the valid values.
+ 
+ @param localizedTitle
+    A localized string that describes the slider's `action`.
+ @param symbolName
+    The name of a symbol to represent the slider.
+ @param values
+    The only values the slider can have.
+ @result
+    An `AVCaptureSlider` instance as a discrete slider where `values` contains the valid values.
+ 
+ @discussion
+    Discrete sliders are used when only specific values are valid.
+ */
+- (instancetype)initWithLocalizedTitle:(NSString *)localizedTitle symbolName:(NSString *)symbolName values:(NSArray<NSNumber *> *)values NS_REFINED_FOR_SWIFT;
+
+/*!
+ @property value
+ @abstract
+    The current value of the slider.
+ 
+ @discussion
+    Because the camera system may be independent from the main thread or `@MainActor`, `value` must be changed on `actionQueue` – the queue provided to `setActionQueue:action:`. The default value is the slider's minimum value. A value may only be set if it is within the slider's minimum and maximum values, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+@property(nonatomic, assign) float value;
+
+/*!
+ @property localizedValueFormat
+ @abstract
+    A localized string defining the presentation of the slider's value.
+ 
+ @discussion
+    To modify the presentation of the slider's value, set `localizedValueFormat` to a format string to display the slider's value with any annotation.
+ 
+    The format string may only contain `%@` and no other placeholders like `%d`, `%s`, etc. Invalid format strings will result in the value's default presentation.
+ 
+    Examples of valid format strings are:
+    - `%@%%` for "40%"
+    - `%@ fps` for "60 fps"
+    - `+ %@` for "+ 20"
+ */
+@property(nonatomic, copy, nullable) NSString *localizedValueFormat;
+
+
+/*!
+ @property prominentValues
+ @abstract
+    Values in this array may receive unique visual representations or behaviors.
+ */
+@property(nonatomic, copy) NSArray<NSNumber *> *prominentValues NS_REFINED_FOR_SWIFT;
+
+/*!
+ @property localizedTitle
+ @abstract
+    A localized string that describes the slider's `action`.
+ */
+@property(nonatomic, copy, readonly) NSString *localizedTitle;
+
+/*!
+ @property symbolName
+ @abstract
+    The name of a symbol to represent the slider.
+ */
+@property(nonatomic, copy, readonly) NSString *symbolName;
+
+/*!
+ @property accessibilityIdentifier
+ @abstract
+    A string that identifies the slider.
+ */
+@property(nonatomic, copy, nullable) NSString *accessibilityIdentifier;
+
+
+// MARK: Actions
+
+/*!
+ @method setActionQueue:action:
+ @abstract
+    Configures the slider's `action` which is called on `actionQueue` whenever the value of the slider is changed.
+ 
+ @param actionQueue
+    A queue for the `action` to be called.
+ @param action
+    An action called on `actionQueue` whenever the value of the slider is changed.
+ 
+ @discussion
+    Because the camera system may be independent from the main thread or `@MainActor`, `action` is always called on an internal `DispatchSerialQueue` targeted at `actionQueue`.
+ 
+    If `action` modifies a property of the camera system, `actionQueue` must represent the same exclusive execution context as the camera system (see `isSameExclusiveExecutionContext`).
+ */
+- (void)setActionQueue:(dispatch_queue_t)actionQueue action:(void (^)(float newValue))action NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCapture/AVCaptureSlider.h>
+#endif
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemExposureBiasSlider.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemExposureBiasSlider.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemExposureBiasSlider.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemExposureBiasSlider.h	2024-08-07 08:28:01
@@ -0,0 +1,66 @@
+#if !__has_include(<AVFCapture/AVCaptureSystemExposureBiasSlider.h>)
+/*
+    File:  AVCaptureSystemExposureBiasSlider.h
+ 
+    Framework:  AVFoundation
+ 
+    Copyright 2024 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVCaptureControl.h>
+#import <AVFoundation/AVCaptureDevice.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @class AVCaptureSystemExposureBiasSlider
+ @abstract
+    The system's recommended continuous exposure bias control for `-[AVCaptureDevice exposureTargetBias]`.
+ 
+ @discussion
+    `AVCaptureSystemExposureBiasSlider` uses the range specified by `systemRecommendedExposureBiasRange` on the `activeFormat` from the `AVCaptureDevice` specified during initialization. As the device's `activeFormat` changes, the slider updates its range with the new format's `systemRecommendedExposureBiasRange`.
+    
+    Controls may be added to an `AVCaptureSession` using `-[AVCaptureSession addControl:]`.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@interface AVCaptureSystemExposureBiasSlider : AVCaptureControl
+
+/*!
+ @method initWithDevice:
+ @abstract
+    Initializes an `AVCaptureSystemExposureBiasSlider` for controlling `device`.
+ 
+ @param device
+    The device to control.
+ 
+ @discussion
+    `AVCaptureSystemExposureBiasSlider` may only be initialized with `AVCaptureDevice` instances that support setting `exposureTargetBias`, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+- (instancetype)initWithDevice:(AVCaptureDevice *)device;
+
+/*!
+ @method initWithDevice:action
+ @abstract
+    Initializes an `AVCaptureSystemExposureBiasSlider` for controlling `device` with a `@MainActor` `action` for handling `exposureTargetBias` changes.
+ 
+ @param device
+    The device to control.
+ @param action
+    An action called on `@MainActor` to handle `exposureTargetBias` changes by `AVCaptureSystemExposureBiasSlider`.
+ 
+ @discussion
+    `action` is **only** called when `exposureTargetBias` is changed by this control. Clients should not change `exposureTargetBias` on the device when `action` is called.
+ 
+    If you need to react to other sources of `exposureTargetBias` changes, you will still need to use key-value observation.
+ 
+    `AVCaptureSystemExposureBiasSlider` may only be initialized with `AVCaptureDevice` instances that support setting `exposureTargetBias`, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+- (instancetype)initWithDevice:(AVCaptureDevice *)device action:(NS_SWIFT_UI_ACTOR void (^)(float exposureTargetBias))action;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCapture/AVCaptureSystemExposureBiasSlider.h>
+#endif
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemZoomSlider.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemZoomSlider.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemZoomSlider.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSystemZoomSlider.h	2024-08-07 08:28:01
@@ -0,0 +1,66 @@
+#if !__has_include(<AVFCapture/AVCaptureSystemZoomSlider.h>)
+/*
+    File:  AVCaptureSystemZoomSlider.h
+ 
+    Framework:  AVFoundation
+ 
+    Copyright 2024 Apple Inc. All rights reserved.
+*/
+
+#import <AVFoundation/AVCaptureControl.h>
+#import <AVFoundation/AVCaptureDevice.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @class AVCaptureSystemZoomSlider
+ @abstract
+    The system's recommended continuous zoom control for `-[AVCaptureDevice videoZoomFactor]`.
+ 
+ @discussion
+    `AVCaptureSystemZoomSlider` uses the range specified by the `systemRecommendedZoomRange` on the `activeFormat` from the `AVCaptureDevice` specified during initialization. As the device's `activeFormat` changes, the slider updates its range with the new format's `systemRecommendedZoomRange`.
+ 
+    Controls may be added to an `AVCaptureSession` using `-[AVCaptureSession addControl:]`.
+ */
+API_AVAILABLE(macos(15.0), ios(18.0), macCatalyst(18.0), tvos(18.0)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos)
+@interface AVCaptureSystemZoomSlider : AVCaptureControl
+
+/*!
+ @method initWithDevice:
+ @abstract
+    Initializes an `AVCaptureSystemZoomSlider` for controlling `device`.
+ 
+ @param device
+    The device to control.
+ 
+ @discussion
+    `AVCaptureSystemZoomSlider` may only be initialized with `AVCaptureDevice` instances that support setting `videoZoomFactor`, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+- (instancetype)initWithDevice:(AVCaptureDevice *)device;
+
+/*!
+ @method initWithDevice:action
+ @abstract
+    Initializes an `AVCaptureSystemZoomSlider` for controlling `device` with a `@MainActor` `action` for handling `videoZoomFactor` changes.
+ 
+ @param device
+    The device to control.
+ @param action
+    An action called on `@MainActor` to handle `videoZoomFactor` changes by `AVCaptureSystemZoomSlider`.
+ 
+ @discussion
+    `action` is **only** called when `videoZoomFactor` is changed by this control. Clients should not change `videoZoomFactor` on the device when `action` is called.
+ 
+    If you need to react to other sources of `videoZoomFactor` changes like `rampToVideoZoomFactor:withRate:` you will still need to use key-value observation.
+ 
+    `AVCaptureSystemZoomSlider` may only be initialized with `AVCaptureDevice` instances that support setting `videoZoomFactor`, otherwise an `NSInvalidArgumentException` is thrown.
+ */
+- (instancetype)initWithDevice:(AVCaptureDevice *)device action:(NS_SWIFT_UI_ACTOR void (^)(CGFloat videoZoomFactor))action;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#else
+#import <AVFCapture/AVCaptureSystemZoomSlider.h>
+#endif
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCapture.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCapture.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCapture.h	2024-08-06 18:21:24
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVFCapture.h	2024-08-07 08:28:00
@@ -23,3 +23,8 @@
 #import <AVFoundation/AVPortraitEffectsMatte.h>
 #import <AVFoundation/AVSemanticSegmentationMatte.h>
 #import <AVFoundation/AVCaptureReactions.h>
+#import <AVFoundation/AVCaptureControl.h>
+#import <AVFoundation/AVCaptureSlider.h>
+#import <AVFoundation/AVCaptureIndexPicker.h>
+#import <AVFoundation/AVCaptureSystemZoomSlider.h>
+#import <AVFoundation/AVCaptureSystemExposureBiasSlider.h>
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h	2024-08-07 10:59:25
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataFormat.h	2024-08-06 07:42:30
@@ -169,6 +169,14 @@
 AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyAccessibilityDescription        API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0), visionos(1.0));
 AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyIsMontage                       API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
+/*!
+ @constant AVMetadataQuickTimeMetadataKeyFullFrameRatePlaybackIntent
+ @abstract A value of type kCMMetadataBaseDataType_UInt8 indicating whether this movie is intended to be played back at the full frame rate (1), or at a slow motion rate (0).
+ @discussion
+   Historically, some apps have played movies recorded at frame rates of 120fps or higher in slow motion by default. With the introduction of this metadata, apps that record high-frame-rate movies may add this movie-level metadata to indicate whether the movie is intended to be played at the full frame rate (1) or at a slow motion rate (0). Apps that play movies may use this metadata, when present, to guide their behavior.
+*/
+AVF_EXPORT AVMetadataKey const AVMetadataQuickTimeMetadataKeyFullFrameRatePlaybackIntent     API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0));
+
 // iTunesMetadata
 AVF_EXPORT AVMetadataFormat const AVMetadataFormatiTunesMetadata                             API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0), visionos(1.0));
 AVF_EXPORT AVMetadataKeySpace const AVMetadataKeySpaceiTunes                                 API_AVAILABLE(macos(10.7), ios(4.0), tvos(9.0), watchos(1.0), visionos(1.0));
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h	2024-08-07 10:59:26
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMetadataIdentifiers.h	2024-08-08 07:08:52
@@ -154,6 +154,14 @@
 AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataIsMontage                       API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
 /*!
+ @constant AVMetadataIdentifierQuickTimeMetadataFullFrameRatePlaybackIntent
+ @abstract A value of type kCMMetadataBaseDataType_UInt8 indicating whether this movie is intended to be played back at the full frame rate (1), or at a slow motion rate (0).
+ @discussion
+   Historically, some apps have played movies recorded at frame rates of 120fps or higher in slow motion by default. With the introduction of this metadata, apps that record high-frame-rate movies may add this movie-level metadata to indicate whether the movie is intended to be played at the full frame rate (1) or at a slow motion rate (0). Apps that play movies may use this metadata, when present, to guide their behavior.
+*/
+AVF_EXPORT AVMetadataIdentifier const AVMetadataIdentifierQuickTimeMetadataFullFrameRatePlaybackIntent     API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0));
+
+/*!
  @constant AVMetadataIdentifierQuickTimeMetadataAutoLivePhoto
  @abstract A value of type kCMMetadataBaseDataType_UInt8 indicating whether this Live Photo movie was captured in "Auto" mode.
  @discussion
diff -ruN /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoSettings.h /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoSettings.h
--- /Applications/Xcode_16.0.0-beta6.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoSettings.h	2024-08-08 12:24:26
+++ /Applications/Xcode_16.0.0-rc.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVVideoSettings.h	2024-08-10 03:57:20
@@ -48,6 +48,7 @@
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeHEVC /* @"hvc1" */                    API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), visionos(1.0)) API_UNAVAILABLE(watchos);
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeH264 /* @"avc1" */                    API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), visionos(1.0)) API_UNAVAILABLE(watchos);
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeJPEG /* @"jpeg" */                    API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), visionos(1.0)) API_UNAVAILABLE(watchos);
+	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeJPEGXL /* @"jxlc" */                    API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos);
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeAppleProRes4444 /* @"ap4h" */         API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(visionos);
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeAppleProRes4444XQ /* @"ap4x" */       API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(visionos);
 	AVF_EXPORT AVVideoCodecType const AVVideoCodecTypeAppleProRes422 /* @"apcn" */          API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(visionos);
Clone this wiki locally