Skip to content

VideoToolbox macOS xcode16.3 b1

Rolf Bjarne Kvinge edited this page Feb 24, 2025 · 1 revision

#VideoToolbox.framework

diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h	2024-11-10 09:53:45
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTCompressionProperties.h	2025-02-08 03:28:51
@@ -1356,11 +1356,9 @@
 	@constant	kVTCompressionPropertyKey_SpatialAdaptiveQPLevel
 	@abstract
 		Control spatial adaptation of the quantization parameter (QP) based on per-frame statistics.
-		If set to kVTQPModulationLevel_Disable, spatial QP adaptation is not applied based on per-frame statistics.
-		If set to kVTQPModulationLevel_Default, video encoder is allowed to apply spatial QP adaptation for each macro block (or coding unit) within a video frame.
-		QP adaptation is based on spatial characteristics of a frame and the level of spatial QP adaptation is decided internally by the rate controller.
-	@discussion
-		This property must be disabled when low latency rate control is enabled. Support for this property is codec dependent.
+		If set to kVTAdaptiveQPLevel_Disable, spatial QP adaptation is not applied based on per-frame statistics.
+		If set to kVTAdaptiveQPLevel_Default, video encoder is allowed to apply spatial QP adaptation for each macro block (or coding unit) within a video frame.
+ 		QP adaptation is based on spatial characteristics of a frame and the level of spatial QP adaptation is decided internally by the rate controller.
 */
 VT_EXPORT const CFStringRef kVTCompressionPropertyKey_SpatialAdaptiveQPLevel API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, tvos, watchos, visionos); // Read/write, CFNumberRef, Optional
 enum {
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor.h	2025-02-08 04:03:22
@@ -0,0 +1,119 @@
+/*
+	File:  VTFrameProcessor.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright © 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSOR_H
+#define VTFRAMEPROCESSOR_H
+
+#import <VideoToolbox/VTFrameProcessorConfiguration.h>
+#import <VideoToolbox/VTFrameProcessorParameters.h>
+#import <VideoToolbox/VTFrameProcessorFrame.h>
+#import <VideoToolbox/VTFrameProcessorErrors.h>
+#import <VideoToolbox/VTFrameProcessor_MotionBlur.h>
+#import <VideoToolbox/VTFrameProcessor_FrameRateConversion.h>
+#import <VideoToolbox/VTFrameProcessor_OpticalFlow.h>
+#import <Metal/Metal.h>
+
+/*!
+	@header VTFrameProcessor.h
+	@abstract
+		This header defines the interface for a VTrameProcessor object, an interface which is used to access a range of different video processing features.
+		
+	@discussion
+		The VTrameProcessor gives access to a set of powerful video procesing implemenation suitable for different use csaes.
+		Each processor implementation is defined by a Configuration object (conforming to the VTFrameProcessorConfiguration protocol), used to pass initialization and configuration parameters for the processor and a Parameter object (conforming to the VTFrameProcessorParameters protocol) which provides the parameters for each individual processing operation.  These Configuration and Parameters objects for each implementation are defined in a processor-specific header file.
+		The following processors are available:
+			- VTFrameProcessor_MotionBlur.h: a high quality motion blur processor suitable for professional video applications.  May not be suitable for realtime scenarios.
+			- VTFrameProcessor_FrameRateconversion.h: a high quality Frame Interpolation processor suitable for professional video applications.  May not be suitable for realtime scenarios.
+			- VTFrameProcessor_OpticalFlow.h: a processor which generates formward and backward OpticalFlow between two source frames.
+*/
+
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/*!
+	@class		VTFrameProcessor
+	@abstract	Creates a new VTFrameProcessor for the configured video effect
+	@discussion	The VTFrameProcessor class is the main class to perform frame processing. Users can specify a video effect by passing a VTFrameProcessorConfiguration based object to the startSessionWithConfiguration call. Once a session is created, the processWithParameters method is called in a loop to process the frames one by one. Once all the frames are processed, endSession needs to called to finish all pending processing.  The caller needs to ensure that all buffers passed to the processWithParameters interface are unmodified (inclduing attachments) until the function returns or the callback is received in the case of asynchronous mode.
+ */
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+@interface VTFrameProcessor : NSObject
+
+- (instancetype) init;
+
+/*!
+	@method		startSessionWithConfiguration:error
+	@abstract	Starts a new session and configures the processor pipeline.
+	@param		configuration
+		A VTFrameProcessorConfiguration based object corresponding to the video effect that will be applied in the subsequent processWithParameters calls.
+	@param		error
+		Will contain error information if any. You may specify NULL for this parameter if you do not want the error information.
+ */
+
+- (BOOL) startSessionWithConfiguration:(id<VTFrameProcessorConfiguration>)configuration
+                                 error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(startSession(configuration:));
+
+/*!
+	@method		processWithParameters:error
+	@abstract	Synchronously performs the effect specified in startSessionWithConfigurations.
+	@discussion	Frame level settings and frame level input/output parameters are passed by using the respective VTFrameProcessorParameters for the effect that VTFrameProcessor is configured for.
+	@param		parameters
+		A VTFrameProcessorParameters based object to specify additional frame based parameters to be used during processing. it needs to match the configuration type used during start session.
+	@param		error
+		Will contain error information if any. You may specify NULL for this parameter if you do not want the error information.
+ */
+
+- (BOOL) processWithParameters:(id<VTFrameProcessorParameters>)parameters
+                         error:(NSError * _Nullable * _Nullable)error NS_SWIFT_UNAVAILABLE("use the async version processWithParameters:completionHandler instead");
+
+/*!
+	 @method	processWithParameters:completionHandler
+	 @abstract	Asynchronously performs the effect specified in startSessionWithConfigurations.
+	 @param		parameters
+		A VTFrameProcessorParameters based object to specify additional frame based parameters to be used during processing. it needs to match the configuration type used during start session.
+	 @param		completionHandler
+		This completion handler will be called when frame processing in competed.  The completion handler will receive the same parameters object that was provided tot he original call, as well as an NSError which will contain an error code if processing was not successful.
+ */
+
+- (void) processWithParameters:(id<VTFrameProcessorParameters>)parameters
+             completionHandler:(void (^)(id<VTFrameProcessorParameters> , NSError * _Nullable) )completionHandler NS_SWIFT_NAME(process(parameters:completionHandler:));
+
+
+/*!
+	@method		processWithCommandBuffer:parameters:completionHandler
+	@abstract	This API provides a Metal API friendly version of processWithParameters.
+	@discussion	This function allows clients to add the effect to an existing Metal command buffer. This can be used by clients that have an existing Metal pipeline and want to add this effect to it. Note: this function will wait until all previously inserted tasks in the command buffer finished before running. Tasks inserted after the processWithCommandBuffer will run after the effect is applied. Note also that this is an asynchronous call
+	@param		commandBuffer
+		An existing Metal command buffer where the frame processing will be inserted.
+	@param		parameters
+		A VTFrameProcessorParameters based object to specify additional frame based parameters to be used during processing. it needs to match the configuration type used during start session.
+	@param		completionHandler
+		This completion handler will be called when frame processing in competed.  The completion handler will receive the same parameters object that was provided tot he original call, as well as an NSError which will contain an error code if processing was not successful.
+*/
+
+- (void) processWithCommandBuffer:(id <MTLCommandBuffer>) commandBuffer
+                       parameters:(id<VTFrameProcessorParameters>)parameters
+                completionHandler:(void (^)(id<VTFrameProcessorParameters> , NSError * _Nullable) )completionHandler
+                    NS_SWIFT_NAME(process(commandBuffer:parameters:completionHandler:));
+
+
+
+/*!
+	@method		endSession
+	@abstract	Performs all necessary tasks to end the session. After this call completes, no new frames can be processed unless startSessionWithConfigurations is called again.
+*/
+
+- (void) endSession;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#endif // VTFRAMEPROCESSOR_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorConfiguration.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorConfiguration.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorConfiguration.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorConfiguration.h	2025-02-08 04:03:22
@@ -0,0 +1,87 @@
+/*
+	File:  VTFrameProcessorConfiguration.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright © 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSORCONFIGURATION_H
+#define VTFRAMEPROCESSORCONFIGURATION_H
+
+#import <CoreMedia/CMFormatDescription.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability)
+
+/*!
+	@protocol VTFrameProcessorConfiguration
+	@abstract The VTFrameProcessorConfiguration protocol describes the configuration of a processor to be used during a video processing session.
+ 
+	@discussion VTFrameProcessorConfiguration protocol conformance is used to start an frame processing session.  These properties can be  queried on an implementation conforming to VTFrameProcessorConfiguration without starting a session.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+NS_SWIFT_SENDABLE
+@protocol VTFrameProcessorConfiguration <NSObject>
+
+@required
+
+/*!
+	@property processorSupported
+	@abstract Returns a Boolean indicating whether the processor supported on the current config.
+*/
+@property (class, nonatomic, readonly) Boolean processorSupported;
+
+/*!
+	@property frameSupportedPixelFormats
+	@abstract Returns a list of supported pixel formats for the current configuration
+*/
+
+@property (nonatomic, readonly) NSArray<NSNumber *> * frameSupportedPixelFormats;
+
+/*!
+	@property sourcePixelBufferAttributes
+	@abstract Returns a dictionary of CVPixelBuffer attributes which source and reference frames passed to the processor must conform to.
+*/
+
+@property (nonatomic, readonly) NSDictionary * sourcePixelBufferAttributes;
+
+/*!
+	@property destinationPixelBufferAttributes
+	@abstract Returns a dictionary of CVPixelBuffer attributes which output frames passed to the processor must conform to.
+*/
+
+@property (nonatomic, readonly) NSDictionary * destinationPixelBufferAttributes;
+
+@optional
+
+/*!
+	@property nextFrameCount
+	@abstract returns the number of "next" frames that this processor requires for processing.
+*/
+@property (nonatomic, readonly) NSInteger nextFrameCount;
+
+/*!
+	@property previousFrameCount
+	@abstract returns the number of "previous" frames that this processor requires for processing.
+*/
+@property (nonatomic, readonly) NSInteger previousFrameCount;
+
+/*!
+	@property maximumDimensions
+	@abstract returns the maximum dimension for a sourceFrame for the processor
+*/
+@property (class, nonatomic, readonly) CMVideoDimensions maximumDimensions;
+
+/*!
+	@property minimumDimensions
+	@abstract returns the minimum dimension for a sourceFrame for the processor
+*/
+@property (class, nonatomic, readonly) CMVideoDimensions minimumDimensions;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability)
+
+#endif // VTFRAMEPROCESSORPARAMETERS_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorErrors.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorErrors.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorErrors.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorErrors.h	2025-02-08 04:03:22
@@ -0,0 +1,68 @@
+/*
+	File:  VTFrameProcessorErrors.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright © 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSORERRORS_H
+#define VTFRAMEPROCESSORERRORS_H
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+
+extern NSErrorDomain _Nonnull const VTFrameProcessorErrorDomain;
+
+/*!
+	@enum       	VTFrameProcessorError
+	@abstract		VTFrameProcessor  error codes.
+	@discussion		These error codes are returned in the NSError object in the event a method fails.
+	@constant		VTFrameProcessorUnknownError
+		Returned if the processor failed for unknown reason.
+	@constant		VTFrameProcessorUnsupportedResolution
+		Returned if the processor failed due to an unsupported resolution.
+	@constant		VTFrameProcessorSessionNotStarted
+		Returned if the session is used to process frames without being started.
+	@constant		VTFrameProcessorSessionAlreadyActive
+		Returned if a startSessionWithConfiguration call is made on a session which has already been started.
+	@constant		VTFrameProcessorFatalError
+		Returned if a fatal error is encoutnered during processing.
+	@constant		VTFrameProcessorSessionLevelError
+		Returned if processing failed and current session should be stopped.
+	@constant		VTFrameProcessorInitializationFailed
+		Returned if the session failed to initialize the processing pipeline.
+	@constant		VTFrameProcessorUnsupportedInput
+		Returned to indicate that one or more frames is in a format which is not supproted by the processor.
+	@constant		VTFrameProcessorMemoryAllocationFailure
+		Returned if the session or processor is unable to allocate required memory.
+	@constant		VTFrameProcessorRevisionNotSupported
+		Returned if the specifed revision is not supported by the configured processor.
+	@constant		VTFrameProcessorProcessingError
+		Returned if the processor encountered an issue preventing it from processing the provided frame.
+	@constant		VTFrameProcessorInvalidParameterError
+		Returned if one of the provided parameters is not valid.
+	@constant		VTFrameProcessorInvalidFrameTiming
+		Returned if one of the provided VTFrameProcessorFrame objects has a PTS which is not supported by the processor, either invalid or out-of-order.
+*/
+
+
+typedef NS_ERROR_ENUM(VTFrameProcessorErrorDomain, VTFrameProcessorError)
+{
+	VTFrameProcessorUnknownError				= -19730,
+	VTFrameProcessorUnsupportedResolution		= -19731,
+	VTFrameProcessorSessionNotStarted			= -19732,
+	VTFrameProcessorSessionAlreadyActive		= -19733,
+	VTFrameProcessorFatalError					= -19734,
+	VTFrameProcessorSessionLevelError			= -19735,
+	VTFrameProcessorInitializationFailed		= -19736,
+	VTFrameProcessorUnsupportedInput			= -19737,
+	VTFrameProcessorMemoryAllocationFailure		= -19738,
+	VTFrameProcessorRevisionNotSupported		= -19739,
+	VTFrameProcessorProcessingError				= -19740,
+	VTFrameProcessorInvalidParameterError		= -19741,
+	VTFrameProcessorInvalidFrameTiming			= -19742,
+};
+
+#endif // VTFRAMEPROCESSORERRORS_H
+
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorFrame.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorFrame.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorFrame.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorFrame.h	2025-02-08 04:03:22
@@ -0,0 +1,96 @@
+/*
+	File:  VTFrameProcessorFrame.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright © 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSORFRAME_H
+#define VTFRAMEPROCESSORFRAME_H
+
+#import <CoreVideo/CoreVideo.h>
+#import <CoreMedia/CMTime.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/*!
+	@class     VTFrameProcessorFrame
+	@abstract  Helper class to wrap video frames that will be sent to the processor, as source frames, reference frames, or output frames.  Instances retain the buffer backing them.
+*/
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+
+@interface VTFrameProcessorFrame : NSObject
+
+/*!
+	@method    initWithBuffer
+	@abstract  initialize class with a CVPixelBufferRef and a presentation time. Buffer is retained.  Returns NULL if no CVPixelBuffer is provided or CVPixelBuffer is not IOSurface backed.
+	@param     buffer The CVPixelBufferRef that this VTFrameProcessorFrame will wrap.  Must be non-NULL and IOSurface backed.
+	@param     presentationTimeStamp   The presentation timestamp of the buffer.
+*/
+- (nullable instancetype)initWithBuffer:(CVPixelBufferRef)buffer
+         presentationTimeStamp:(CMTime)presentationTimeStamp;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/*!
+	@property buffer
+	@abstract Returns the CVPixelBufferRef  that was provided when the object was initialized with.
+*/
+
+@property(nonatomic,readonly) CVPixelBufferRef buffer;
+
+/*!
+	@property presentationTimeStamp
+	@abstract Returns the presentation timestamp that was provided when the object was initialized with
+*/
+@property(nonatomic,readonly) CMTime presentationTimeStamp;
+
+
+@end
+
+
+/*!
+	@class     VTFrameProcessorOpticalFlow
+	@abstract  Helper class to wrap optical flow that will be sent to the processor.   Instances retain the buffers backing them.
+*/
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+
+@interface VTFrameProcessorOpticalFlow : NSObject
+
+/*!
+	@method    initWithForwardFlow
+	@abstract  initialize class with forward and backward optical flow CVPixelBufferRefs. Instances retain the buffers backing them. Returns NULL if a NULL CVPixelBuffer is provided or CVPixelBuffers are not IOSurface backed.
+	@param     forwardFlow CVPixelBufferRef that contains forward optical flow. Must be non-NULL and IOSurface backed.
+	@param     backwardFlow CVPixelBufferRef that contains backward optical flow. Must be non-NULL and IOSurface backed.
+*/
+- (nullable instancetype)initWithForwardFlow:(CVPixelBufferRef)forwardFlow
+                       backwardFlow:(CVPixelBufferRef)backwardFlow;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/*!
+	@property forwardFlow
+	@abstract Returns the forward optical flow CVPixelBufferRef that was provided when the object was initialized.
+*/
+
+@property(nonatomic, readonly) CVPixelBufferRef forwardFlow;
+
+/*!
+	@property backwardFlow
+	@abstract Returns the backward optical flow CVPixelBufferRef that was provided when the object was initialized.
+*/
+
+@property(nonatomic, readonly) CVPixelBufferRef backwardFlow;
+
+@end
+
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#endif // VTFRAMEPROCESSORFRAME_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorParameters.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorParameters.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorParameters.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessorParameters.h	2025-02-08 04:03:22
@@ -0,0 +1,39 @@
+/*
+	File:  VTFrameProcessorParameters.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright © 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+ 
+#ifndef VTFRAMEPROCESSORPARAMETERS_H
+#define VTFRAMEPROCESSORPARAMETERS_H
+
+#import <VideoToolbox/VTFrameProcessorFrame.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability)
+
+/*!
+@protocol VTFrameProcessorParameters
+@abstract VTFrameProcessorParameters is the base protocol for input and output processing parameters for a VTFrameProcessor processing implementation..  An instance of a class corresponding to this protocol is passed to processFrameWithParameters calls, and in async versions of those APIs, the same instance is returned in the completion.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+@protocol VTFrameProcessorParameters <NSObject>
+
+@required
+
+/**
+ * @property sourceFrame
+ * @abstract VTFrameProcessorFrame that contains the current source frame to be used for all processing features. Must be non-null
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * sourceFrame;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability)
+
+#endif // VTFRAMEPROCESSORPARAMETERS_H
+
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_FrameRateConversion.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_FrameRateConversion.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_FrameRateConversion.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_FrameRateConversion.h	2025-02-08 04:03:22
@@ -0,0 +1,242 @@
+/*
+	File:  VTFrameProcessor_FrameRateConversion.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSOR_FRAMERATECONVERSION_H
+#define VTFRAMEPROCESSOR_FRAMERATECONVERSION_H
+
+#import <VideoToolbox/VTFrameProcessorConfiguration.h>
+#import <VideoToolbox/VTFrameProcessorParameters.h>
+#import <VideoToolbox/VTFrameProcessorFrame.h>
+
+/*!
+    @brief Interfaces for creating and using a FrameRateConversion processor
+
+    @details The VTFrameRateConversion processor Configuration and Parameters objects are used with the VTFrameProcessor interface defined in VTFrameProcessor.h.
+*/
+
+/*!
+ @brief Quality prioritization levels to favor quality or performance.
+*/
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTFrameRateConversionConfigurationQualityPrioritization) {
+	VTFrameRateConversionConfigurationQualityPrioritizationNormal = 1,
+	VTFrameRateConversionConfigurationQualityPrioritizationQuality = 2,
+} NS_SWIFT_NAME(VTFrameRateConversionConfiguration.QualityPrioritization);
+
+/*!
+ @brief List of existing algorithm revisions with the highest being the latest. Clients can read defaultRevision property to find the default revision.
+ */
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTFrameRateConversionConfigurationRevision) {
+	VTFrameRateConversionConfigurationRevision1           = 1,    // revision 1
+} NS_SWIFT_NAME(VTFrameRateConversionConfiguration.Revision);
+
+/*!
+ @brief Hint to let the processor know whether frames are being submitted in presenatation sequence, allowing performance optimizations based on previous processing requests
+ */
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTFrameRateConversionParametersSubmissionMode) {
+	VTFrameRateConversionParametersSubmissionModeRandom             = 1,    // Frames are submitted in non-sequential order
+	VTFrameRateConversionParametersSubmissionModeSequential         = 2,    // Frames are submitted sequentially following presentation time order
+} NS_SWIFT_NAME(VTFrameRateConversionParameters.SubmissionMode);
+
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+
+/*!
+ @class VTFrameRateConversionConfiguration
+ @abstract Configuration that is used to set up the FrameRateConversion Processor.
+
+ @discussion This configuration enables the FrameRateConversion on a VTFrameProcesing session.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+NS_SWIFT_SENDABLE __attribute__((objc_subclassing_restricted))
+@interface VTFrameRateConversionConfiguration : NSObject <VTFrameProcessorConfiguration>
+
+#pragma mark --- init function(s).
+/*!
+ @abstract Creates a new VTFrameRateConversionConfiguration with specified flow width and height.
+
+ @param frameWidth    Width of source frame in pixels. Maximum value is 8192 for macOS, and 4096 for iOS.
+
+ @param frameHeight   Height of source frame in pixels. Maximum value is 4320 for macOS, and 2160 for iOS.
+
+ @param usePrecomputedFlow  Boolean value to indicate that Optical Flow will be provided by the user, if false this configuration will compute the optical flow on the fly.
+
+ @param qualityPrioritization Used to control quality and performance levels. See VEFrameRateConversionConfigurationQualityPrioritization for more info.
+ 
+ @param revision The specific algorithm or configuration revision that is to be used to perform the request.
+ 
+*/
+- (instancetype)initWithFrameWidth:(NSInteger)frameWidth
+					   frameHeight:(NSInteger)frameHeight
+				usePrecomputedFlow:(BOOL)usePrecomputedFlow
+			 qualityPrioritization:(VTFrameRateConversionConfigurationQualityPrioritization)qualityPrioritization
+						  revision:(VTFrameRateConversionConfigurationRevision)revision;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property frameWidth
+ * @abstract Width of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameWidth;
+
+/**
+ * @property frameHeight
+ * @abstract Height of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameHeight;
+
+/**
+ * @property usePrecomputedFlow
+ * @abstract Indicates that caller will provide optical flow.
+*/
+@property (nonatomic, readonly) BOOL usePrecomputedFlow;
+
+/**
+ * @property qualityPrioritization
+ * @abstract parameter used to control quality and performance levels. See VTFrameRateConversionConfigurationQualityPrioritization for more info.
+*/
+@property (nonatomic, readonly) VTFrameRateConversionConfigurationQualityPrioritization qualityPrioritization;
+
+/*!
+ @property revision
+ @abstract The specific algorithm or configuration revision that is to be used to perform the request.
+ */
+@property (nonatomic, readonly) VTFrameRateConversionConfigurationRevision revision;
+
+/*!
+ @property supportedRevisions
+ @abstract Provides the collection of currently-supported algorithm or configuration revisions for the class of configuration.
+ @discussion This property allows clients to introspect at runtime what revisions are available for each configuration.
+ */
+@property (class, nonatomic, readonly) NSIndexSet* supportedRevisions;
+
+/*!
+ @property defaultRevision
+ @abstract Provides the default revision of a particular algorithm or configuration.
+ */
+@property (class, nonatomic, readonly) VTFrameRateConversionConfigurationRevision defaultRevision;
+
+/**
+ * @property frameSupportedPixelFormats
+ * @abstract list of source frame supported pixel formats for current configuration
+ */
+
+@property (nonatomic, readonly) NSArray<NSNumber *> * frameSupportedPixelFormats;
+
+/**
+ * @property sourcePixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as source frames and reference frames.
+*/
+@property (nonatomic, readonly) NSDictionary * sourcePixelBufferAttributes;
+
+/**
+ * @property destinationPixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as destination frames.
+*/
+@property (nonatomic, readonly) NSDictionary * destinationPixelBufferAttributes;
+
+/*!
+	@property processorSupported
+	@abstract reports that this processor is  supported
+*/
+@property (class, nonatomic, readonly) Boolean processorSupported;
+
+@end
+
+
+/*!
+ @class VTFrameRateConversionParameters
+ @abstract VTFrameRateConversionParameters object contains both input and output parameters needed to run the FrameRateConversion processor on a frame. This object is used in the processWithParameters call of VTFrameProcessor class. The output parameter for this class is destinationFrame where the output frame is returned (as VTFrameProcessorMutableFrame) back to the caller function once the processWithParameters completes.
+ 
+ @discussion VTFrameRateConversionParameters are frame level parameters.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+
+@interface VTFrameRateConversionParameters : NSObject <VTFrameProcessorParameters>
+
+/*!
+ @abstract Creates a new VTFrameRateConversionParameters .
+
+ @param sourceFrame Current source frame. Must be non nil.
+  
+ @param nextFrame Next source frame in presentation time order. For the last frame this can be set to nil.
+  
+ @param opticalFlow Optional VTFrameProcessorOpticalFlow object that contains forward and backward optical flow with next frame. Only needed if optical flow is pre-computed. For the first frame this will always be nil.
+ 
+ @param interpolationPhase Array of float numbers to indicate at what intervals to insert a frame between current and next frame. Array size indicates how many frames to interpolate and needs to match destinationFrames size, one interval for each destination frame. Float number values should be between 0 and 1, e.g to insert one frame in the middle a value of 0.5 can be used.
+
+ @param submissionMode Set to VTFrameRateConversionParametersSubmissionModeSequential to indicate that current submission follow presentation time order without jump or skip when compared to previous submission. VTFrameRateConversionParametersSubmissionModeSequential will yield better performance. Set to  VTFrameRateConversionParametersSubmissionModeRandom to indicate a skip or a jump in frame sequence. If VTFrameRateConversionParametersSubmissionModeRandom is set internal cache will be cleared during processWithParameters call.
+ 
+ @param destinationFrames Caller-allocated NSArray of VTFrameProcessorFrame that contains  pixel buffers that will receive the results.  Must contain the same number of elements as interpolationPhase NSArray.
+*/
+- (instancetype) initWithSourceFrame:(VTFrameProcessorFrame *)sourceFrame
+                           nextFrame:(VTFrameProcessorFrame * _Nullable)nextFrame
+						 opticalFlow:(VTFrameProcessorOpticalFlow * _Nullable)opticalFlow
+				  interpolationPhase:(NSArray<NSNumber *> *) interpolationPhase
+					  submissionMode:(VTFrameRateConversionParametersSubmissionMode)submissionMode
+				   destinationFrames:(NSArray<VTFrameProcessorFrame *> *)destinationFrame NS_REFINED_FOR_SWIFT;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property sourceFrame
+ * @abstract sourceFrame Current source frame. Must be non nil
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * sourceFrame;
+
+/**
+ * @property nextFrame
+ * @abstract Next source frame in presentation time order. For the last frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorFrame * nextFrame;
+
+/**
+ * @property opticalFlow
+ * @abstract Optional VTFrameProcessorReadOnlyOpticalFlow object that contains forward and backward optical flow with next frame. Only needed if optical flow is pre-computed. For the last frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorOpticalFlow * opticalFlow;
+
+/**
+ * @property interpolationPhase
+ * @abstract Array of float numbers to indicate at what intervals to insert a frame between current and next frame. Array size indicates how many frames to interpolate and needs to match destinationFrames size, one interval for each destination frame. Float number values should be between 0 and 1, e.g to insert one frame in the middle a value of 0.5 can be used.
+*/
+@property (nonatomic, readonly) NSArray<NSNumber *> * interpolationPhase NS_REFINED_FOR_SWIFT;
+
+/**
+ * @property submissionMode
+ * @abstract A VTFrameRateConversionParametersSubmissionMode value describing the processing request in this Parameters object .
+*/
+@property (nonatomic, readonly) VTFrameRateConversionParametersSubmissionMode submissionMode;
+
+
+/**
+ * @property destinationFrames
+ * @abstract Caller-allocated NSArray of VTFrameProcessorFrame that contains  pixel buffers that will receive the results.  Must contain the same number of elements as interpolationPhase NSArray.
+*/
+
+@property(nonatomic, readonly) NSArray<VTFrameProcessorFrame *> * destinationFrames;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#endif // VTFRAMEPROCESSOR_FRAMERATECONVERSION_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_MotionBlur.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_MotionBlur.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_MotionBlur.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_MotionBlur.h	2025-02-08 04:03:22
@@ -0,0 +1,259 @@
+/*
+	File:  VTFrameProcessor_MotionBlur.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSOR_MOTIONBLUR_H
+#define VTFRAMEPROCESSOR_MOTIONBLUR_H
+
+#import <VideoToolbox/VTFrameProcessorConfiguration.h>
+#import <VideoToolbox/VTFrameProcessorParameters.h>
+#import <VideoToolbox/VTFrameProcessorFrame.h>
+
+/*!
+    @brief Interfaces for creating and using a MotionBlur processor
+
+    @details The VTMotionBlur processor Configuration and Parameters objects are used with the VTFrameProcessor interface defined in VTFrameProcessor.h.
+*/
+
+/*!
+ @brief Quality prioritization levels to favor quality or performance.
+*/
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTMotionBlurConfigurationQualityPrioritization) {
+	VTMotionBlurConfigurationQualityPrioritizationNormal = 1,
+	VTMotionBlurConfigurationQualityPrioritizationQuality = 2,
+} NS_SWIFT_NAME(VTMotionBlurConfiguration.QualityPrioritization);
+
+/*!
+ @brief List of existing algorithm revisions with the highest being the latest. Clients can read defaultRevision property to find the default revision.
+ */
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTMotionBlurConfigurationRevision) {
+	VTMotionBlurConfigurationRevision1           = 1,    // revision 1
+} NS_SWIFT_NAME(VTMotionBlurConfiguration.Revision);
+
+/*!
+ @brief Hint to let the processor know whether frames are being submitted in presenatation sequence, allowing performance optimizations based on previous processing requests
+ */
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTMotionBlurParametersSubmissionMode) {
+	VTMotionBlurParametersSubmissionModeRandom             = 1,    // Frames are submitted in non-sequential order
+	VTMotionBlurParametersSubmissionModeSequential         = 2,    // Frames are submitted sequentially following presentation time order
+} NS_SWIFT_NAME(VTMotionBlurParameters.SubmissionMode);
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/*!
+ @class VTMotionBlurConfiguration
+ @abstract Configuration that is used to set up the MotionBlur Processor.
+
+ @discussion This configuration enables the MotionBlur on a VTFrameProcesing session.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+NS_SWIFT_SENDABLE __attribute__((objc_subclassing_restricted))
+@interface VTMotionBlurConfiguration : NSObject <VTFrameProcessorConfiguration>
+
+#pragma mark --- init function(s).
+/*!
+ @abstract Creates a new VTMotionBlurConfiguration with specified flow width and height.
+
+ @param frameWidth    Width of source frame in pixels. Maximum value is 8192 for macOS, and 4096 for iOS.
+
+ @param frameHeight   Height of source frame in pixels. Maximum value is 4320 for macOS, and 2160 for iOS.
+
+ @param usePrecomputedFlow  Boolean value to indicate that Optical Flow will be provided by the user, if false this configuration will compute the optical flow on the fly.
+
+ @param qualityPrioritization Used to control quality and performance levels. See VEMotionBlurConfigurationQualityPrioritization for more info.
+ 
+ @param revision The specific algorithm or configuration revision that is to be used to perform the request.
+ 
+*/
+- (instancetype)initWithFrameWidth:(NSInteger)frameWidth
+					   frameHeight:(NSInteger)frameHeight
+				usePrecomputedFlow:(BOOL)usePrecomputedFlow
+			 qualityPrioritization:(VTMotionBlurConfigurationQualityPrioritization)qualityPrioritization
+						  revision:(VTMotionBlurConfigurationRevision)revision;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property frameWidth
+ * @abstract Width of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameWidth;
+
+/**
+ * @property frameHeight
+ * @abstract Height of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameHeight;
+
+/**
+ * @property usePrecomputedFlow
+ * @abstract Indicates that caller will provide optical flow.
+*/
+@property (nonatomic, readonly) BOOL usePrecomputedFlow;
+
+/**
+ * @property qualityPrioritization
+ * @abstract parameter used to control quality and performance levels. See VEMotionBlurConfigurationQualityPrioritization for more info.
+*/
+@property (nonatomic, readonly) VTMotionBlurConfigurationQualityPrioritization qualityPrioritization;
+
+/*!
+ @property revision
+ @abstract The specific algorithm or configuration revision that is to be used to perform the request.
+ */
+@property (nonatomic, readonly) VTMotionBlurConfigurationRevision revision;
+
+/*!
+ @property supportedRevisions
+ @abstract Provides the collection of currently-supported algorithm or configuration revisions for the class of configuration.
+ @discussion This property allows clients to introspect at runtime what revisions are available for each configuration.
+ */
+@property (class, nonatomic, readonly) NSIndexSet* supportedRevisions;
+
+/*!
+ @property defaultRevision
+ @abstract Provides the default revision of a particular algorithm or configuration.
+ */
+@property (class, nonatomic, readonly) VTMotionBlurConfigurationRevision defaultRevision;
+
+/**
+ * @property frameSupportedPixelFormats
+ * @abstract list of source frame supported pixel formats for current configuration
+ */
+
+@property (nonatomic, readonly) NSArray<NSNumber *> * frameSupportedPixelFormats;
+
+/**
+ * @property sourcePixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as source frames and reference frames.
+*/
+@property (nonatomic, readonly) NSDictionary * sourcePixelBufferAttributes;
+
+/**
+ * @property destinationPixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as destination frames.
+*/
+@property (nonatomic, readonly) NSDictionary * destinationPixelBufferAttributes;
+
+
+/*!
+	@property processorSupported
+	@abstract reports that this processor is  supported
+*/
+@property (class, nonatomic, readonly) Boolean processorSupported;
+
+@end
+
+
+/*!
+ @class VTMotionBlurParameters
+ @abstract VTMotionBlurParameters object contains both input and output parameters needed to run the MotionBlur processor on a frame. This object is used in the processWithParameters call of VTFrameProcessor class. The output parameter for this class is destinationFrame where the output frame is returned (as VTFrameProcessorFrame) back to the caller function once the processWithParameters completes.
+ 
+ @discussion VTMotionBlurParameters are frame level parameters.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+
+@interface VTMotionBlurParameters : NSObject <VTFrameProcessorParameters>
+
+/*!
+ @abstract Creates a new VTMotionBlurParameters .
+
+ @param sourceFrame Current source frame. Must be non nil.
+  
+ @param nextFrame Next source frame in presentation time order. For the last frame this can be set to nil.
+
+ @param previousFrame  Previous source frame in presentation time order. For the first frame this can be set to nil.
+ 
+ @param nextOpticalFlow Optional VTFrameProcessorOpticalFlow object that contains forward and backward optical flow with next frame. Only needed if optical flow is pre-computed. For the last frame this will always be nil.
+  
+ @param previousOpticalFlow Optional VTFrameProcessorOpticalFlow object that contains forward and backward optical flow with previous frame. Only needed if optical flow is pre-computed. For the first frame this will always be nil.
+ 
+ @param motionBlurStrength NSInteger number to indicate the strength of blur to apply. Range is from 1 to 100. Default value is 50.
+
+ @param submissionMode Set to VTMotionBlurParametersSubmissionModeSequential to indicate that current submission follow presentation time order without jump or skip when compared to previous submission. VTMotionBlurParametersSubmissionModeSequential will yield better performance. Set to VTMotionBlurParametersSubmissionModeRandom to indicate a skip or a jump in frame sequence. If VTMotionBlurParametersSubmissionModeRandom is set internal cache will be cleared during processWithParameters call.
+ 
+ @param destinationFrame User allocated pixel buffer that will receive the results.
+*/
+- (instancetype) initWithSourceFrame:(VTFrameProcessorFrame *)sourceFrame
+                           nextFrame:(VTFrameProcessorFrame * _Nullable)nextFrame
+                       previousFrame:(VTFrameProcessorFrame * _Nullable)previousFrame
+					 nextOpticalFlow:(VTFrameProcessorOpticalFlow * _Nullable)nextOpticalFlow
+				 previousOpticalFlow:(VTFrameProcessorOpticalFlow * _Nullable)previousOpticalFlow
+				  motionBlurStrength:(NSInteger)motionBlurStrength
+					  submissionMode:(VTMotionBlurParametersSubmissionMode)submissionMode
+					destinationFrame:(VTFrameProcessorFrame *)destinationFrame;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property sourceFrame
+ * @abstract sourceFrame Current source frame. Must be non nil
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * sourceFrame;
+
+/**
+ * @property nextFrame
+ * @abstract Next source frame in presentation time order. For the last frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorFrame * nextFrame;
+
+/**
+ * @property previousFrame
+ * @abstract Previous source frame in presentation time order. For the first frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorFrame * previousFrame;
+
+/**
+ * @property nextOpticalFlow
+ * @abstract Optional VTFrameProcessorOpticalFlow object that contains forward and backward optical flow with next frame. Only needed if optical flow is pre-computed. For the last frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorOpticalFlow * nextOpticalFlow;
+
+/**
+ * @property previousOpticalFlow
+ * @abstract Optional VTFrameProcessorOpticalFlow object  that contains forward and backward optical flow with previous frame. Only needed if optical flow is pre-computed. For the first frame this will be nil.
+*/
+
+@property(nonatomic, readonly, nullable) VTFrameProcessorOpticalFlow * previousOpticalFlow;
+
+/**
+ * @property motionBlurStrength
+ * @abstract motionBlurStrength NSInteger number to indicate the strength of blur to apply. Range is from 1 to 100. Default value is 50.
+*/
+@property (nonatomic, readonly) NSInteger motionBlurStrength;
+
+/**
+ * @property submissionMode
+ * @abstract A VTMotionBlurParametersSubmissionMode value describing the processing request in this Parameters object .
+*/
+@property (nonatomic, readonly) VTMotionBlurParametersSubmissionMode submissionMode;
+
+/**
+ * @property destinationFrame
+ * @abstract VTFrameProcessorFrame that contains user allocated pixel buffer that will receive the results.
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * destinationFrame;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#endif // VTFRAMEPROCESSOR_MOTIONBLUR_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_OpticalFlow.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_OpticalFlow.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_OpticalFlow.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTFrameProcessor_OpticalFlow.h	2025-02-08 04:03:22
@@ -0,0 +1,214 @@
+/*
+	File:  VTFrameProcessor_OpticalFlow.h
+ 
+	Framework:  VideoToolbox
+ 
+	Copyright 2023-2024 Apple Inc. All rights reserved.
+ 
+*/
+
+#ifndef VTFRAMEPROCESSOR_OPTICALFLOW_H
+#define VTFRAMEPROCESSOR_OPTICALFLOW_H
+
+#import <VideoToolbox/VTFrameProcessorConfiguration.h>
+#import <VideoToolbox/VTFrameProcessorParameters.h>
+#import <VideoToolbox/VTFrameProcessorFrame.h>
+
+/*!
+    @brief A few words about the OpticalFlow
+
+    @details
+*/
+
+/*!
+ @brief Quality prioritization levels to favor quality or performance.
+*/
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTOpticalFlowConfigurationQualityPrioritization) {
+	VTOpticalFlowConfigurationQualityPrioritizationNormal = 1,
+	VTOpticalFlowConfigurationQualityPrioritizationQuality = 2,
+} NS_SWIFT_NAME(VTOpticalFlowConfiguration.QualityPrioritization);
+
+/*!
+ @brief List of existing algorithm revisions with the highest being the latest. Clients can read defaultRevision property to find the default revision.
+ */
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTOpticalFlowConfigurationRevision) {
+	VTOpticalFlowConfigurationRevision1           = 1,    // revision 1
+} NS_SWIFT_NAME(VTOpticalFlowConfiguration.Revision);
+
+/*!
+ @brief Hint to let the processor know whether frames are being submitted in presenatation sequence, allowing performance optimizations based on previous processing requests
+ */
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+typedef NS_ENUM(NSInteger, VTOpticalFlowParametersSubmissionMode) {
+	VTOpticalFlowParametersSubmissionModeRandom             = 1,    // Frames are submitted in non-sequential order
+	VTOpticalFlowParametersSubmissionModeSequential         = 2,    // Frames are submitted sequentially following presentation time order
+} NS_SWIFT_NAME(VTOpticalFlowParameters.SubmissionMode);
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+
+/*!
+ @class VTOpticalFlowConfiguration
+ @abstract Configuration that is used to set up an OpticalFlow processor
+
+ @discussion This configuration enables the OpticalFlow on a VTFrameProcessing session.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+NS_SWIFT_SENDABLE __attribute__((objc_subclassing_restricted))
+@interface VTOpticalFlowConfiguration : NSObject <VTFrameProcessorConfiguration>
+
+#pragma mark --- init function(s).
+/*!
+ @abstract Creates a new VTOpticalFlowConfiguration with specified flow width and height.
+
+ @param frameWidth    Width of source frame in pixels. Maximum value is 8192 for macOS, and 4096 for iOS.
+
+ @param frameHeight   Height of source frame in pixels. Maximum value is 4320 for macOS, and 2160 for iOS.
+
+ @param usePrecomputedFlow  Boolean value to indicate that Optical Flow will be provided by the user, if false this configuration will compute the optical flow on the fly.
+
+ @param qualityPrioritization Used to control quality and performance levels. See VEOpticalFlowConfigurationQualityPrioritization for more info.
+ 
+ @param revision The specific algorithm or configuration revision that is to be used to perform the request.
+ 
+*/
+- (instancetype)initWithFrameWidth:(NSInteger)frameWidth
+					   frameHeight:(NSInteger)frameHeight
+			 qualityPrioritization:(VTOpticalFlowConfigurationQualityPrioritization)qualityPrioritization
+						  revision:(VTOpticalFlowConfigurationRevision)revision;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property frameWidth
+ * @abstract Width of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameWidth;
+
+/**
+ * @property frameHeight
+ * @abstract Height of source frame in pixels.
+ */
+@property (nonatomic, readonly) NSInteger frameHeight;
+
+/**
+ * @property qualityPrioritization
+ * @abstract parameter used to control quality and performance levels. See VEOpticalFlowConfigurationQualityPrioritization for more info.
+*/
+@property (nonatomic, readonly) VTOpticalFlowConfigurationQualityPrioritization qualityPrioritization;
+
+/*!
+ @property revision
+ @abstract The specific algorithm or configuration revision that is to be used to perform the request.
+ */
+@property (nonatomic, readonly) VTOpticalFlowConfigurationRevision revision;
+
+/*!
+ @property supportedRevisions
+ @abstract Provides the collection of currently-supported algorithm or configuration revisions for the class of configuration.
+ @discussion This property allows clients to introspect at runtime what revisions are available for each configuration.
+ */
+@property (class, nonatomic, readonly) NSIndexSet* supportedRevisions;
+
+/*!
+ @property defaultRevision
+ @abstract Provides the default revision of a particular algorithm or configuration.
+ */
+@property (class, nonatomic, readonly) VTOpticalFlowConfigurationRevision defaultRevision;
+
+/**
+ * @property frameSupportedPixelFormats
+ * @abstract list of source frame supported pixel formats for current configuration
+ */
+
+@property (nonatomic, readonly) NSArray<NSNumber *> * frameSupportedPixelFormats;
+
+
+/**
+ * @property sourcePixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as source frames and reference frames.
+*/
+@property (nonatomic, readonly) NSDictionary * sourcePixelBufferAttributes;
+
+/**
+ * @property destinationPixelBufferAttributes
+ * @abstract returns a pixelBufferAttributes dictionary describing requirements for pixelBuffers used as OpticalFlow buffers
+*/
+@property (nonatomic, readonly) NSDictionary * destinationPixelBufferAttributes;
+
+/*!
+	@property processorSupported
+	@abstract reports that this processor is  supported
+*/
+@property (class, nonatomic, readonly) Boolean processorSupported;
+
+@end
+
+
+/*!
+ @class VTOpticalFlowParameters
+ @abstract VTOpticalFlowParameters object contains both input and output parameters needed to generate optical flow between two frames. This object is used in the processWithParameters call of VTFrameProcessor class. The output parameter for this class is destinationOpticalFlow where the output flow is returned (as VTFrameProcessorMutableOpticalFlow) back to the caller function once the processWithParameters completes.
+ 
+ @discussion VTOpticalFlowParameters are frame level parameters.
+*/
+
+API_AVAILABLE(macos(15.4)) API_UNAVAILABLE(ios) API_UNAVAILABLE(tvos, watchos, visionos)
+__attribute__((objc_subclassing_restricted))
+
+@interface VTOpticalFlowParameters : NSObject <VTFrameProcessorParameters>
+
+/*!
+ @abstract Creates a new VTOpticalFlowParameters .
+
+ @param sourceFrame Current source frame. Must be non nil.
+  
+ @param nextFrame Next source frame in presentation time order.
+  
+ @param submissionMode Set to VTOpticalFlowParametersSubmissionModeSequential to indicate that current submission follow presentation time order without jump or skip when compared to previous submission. VTOpticalFlowParametersSubmissionModeSequential will yield better performance. Set to  VTOpticalFlowParametersSubmissionModeRandom to indicate a skip or a jump in frame sequence. If VTOpticalFlowParametersSubmissionModeRandom is set internal cache will be cleared during processWithParameters call.
+ 
+ @param destinationOpticalFlow User allocated VTFrameProcessorMutableOpticalFlow that will receive the results.
+*/
+- (instancetype) initWithSourceFrame:(VTFrameProcessorFrame *)sourceFrame
+                           nextFrame:(VTFrameProcessorFrame *)nextFrame
+					  submissionMode:(VTOpticalFlowParametersSubmissionMode)submissionMode
+			  destinationOpticalFlow:(VTFrameProcessorOpticalFlow *) destinationOpticalFlow;
+
+- (instancetype) init NS_UNAVAILABLE;
++ (instancetype) new NS_UNAVAILABLE;
+
+/**
+ * @property sourceFrame
+ * @abstract sourceFrame Current source frame. Must be non nil
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * sourceFrame;
+
+/**
+ * @property nextFrame
+ * @abstract Next source frame in presentation time order.
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorFrame * nextFrame;
+
+/**
+ * @property submissionMode
+ * @abstract A VTOpticalFlowParametersSubmissionMode value describing the processing request in this Parameters object .
+*/
+@property (nonatomic, readonly) VTOpticalFlowParametersSubmissionMode submissionMode;
+
+/**
+ * @property destinationOpticalFlow
+ * @abstract VTFrameProcessorMutableOpticalFlow that contains user allocated flow pixel buffers that will receive the results.
+*/
+
+@property(nonatomic, readonly) VTFrameProcessorOpticalFlow * destinationOpticalFlow;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
+
+#endif // VTFRAMEPROCESSOR_OPTICALFLOW_H
diff -ruN /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VideoToolbox.h /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VideoToolbox.h
--- /Applications/Xcode_16.2.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VideoToolbox.h	2024-11-10 07:56:45
+++ /Applications/Xcode_16.3.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VideoToolbox.h	2025-02-08 04:03:21
@@ -21,6 +21,9 @@
 #include <VideoToolbox/VTRAWProcessingSession.h>
 #include <VideoToolbox/VTRAWProcessingProperties.h>
 #include <VideoToolbox/VTProfessionalVideoWorkflow.h>
+#ifdef __OBJC__
+#include <VideoToolbox/VTFrameProcessor.h>
+#endif // __OBJC__
 #endif // ( !TARGET_OS_IPHONE || TARGET_OS_MACCATALYST )
 #if ( TARGET_OS_OSX || TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_VISION )
 #include <VideoToolbox/VTHDRPerFrameMetadataGenerationSession.h>
Clone this wiki locally