Skip to content

VideoToolbox iOS xcode15.0 b1

Alex Soto edited this page Jun 5, 2023 · 1 revision

#VideoToolbox.framework

diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h	2023-03-09 23:50:02
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h	2023-05-31 08:45:34
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
 	
-	Copyright 2007-2021 Apple Inc. All rights reserved.
+	Copyright 2007-2022 Apple Inc. All rights reserved.
 	
 	Standard Video Toolbox compression properties.
 */
@@ -43,10 +43,10 @@
 /*
 	Recommendations for configuring VTCompressionSessions
 
-	These are recommendations for configuring VTCompressionSessions for some common scenarios.  
-	These are starting points; you may find that the details of your application necessitate further adjustments.
+	These are recommendations for configuring VTCompressionSessions for some common scenarios.
+	These are starting points. The requirements of the application may necessitate further adjustments.
 
-	Video-conferencing, live capture, and live broadcast scenarios:
+	Live capture and live broadcast scenarios:
 		• kVTCompressionPropertyKey_RealTime: kCFBooleanTrue
 		• kVTCompressionPropertyKey_ExpectedFrameRate: set to real-time frame rate if possible
 
@@ -58,9 +58,21 @@
 		• kVTCompressionPropertyKey_RealTime: kCFBooleanFalse
 		• kVTCompressionPropertyKey_MaximizePowerEfficiency: kCFBooleanTrue
 
-	Ultra-low-latency capture / conferencing / cloud gaming (cases where every millisecond counts):
+	Ultra-low-latency conferencing and cloud gaming (cases where every millisecond counts):
+		• kVTVideoEncoderSpecification_EnableLowLatencyRateControl: kCFBooleanTrue
 		• kVTCompressionPropertyKey_RealTime: kCFBooleanTrue
+		• kVTCompressionPropertyKey_ExpectedFrameRate: set to real-time frame rate if possible
 		• kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality: kCFBooleanTrue
+
+	Optionally, kVTCompressionPropertyKey_AllowTemporalCompression, kVTCompressionPropertyKey_AllowFrameReordering,
+	    kVTCompressionPropertyKey_MaxKeyFrameInterval, and kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration
+	    may be used to configure frame dependencies in the video stream.
+
+	kVTCompressionPropertyKey_AverageBitRate, kVTCompressionPropertyKey_DataRateLimits, kVTCompressionPropertyKey_ConstantBitRate may be used to configure the video data rate.
+
+		• kVTCompressionPropertyKey_AverageBitRate specifies the desired long term average bit rate. It is a soft limit, so the encoder may overshoot or undershoot and the average bit rate of the output video may be over or under the target.
+		• kVTCompressionPropertyKey_DataRateLimits specifies a hard data rate cap for a given time window. The encoder will not overshoot. kVTCompressionPropertyKey_AverageBitRate and kVTCompressionPropertyKey_DataRateLimits may be used together to specify an overall target bit rate while also establishing hard limits over a smaller window.
+		• kVTCompressionPropertyKey_ConstantBitRate is intended for legacy content distribution networks which require constant bitrate, and is not intended for general streaming scenarios.
 */
 
 #pragma mark Buffers
@@ -961,6 +973,54 @@
 VT_EXPORT const CFStringRef kVTCompressionPropertyKey_EncoderID API_AVAILABLE(macosx(10.13), ios(11.0), tvos(11.0)); // CFStringRef
 
 /*!
+	@constant	kVTCompressionPropertyKey_RecommendedParallelizationLimit
+	@abstract
+		If supported by the underlying video encoder, returns the recommended number of VTCompressionSessions to instantiate in a parallel encoding configuration.
+	@discussion
+		Parallel encoding VTCompressionSessions require the use of the properties kVTCompressionPropertyKey_MoreFramesBeforeStart, kVTCompressionPropertyKey_MoreFramesAfterEnd, and kVTCompressionPropertyKey_SourceFrameCount.
+		e.g. If the property returns 4, a setup for 4 VTCompressionSessions on a 400 frame movie might look like:
+			compressionSession1
+				kVTCompressionPropertyKey_MoreFramesBeforeStart = false
+				kVTCompressionPropertyKey_MoreFramesAfterEnd = true
+				kVTCompressionPropertyKey_SourceFrameCount = 100
+			compressionSession2
+				kVTCompressionPropertyKey_MoreFramesBeforeStart = true
+				kVTCompressionPropertyKey_MoreFramesAfterEnd = true
+				kVTCompressionPropertyKey_SourceFrameCount = 100
+			compressionSession3
+				kVTCompressionPropertyKey_MoreFramesBeforeStart = true
+				kVTCompressionPropertyKey_MoreFramesAfterEnd = true
+				kVTCompressionPropertyKey_SourceFrameCount = 100
+			compressionSession4
+				kVTCompressionPropertyKey_MoreFramesBeforeStart = true
+				kVTCompressionPropertyKey_MoreFramesAfterEnd = false
+				kVTCompressionPropertyKey_SourceFrameCount = 100
+*/
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_RecommendedParallelizationLimit API_AVAILABLE(macosx(14.0)) API_UNAVAILABLE(ios, tvos, watchos); // Read-only, CFNumber<int>
+
+/*!
+	@constant	kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumFrameCount
+	@abstract
+		If supported by the underlying video encoder, returns the recommended minimum number of video frames for a given subdivision in a parallel encoding configuration.
+	@discussion
+		For best results, ensure that the total number of frames of a parallelized subdivision is greater than or equal to this returned value.
+		See also kVTCompressionPropertyKey_RecommendedParallelizationLimit
+		See also kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumDuration
+*/
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumFrameCount API_AVAILABLE(macosx(14.0)) API_UNAVAILABLE(ios, tvos, watchos); // Read-only, CFNumber<uint64_t>
+
+/*!
+	@constant	kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumDuration
+	@abstract
+		If supported by the underlying video encoder, returns the recommended minimum duration for a given subdivision in a parallel encoding configuration.
+	@discussion
+		For best results, ensure that the total duration of a parallelized subdivision is greater than or equal to this returned value.
+		See also kVTCompressionPropertyKey_RecommendedParallelizationLimit
+		See also kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumFrameCount
+*/
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumDuration API_AVAILABLE(macosx(14.0)) API_UNAVAILABLE(ios, tvos, watchos); // Read-only, CMTime as CFDictionary
+
+/*!
 	@constant	kVTCompressionPropertyKey_PreserveDynamicHDRMetadata
 	@abstract
 		Controls whether or not to preserve any dynamic HDR metadata on the input pixel buffer
@@ -1080,6 +1140,72 @@
 */
 VT_EXPORT const CFStringRef kVTSampleAttachmentKey_RequireLTRAcknowledgementToken API_AVAILABLE(macosx(12.0), ios(15.0), tvos(15.0)); // CFNumberRef, Optional
 
+#pragma mark Multi-image compression
+
+/*!
+    @constant	kVTCompressionPropertyKey_MVHEVCVideoLayerIDs
+    @abstract
+        Requests multi-image encoding; advises encoder to expect CMTaggedBufferGroups with specific CMTags referencing these MV-HEVC VideoLayerIDs.
+    @discussion
+        MV-HEVC specific.
+        The property value is a CFArray containing VideoLayerIDs as CFNumbers.
+        The property is NULL by default.
+ */
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_MVHEVCVideoLayerIDs API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos); // Read/write, CFArray(CFNumber), Optional
+
+/*!
+    @constant	kVTCompressionPropertyKey_MVHEVCViewIDs
+    @abstract
+        Specifies the ViewIDs corresponding to the VideoLayerIDs provided via kVTCompressionPropertyKey_MVHEVCVideoLayerIDs.
+    @discussion
+        MV-HEVC specific.
+        The property value is a CFArray containing ViewIDs as CFNumbers.
+        The entries in this array should be in the same order and have the same count as the value set via kVTCompressionPropertyKey_MVHEVCVideoLayerIDs.
+        The property is NULL by default.
+ */
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_MVHEVCViewIDs API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos); // Read/write, CFArray(CFNumber), Optional
+
+/*!
+    @constant	kVTCompressionPropertyKey_MVHEVCLeftAndRightViewIDs
+    @abstract
+        Specifies which of the ViewIDs provided via kVTCompressionPropertyKey_MVHEVCViewIDs is the "left view id" and which is the "right view id".
+    @discussion
+        MV-HEVC specific.
+        These ViewIDs will be incorporated into the 3D Reference Displays Info SEI message.
+        The property value is a CFArray containing two ViewIDs as CFNumbers with the first correspponding to the left eye and the second corresponding to the right eye.
+        The property is NULL by default.
+ */
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_MVHEVCLeftAndRightViewIDs API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos); // Read/write, CFArray[CFNumber(left view ID), CFNumber(right view ID)], Optional
+
+#pragma mark VideoExtendedUsage signaling
+
+/*!
+    @constant	kVTCompressionPropertyKey_HeroEye
+    @abstract
+        Specifies the value of kCMFormatDescriptionExtension_HeroEye.
+    @discussion
+        The value will be set on the format description for output samples and may affect the decoded frame presentation.
+ */
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_HeroEye API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos);	// CFString, see kCMFormatDescriptionExtension_HeroEye
+
+/*!
+	@constant	kVTCompressionPropertyKey_StereoCameraBaseline
+    @abstract
+        Specifies the value of kCMFormatDescriptionExtension_StereoCameraBaseline.
+    @discussion
+        The value will be set on the format description for output samples and may affect the decoded frame presentation.
+ */
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_StereoCameraBaseline API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos);	// CFNumber(uint32), see kCMFormatDescriptionExtension_StereoCameraBaseline
+
+/*!
+    @constant	kVTCompressionPropertyKey_HorizontalDisparityAdjustment
+    @abstract
+        Specifies the value of kCMFormatDescriptionExtension_HorizontalDisparityAdjustment.
+    @discussion
+        The value will be set on the format description for output samples and may affect the decoded frame presentation.
+ */
+
+VT_EXPORT const CFStringRef kVTCompressionPropertyKey_HorizontalDisparityAdjustment API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos);	// CFNumber(int32), see kCMFormatDescriptionExtension_HorizontalDisparityAdjustment
 
 	
 CM_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionSession.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionSession.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionSession.h	2023-03-09 19:13:24
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionSession.h	2023-05-31 04:53:34
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
 	
-	Copyright © 2006-2021 Apple Inc. All rights reserved.
+	Copyright © 2006-2023 Apple Inc. All rights reserved.
 	
 	Video Toolbox client API for compressing video frames.
 	
@@ -23,6 +23,7 @@
 #include <CoreMedia/CMFormatDescription.h>
 #include <CoreMedia/CMTime.h>
 #include <CoreMedia/CMTimeRange.h>
+#include <CoreMedia/CMTaggedBufferGroup.h>
 
 #include <VideoToolbox/VTSession.h>
 #include <VideoToolbox/VTCompressionProperties.h>
@@ -52,7 +53,7 @@
 		to tear it down and CFRelease to release your object reference.
  */
 
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTCompressionSession*  VTCompressionSessionRef;
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTCompressionSession*  VTCompressionSessionRef CM_SWIFT_NONSENDABLE;
 
 /*!
 	@typedef	VTCompressionOutputCallback
@@ -273,7 +274,7 @@
 typedef void (^VTCompressionOutputHandler)(
 		OSStatus status,
 		VTEncodeInfoFlags infoFlags,
-		CM_NULLABLE CMSampleBufferRef sampleBuffer );
+		CM_NULLABLE CMSampleBufferRef sampleBuffer ) CM_SWIFT_SENDABLE;
 	
 /*!
 	@function	VTCompressionSessionEncodeFrameWithOutputHandler
@@ -334,6 +335,103 @@
 	CM_NONNULL VTCompressionSessionRef	session,
 	CMTime								completeUntilPresentationTimeStamp) API_AVAILABLE(macosx(10.8), ios(8.0), tvos(10.2)); // complete all frames if non-numeric
 	
+#pragma mark Multi-image compression
+
+/*!
+	@function     VTIsStereoMVHEVCEncodeSupported
+	@abstract	  Indicates whether the current system supports stereo MV-HEVC encode.
+	@discussion   This call returning true does not guarantee that encode resources will be available at all times.
+ */
+VT_EXPORT Boolean
+VTIsStereoMVHEVCEncodeSupported( void ) API_AVAILABLE(macos(14.0), ios(17.0));
+
+/*!
+	@function	VTCompressionSessionEncodeMultiImageFrame
+	@abstract
+		Call this function to present a multi-image frame to the compression session.
+		Encoded frames may or may not be output before the function returns.
+	@discussion
+		The client should not modify the pixel data after making this call.
+		The session and/or encoder will retain the image buffer as long as necessary.
+	@param	session
+		The compression session.
+	@param	taggedBufferGroup
+		A CMTaggedBufferGroup containing the multiple images for a video frame to be compressed.
+	@param	presentationTimeStamp
+		The presentation timestamp for this frame, to be attached to the sample buffer.
+		Each presentation timestamp passed to a session must be greater than the previous one.
+	@param	duration
+		The presentation duration for this frame, to be attached to the sample buffer.
+		If you do not have duration information, pass kCMTimeInvalid.
+	@param	frameProperties
+		Contains key/value pairs specifying additional properties for encoding this frame.
+		Note that some session properties may also be changed between frames.
+		Such changes have effect on subsequently encoded frames.
+	@param	sourceFrameRefcon
+		Your reference value for the frame, which will be passed to the output callback function.
+	@param	infoFlagsOut
+		Points to a VTEncodeInfoFlags to receive information about the encode operation.
+		The kVTEncodeInfo_Asynchronous bit may be set if the encode is (or was) running
+		asynchronously.
+		The kVTEncodeInfo_FrameDropped bit may be set if the frame was dropped (synchronously).
+		Pass NULL if you do not want to receive this information.
+*/
+VT_EXPORT OSStatus
+VTCompressionSessionEncodeMultiImageFrame(
+		CM_NONNULL VTCompressionSessionRef	session,
+		CM_NONNULL CMTaggedBufferGroupRef	taggedBufferGroup,
+		CMTime								presentationTimeStamp,
+		CMTime								duration, // may be kCMTimeInvalid
+		CM_NULLABLE CFDictionaryRef			frameProperties,
+		void * CM_NULLABLE					sourceFrameRefcon,
+		VTEncodeInfoFlags * CM_NULLABLE		infoFlagsOut ) API_AVAILABLE(macosx(14.0), ios(17.0)) API_UNAVAILABLE(tvos) CF_SWIFT_UNAVAILABLE("Unavailable in Swift");
+
+
+#if __BLOCKS__
+/*!
+	@function	VTCompressionSessionEncodeMultiImageFrameWithOutputHandler
+	@abstract
+		Call this function to present a multi-image frame to the compression session.
+		Encoded frames may or may not be output before the function returns.
+	@discussion
+		The client should not modify the pixel data after making this call.
+		The session and/or encoder will retain the image buffer as long as necessary.
+		Cannot be called with a session created with a VTCompressionOutputCallback.
+	@param	session
+		The compression session.
+	@param	taggedBufferGroup
+		A CMTaggedBufferGroup containing the multiple images for a video frame to be compressed.
+	@param	presentationTimeStamp
+		The presentation timestamp for this frame, to be attached to the sample buffer.
+		Each presentation timestamp passed to a session must be greater than the previous one.
+	@param	duration
+		The presentation duration for this frame, to be attached to the sample buffer.
+		If you do not have duration information, pass kCMTimeInvalid.
+	@param	frameProperties
+		Contains key/value pairs specifying additional properties for encoding this frame.
+		Note that some session properties may also be changed between frames.
+		Such changes have effect on subsequently encoded frames.
+	@param	infoFlagsOut
+		Points to a VTEncodeInfoFlags to receive information about the encode operation.
+		The kVTEncodeInfo_Asynchronous bit may be set if the encode is (or was) running
+		asynchronously.
+		The kVTEncodeInfo_FrameDropped bit may be set if the frame was dropped (synchronously).
+		Pass NULL if you do not want to receive this information.
+	@param	outputHandler
+		The block to be called when encoding the frame is completed.
+		This block may be called asynchronously, on a different thread from the one that calls VTCompressionSessionEncodeMultiImageFrameWithOutputHandler.
+ */
+VT_EXPORT OSStatus
+VTCompressionSessionEncodeMultiImageFrameWithOutputHandler(
+		CM_NONNULL VTCompressionSessionRef		session,
+		CM_NONNULL CMTaggedBufferGroupRef		taggedBufferGroup,
+		CMTime									presentationTimeStamp,
+		CMTime									duration, // may be kCMTimeInvalid
+		CM_NULLABLE CFDictionaryRef				frameProperties, // may be NULL
+		VTEncodeInfoFlags * CM_NULLABLE			infoFlagsOut,
+		CM_NONNULL VTCompressionOutputHandler	outputHandler ) API_AVAILABLE(macosx(14.0), ios(17.0)) API_UNAVAILABLE(tvos) CF_REFINED_FOR_SWIFT;
+#endif // __BLOCKS__
+
 #pragma mark Multi-pass
 	
 /*
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h	2023-03-09 23:53:06
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h	2023-05-26 21:28:43
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
  
-	Copyright © 2007-2020 Apple Inc. All rights reserved.
+	Copyright © 2007-2023 Apple Inc. All rights reserved.
   
 	Standard Video Toolbox decompression properties.
 */
@@ -137,7 +137,7 @@
 VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_ContentHasInterframeDependencies API_AVAILABLE(macosx(10.8), ios(8.0), tvos(10.2)); // Read-only, CFBoolean
 
 #pragma mark Hardware acceleration
-#if !TARGET_OS_IPHONE
+
 /*!
 	@constant	kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder
 	@abstract
@@ -149,7 +149,7 @@
 		this property can be set to kCFBooleanFalse.
 		In MacOS 10.15 and later, hardware decode is enabled in VTDecompressionSessions by default.
 */
-VT_EXPORT const CFStringRef kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(8.0), tvos(10.2)); // CFBoolean, Optional, true by default
+VT_EXPORT const CFStringRef kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(17.0), tvos(17.0)); // CFBoolean, Optional, true by default
 
 /*!
 	@constant	kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder
@@ -169,7 +169,7 @@
 			- the requested decoding format or configuration is not supported
 			- the hardware decode resources on the machine are busy
 */
-VT_EXPORT const CFStringRef kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(8.0), tvos(10.2)); // CFBoolean, Optional
+VT_EXPORT const CFStringRef kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(17.0), tvos(17.0)); // CFBoolean, Optional
 
 /*!
 	@constant	kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder
@@ -180,8 +180,7 @@
 		accelerated decode using kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder
 		to see if a hardware accelerated decoder was selected.
 */
-VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(8.0), tvos(10.2)) ; // CFBoolean, Read; assumed false by default
-#endif // !TARGET_OS_IPHONE
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder API_AVAILABLE(macosx(10.9), ios(17.0), tvos(17.0)) ; // CFBoolean, Read; assumed false by default
 	
 #pragma mark Decoder behavior
 
@@ -429,10 +428,36 @@
 	@abstract
 		This controls whether or not to propagate any per frame HDR
 		display metadata from the input compressed bitstream to the output pixel buffer.
-	@discussion
 */
 VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_PropagatePerFrameHDRDisplayMetadata API_AVAILABLE(macosx(11.0), ios(14.0), tvos(14.0)); // Read/write, CFBoolean, Optional, default is kCFBooleanTrue
 
+/*!
+	@constant       kVTDecompressionPropertyKey_GeneratePerFrameHDRDisplayMetadata
+	@abstract
+		Generates Per Frame HDR Metadata and attaches it to the resulting decoded CVPixelBuffers.
+	@discussion
+		If the color space and YCbCrMatrix matches a supported HDR format such as HLG (kCMFormatDescriptionTransferFunction_ITU_R_2100_HLG)
+		the decoded frame will be analyzed and metadata will be added as an attachment to the CVPixelBuffer.
+*/
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_GeneratePerFrameHDRDisplayMetadata API_AVAILABLE(macosx(14.0), ios(17.0)); // CFBoolean, Read/Write, Optional, kCFBooleanFalse by default
+
+
+#pragma mark Multi-image decompression
+
+/*!
+    @constant	kVTDecompressionPropertyKey_RequestedMVHEVCVideoLayerIDs
+    @abstract
+        Requests multi-image decoding of specific MV-HEVC VideoLayerIDs.
+    @discussion
+        MV-HEVC specific.
+        Requires that the VTDecompressionSession client use VTDecompressionSessionSetMultiImageCallback to install a callback capable of receiving CMTaggedBufferGroups in response to multi-image DecodeFrame requests.
+        The property value is a CFArray containing VideoLayerIDs as CFNumbers.
+        MV-HEVC VideoLayerIDs not in this list do not need to be output, and the decoder may skip decoding them if not otherwise necessary.
+        The property is NULL by default.
+        If this property is NULL, MV-HEVC shall be decoded ignoring layers other than the base layer.
+        Terminology note: in multi-image decompression, a single video sample (from one CMSampleBuffer) contains a single frame (with one PTS) that is decoded to produce multiple images.
+ */
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_RequestedMVHEVCVideoLayerIDs API_AVAILABLE(macos(14.0), ios(17.0)) API_UNAVAILABLE(tvos, watchos); // Read/write, CFArray(CFNumber), Optional
 
 	
 CM_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionSession.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionSession.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionSession.h	2023-03-09 23:50:02
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionSession.h	2023-05-31 04:53:34
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
  
-    Copyright 2006-2013 Apple Inc. All rights reserved.
+    Copyright 2006-2023 Apple Inc. All rights reserved.
   
 	Video Toolbox client API for decompressing video frames.
 	
@@ -22,6 +22,7 @@
 #include <CoreMedia/CMSampleBuffer.h>
 #include <CoreMedia/CMFormatDescription.h>
 #include <CoreMedia/CMTime.h>
+#include <CoreMedia/CMTaggedBufferGroup.h>
 
 #include <VideoToolbox/VTSession.h>
 #include <VideoToolbox/VTDecompressionProperties.h>
@@ -48,7 +49,7 @@
 		to tear it down and CFRelease to release your object reference.
  */
 
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTDecompressionSession*  VTDecompressionSessionRef;
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTDecompressionSession*  VTDecompressionSessionRef CM_SWIFT_NONSENDABLE;
 
 /*!
 	@typedef	VTDecompressionOutputCallback
@@ -94,8 +95,8 @@
 struct VTDecompressionOutputCallbackRecord {
 	CM_NULLABLE VTDecompressionOutputCallback  decompressionOutputCallback;
 	void * CM_NULLABLE                         decompressionOutputRefCon;
-};
-typedef struct VTDecompressionOutputCallbackRecord VTDecompressionOutputCallbackRecord;
+} CM_SWIFT_NONSENDABLE;
+typedef struct VTDecompressionOutputCallbackRecord VTDecompressionOutputCallbackRecord CM_SWIFT_NONSENDABLE;
 
 /*!
 	@function	VTDecompressionSessionCreate
@@ -219,7 +220,7 @@
 	VTDecodeInfoFlags infoFlags,
 	CM_NULLABLE CVImageBufferRef imageBuffer,
 	CMTime presentationTimeStamp,
-	CMTime presentationDuration );
+	CMTime presentationDuration ) CM_SWIFT_SENDABLE;
 	
 /*!
 	@function	VTDecompressionSessionDecodeFrameWithOutputHandler
@@ -332,7 +333,153 @@
 // See VTSession.h for property access APIs on VTDecompressionSessions.
 // See VTDecompressionProperties.h for standard property keys and values for decompression sessions.
 
-    
+#pragma mark Multi-image decompression
+
+/*!
+ 	@function     VTIsStereoMVHEVCDecodeSupported
+ 	@abstract	  Indicates whether the current system supports stereo MV-HEVC decode.
+ 	@discussion   This call returning true does not guarantee that decode resources will be available at all times.
+ */
+VT_EXPORT Boolean
+VTIsStereoMVHEVCDecodeSupported( void ) API_AVAILABLE(macos(14.0), ios(17.0));
+
+/*!
+	@typedef	VTDecompressionOutputMultiImageCallback
+	@abstract	Prototype for callback invoked when multi-image frame decompression is complete.
+	@discussion
+		When you create a decompression session, you pass in a callback function to be called
+		for decompressed frames.  This function will not necessarily be called in display order.
+	@param	decompressionOutputMultiImageRefCon
+		The callback's reference value, copied from the outputMultiImageRefcon passed to
+		VTDecompressionSessionSetMultiImageCallback.
+	@param	sourceFrameRefCon
+		The frame's reference value, copied from the sourceFrameRefCon argument to
+		VTDecompressionSessionDecodeFrame.
+	@param	status
+		noErr if decompression was successful; an error code if decompression was not successful.
+	@param	infoFlags
+		Contains information about the decode operation.
+		The kVTDecodeInfo_Asynchronous bit may be set if the decode ran asynchronously.
+		The kVTDecodeInfo_FrameDropped bit may be set if the frame was dropped.
+		If the kVTDecodeInfo_ImageBufferModifiable bit is set, it is safe for the client to modify the imageBuffer.
+	@param	taggedBufferGroup
+		Contains the decompressed frame's multiple images, if decompression was successful; otherwise, NULL.
+		IMPORTANT: The video decompressor may still be referencing the pixelBuffers returned in this
+		callback if the kVTDecodeInfo_ImageBufferModifiable flag is not set.  Unless this flag
+		is set, it is not safe to modify the returned pixelBuffers.
+	@param	presentationTimeStamp
+		The frame's presentation timestamp, which will be determined by calling
+		CMSampleBufferGetOutputPresentationTimeStamp; kCMTimeInvalid if not available.
+	@param	presentationDuration
+		The frame's presentation duration, which will be determined by calling
+		CMSampleBufferGetOutputDuration; kCMTimeInvalid if not available.
+*/
+
+typedef void (*VTDecompressionOutputMultiImageCallback)(
+		void * CM_NULLABLE decompressionOutputMultiImageRefCon,
+		void * CM_NULLABLE sourceFrameRefCon,
+		OSStatus status,
+		VTDecodeInfoFlags infoFlags,
+		CM_NULLABLE CMTaggedBufferGroupRef taggedBufferGroup,
+		CMTime presentationTimeStamp,
+		CMTime presentationDuration );
+
+/*!
+	@function	VTDecompressionSessionSetMultiImageCallback
+	@abstract	Provides a callback capable of receiving multiple images for individual DecodeFrame requests.
+	@discussion
+		The outputMultiImageCallback will be used when the video decoder outputs CMTaggedBufferGroups.
+		When installed, outputMultiImageCallback will also be used when DecodeFrame operations fail and return a nonzero status.
+		The original single-image callback will only be used in the case where the video decoder outputs a CVImageBuffer instead of a CMTaggedBufferGroup.
+		Terminology note: in multi-image decompression, a single video sample (from one CMSampleBuffer) contains a single frame (with one PTS) that is decoded to produce multiple images.
+*/
+VT_EXPORT OSStatus
+VTDecompressionSessionSetMultiImageCallback(
+	CM_NONNULL VTDecompressionSessionRef				decompressionSession,
+	CM_NONNULL VTDecompressionOutputMultiImageCallback	outputMultiImageCallback,
+	void * CM_NULLABLE									outputMultiImageRefcon) API_AVAILABLE(macosx(14.0), ios(17.0)) API_UNAVAILABLE(tvos) CF_SWIFT_UNAVAILABLE("Unavailable in Swift");
+
+#if __BLOCKS__
+/*!
+	@typedef	VTDecompressionMultiImageCapableOutputHandler
+	@abstract	Prototype for block invoked when frame decompression is complete.
+	@discussion
+		When you decode a frame, you pass in a callback block to be called
+		for that decompressed frame.  This block will not necessarily be called in display order.
+		If the VTDecompressionSessionDecodeFrameWithOutputHandler call returns an error, the block
+		will not be called.
+	@param	status
+		noErr if decompression was successful; an error code if decompression was not successful.
+	@param	infoFlags
+		Contains information about the decode operation.
+		The kVTDecodeInfo_Asynchronous bit may be set if the decode ran asynchronously.
+		The kVTDecodeInfo_FrameDropped bit may be set if the frame was dropped.
+		If the kVTDecodeInfo_ImageBufferModifiable bit is set, it is safe for the client to modify the imageBuffer.
+	@param	imageBuffer
+		Contains the decompressed frame, if decompression was successful and the CMSampleBuffer contained
+		a single image frame; otherwise, NULL.
+		IMPORTANT: The video decompressor may still be referencing the imageBuffer returned in this
+		callback if the kVTDecodeInfo_ImageBufferModifiable flag is not set.  Unless this flag
+		is set, it is not safe to modify the returned imageBuffer.
+	@param	taggedBufferGroup
+		Contains the decompressed frame's multiple images, if decompression was successful and the CMSampleBuffer
+		contained a multi-image frame; otherwise, NULL.
+		IMPORTANT: The video decompressor may still be referencing the pixelBuffers returned in this
+		callback if the kVTDecodeInfo_ImageBufferModifiable flag is not set.  Unless this flag
+		is set, it is not safe to modify the returned pixelBuffers.
+	@param	presentationTimeStamp
+		The frame's presentation timestamp; kCMTimeInvalid if not available.
+	@param	presentationDuration
+		The frame's presentation duration; kCMTimeInvalid if not available.
+ */
+typedef void (^VTDecompressionMultiImageCapableOutputHandler)(
+	OSStatus status,
+	VTDecodeInfoFlags infoFlags,
+	CM_NULLABLE CVImageBufferRef imageBuffer,
+	CM_NULLABLE CMTaggedBufferGroupRef taggedBufferGroup,
+	CMTime presentationTimeStamp,
+	CMTime presentationDuration ) CM_SWIFT_SENDABLE;
+
+/*!
+	@function	VTDecompressionSessionDecodeFrameWithMultiImageCapableOutputHandler
+	@abstract	Decompresses a video frame.
+	@discussion
+		Cannot be called with a session created with a VTDecompressionOutputCallbackRecord.
+		If the VTDecompressionSessionDecodeFrameWithOutputHandler call returns an error, the block
+		will not be called.
+	@param	session
+		The decompression session.
+	@param	sampleBuffer
+		A CMSampleBuffer containing one or more video frames.
+	@param	decodeFlags
+		A bitfield of directives to the decompression session and decoder.
+		The kVTDecodeFrame_EnableAsynchronousDecompression bit indicates whether the video decoder
+		may decompress the frame asynchronously.
+		The kVTDecodeFrame_EnableTemporalProcessing bit indicates whether the decoder may delay calls to the output callback
+		so as to enable processing in temporal (display) order.
+		If both flags are clear, the decompression shall complete and your output callback function will be called
+		before VTDecompressionSessionDecodeFrame returns.
+		If either flag is set, VTDecompressionSessionDecodeFrame may return before the output callback function is called.
+	@param	infoFlagsOut
+		Points to a VTDecodeInfoFlags to receive information about the decode operation.
+		The kVTDecodeInfo_Asynchronous bit may be set if the decode is (or was) running
+		asynchronously.
+		The kVTDecodeInfo_FrameDropped bit may be set if the frame was dropped (synchronously).
+		Pass NULL if you do not want to receive this information.
+	@param	multiImageCapableHandler
+		The block to be called when decoding the frame is completed.  If the
+		VTDecompressionSessionDecodeFrameWithMultiImageCapableOutputHandler call returns an error,
+		the block will not be called.
+ */
+VT_EXPORT OSStatus
+VTDecompressionSessionDecodeFrameWithMultiImageCapableOutputHandler(
+	CM_NONNULL VTDecompressionSessionRef		session,
+	CM_NONNULL CMSampleBufferRef				sampleBuffer,
+	VTDecodeFrameFlags							decodeFlags, // bit 0 is enableAsynchronousDecompression
+	VTDecodeInfoFlags * CM_NULLABLE				infoFlagsOut,
+	CM_NONNULL VTDecompressionMultiImageCapableOutputHandler	multiImageCapableOutputHandler )  API_AVAILABLE(macosx(14.0), ios(17.0)) API_UNAVAILABLE(tvos) CF_REFINED_FOR_SWIFT;
+#endif // __BLOCKS__
+
 #pragma pack(pop)
     
 #if defined(__cplusplus)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTErrors.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTErrors.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTErrors.h	2023-03-07 23:46:08
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTErrors.h	2023-05-31 08:45:33
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
  
-    Copyright 2006-2021 Apple Inc. All rights reserved.
+    Copyright 2006-2022 Apple Inc. All rights reserved.
   
 */
 
@@ -64,6 +64,9 @@
 	kVTVideoDecoderReferenceMissingErr		= -17694,
 	kVTVideoDecoderCallbackMessagingErr		= -17695,
 	kVTVideoDecoderUnknownErr				= -17696,
+	kVTFigAudioSessionInitializationErr		= -17697,
+    kVTVideoEncoderMVHEVCVideoLayerIDsMismatchErr = -17698,
+	kVTCouldNotOutputTaggedBufferGroupErr	= -17699,
 };
 
 /*!
@@ -93,11 +96,28 @@
 	kVTDecodeFrame_EnableTemporalProcessing = 1<<3,
 };
 
-// Informational status for decoding -- non-error flags 
+/*!
+	@enum		VTDecodeInfoFlags
+	@abstract	Informational status for decoding -- non-error flags
+
+	@constant	kVTDecodeInfo_Asynchronous
+		The kVTDecodeInfo_Asynchronous bit may be set if the decode ran asynchronously.
+	@constant	kVTDecodeInfo_FrameDropped
+		The kVTDecodeInfo_FrameDropped bit may be set if the frame was dropped.
+	@constant	kVTDecodeInfo_ImageBufferModifiable
+		If the kVTDecodeInfo_ImageBufferModifiable bit is set, it is safe for the client to modify the imageBuffer.
+	@constant	kVTDecodeInfo_SkippedLeadingFrameDropped
+		The kVTDecodeInfo_SkippedLeadingFrameDropped may be set if a leading frame after a sync frame is dropped.
+		This can happen when a seek to a sync frame is initiated and, due to frame reordering, there are leading
+		frames following the sync frame that cannot be decoded due to missing references.  Dropping these frames 
+		has no impact to playback since the non-decodeable frames will not be rendered.
+		If kVTDecodeInfo_SkippedLeadingFrameDropped is set, kVTDecodeInfo_FrameDropped will also be set.
+*/
 typedef CF_OPTIONS(UInt32, VTDecodeInfoFlags) {
 	kVTDecodeInfo_Asynchronous = 1UL << 0,
 	kVTDecodeInfo_FrameDropped = 1UL << 1,
 	kVTDecodeInfo_ImageBufferModifiable = 1UL << 2,
+	kVTDecodeInfo_SkippedLeadingFrameDropped = 1UL << 3,
 };
 
 // Informational status for encoding -- non-error flags 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameSilo.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameSilo.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameSilo.h	2023-03-09 23:53:05
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameSilo.h	2023-05-27 21:04:18
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
 	
-	Copyright © 2012-2018 Apple Inc. All rights reserved.
+	Copyright © 2012-2023 Apple Inc. All rights reserved.
 	
 	A VTFrameSilo stores a large number of sample buffers, as produced by a multi-pass compression session.
 */
@@ -41,7 +41,7 @@
 		do not expect to get identical object pointers back.
 */
 
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTFrameSilo *VTFrameSiloRef; // a CF type, call CFRetain and CFRelease
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTFrameSilo *VTFrameSiloRef CM_SWIFT_NONSENDABLE; // a CF type, call CFRetain and CFRelease
 
 VT_EXPORT CFTypeID VTFrameSiloGetTypeID(void) API_AVAILABLE(macosx(10.10), ios(8.0), tvos(10.2));
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTMultiPassStorage.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTMultiPassStorage.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTMultiPassStorage.h	2023-03-09 23:53:06
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTMultiPassStorage.h	2023-05-31 04:53:34
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
 	
-	Copyright 2012-2013 Apple Inc. All rights reserved.
+	Copyright 2012-2023 Apple Inc. All rights reserved.
 	
 	Video Toolbox object for storage of multi-pass video encoding metadata.
 */
@@ -35,7 +35,7 @@
 		VTMultiPassStorageRef is a CF type, so call CFRelease and CFRetain to manage objects of this type.
 		The data stored in the VTMultiPassStorage is private to the video encoder.
 */
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTMultiPassStorage*  VTMultiPassStorageRef; // a CF type, call CFRetain and CFRelease
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTMultiPassStorage*  VTMultiPassStorageRef CM_SWIFT_NONSENDABLE; // a CF type, call CFRetain and CFRelease
 
 VT_EXPORT CFTypeID VTMultiPassStorageGetTypeID(void) API_AVAILABLE(macosx(10.10), ios(8.0), tvos(10.2));
 	
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelRotationSession.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelRotationSession.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelRotationSession.h	2023-03-09 23:53:06
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelRotationSession.h	2023-05-31 03:39:16
@@ -3,7 +3,7 @@
  
 	Framework:  VideoToolbox
  
-	Copyright 2021 Apple Inc. All rights reserved.
+	Copyright 2021-2023 Apple Inc. All rights reserved.
  
 */
 
@@ -36,7 +36,7 @@
 		and release your object reference.
  */
 
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTPixelRotationSession*  VTPixelRotationSessionRef;
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTPixelRotationSession*  VTPixelRotationSessionRef CM_SWIFT_NONSENDABLE;
 
 /*!
 	@function	VTPixelRotationSessionCreate
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelTransferSession.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelTransferSession.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelTransferSession.h	2023-03-09 19:16:45
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTPixelTransferSession.h	2023-05-27 21:04:18
@@ -3,7 +3,7 @@
 	
 	Framework:  VideoToolbox
  
-    Copyright 2006-2013 Apple Inc. All rights reserved.
+    Copyright 2006-2023 Apple Inc. All rights reserved.
   
 	Video Toolbox client API for transferring images between CVPixelBuffers.
 */
@@ -41,7 +41,7 @@
 		to tear it down and CFRelease to release your object reference.
  */
 
-typedef struct CM_BRIDGED_TYPE(id) OpaqueVTPixelTransferSession*  VTPixelTransferSessionRef;
+typedef struct CM_BRIDGED_TYPE(id) OpaqueVTPixelTransferSession*  VTPixelTransferSessionRef CM_SWIFT_NONSENDABLE;
 
 /*!
 	@function	VTPixelTransferSessionCreate
Clone this wiki locally