Skip to content

VideoToolbox iOS xcode16.0 b4

Rolf Bjarne Kvinge edited this page Aug 30, 2024 · 3 revisions

#VideoToolbox.framework https://github.com/xamarin/xamarin-macios/pull/21157

diff -ruN /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h
--- /Applications/Xcode_16.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h	2024-06-29 09:44:17
+++ /Applications/Xcode_16.0.0-beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTDecompressionProperties.h	2024-07-13 04:31:58
@@ -370,6 +370,31 @@
 */
 VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_PixelFormatsWithReducedResolutionSupport API_AVAILABLE(macos(10.8), ios(8.0), tvos(10.2), visionos(1.0)) API_UNAVAILABLE(watchos); // Read-only, CFArray[CFNumber(CMPixelFormatType)], optional
 
+/*!
+	@constant	kVTDecompressionPropertyKey_AllowBitstreamToChangeFrameDimensions
+	@abstract
+		True if decoder is allowed to output buffers matching reduced frame dimensions in the bitstream rather than
+		under-filling them.
+	@discussion
+		This is an optional property only supported by video decoders for bitstream formats which have a provision
+		for specifying output dimensions per-frame, such as AV1.
+
+		If a decoder does not support this property or if the property value is set to `kCFBooleanFalse`, all decoded
+		frames will have the same dimensions as specified in the format description. In this case, if the bitstream
+		changes the frame dimensions, the output buffer will be padded to the dimensions specified in the format
+		description.
+
+		When this property is set to `kCFBooleanTrue`, the decoder will set the dimensions of each output buffer to
+		match the dimensions specified in the bitstream for that frame.
+
+		In all cases, output buffer dimensions will never exceed the dimensions specified in the format description.
+
+		In apps linked to SDK versions before this property was added, the AV1 decoder will behave as if this property
+		is set to `kCFBooleanFalse`. Otherwise, value of this property defaults to `kCFBooleanTrue` where supported.
+*/
+
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_AllowBitstreamToChangeFrameDimensions API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), visionos(2.0)) API_UNAVAILABLE(watchos); // Read/Write, CFBoolean, Optional
+
 #pragma mark Post-decompression processing
 
 // Standard properties about processing to be performed after decompression.
@@ -440,6 +465,34 @@
 		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(macos(14.0), ios(17.0), tvos(17.0), visionos(1.0)) API_UNAVAILABLE(watchos); // CFBoolean, Read/Write, Optional, kCFBooleanFalse by default
+
+/*!
+	@constant       kVTDecompressionPropertyKey_DecoderProducesRAWOutput
+	@abstract
+		Indicates whether the decoder can produce RAW output requiring a VTRAWProcessingSession for post-decode processing.
+	@discussion
+		If this property is not implemented, it is assumed that the decoder does not produce RAW output.
+		If the decoder reports that it produces RAW output the VTDecompressionSession will internally invoke a VTRAWProcessingSession by default to produce
+		processed output.
+		If the client sets kVTDecompressionPropertyKey_RequestRAWOutput, the VTDecompressionSession will do no processing and return the decoder's native RAW
+		output, and any requested destinationImageBufferAttributes on the VTDecompressionSession will be ignored.
+*/
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_DecoderProducesRAWOutput API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, tvos, watchos, visionos); // CFBoolean, Read, Optional
+
+/*!
+	@constant       kVTDecompressionPropertyKey_RequestRAWOutput
+	@abstract
+		For decoders which produce RAW output, this property requests that the VTDecompressionSession provide output which has not been processed.
+	@discussion
+		When a decoder produces RAW output (signalled by kVTDecompressionPropertyKey_DecoderProducesRAWOutput) the VTDecompressionSession will automatically
+		invoke a VTRAWProcessingSession with default settings and emit processed frames by default, or when kVTDecompressionPropertyKey_RequestRAWOutput is set
+		to kCFBooleanFalse.
+		If a client wants to run a VTRAWProcessingSession on the RAW output themselves in order to control the post-decode processing of the decoded CVPixelBuffers,
+		they must set kVTDecompressionPropertyKey_RequestRAWOutput to kCFBooleanTrue.
+		If kVTDecompressionPropertyKey_RequestRAWOutput has been enabled and the decoder produces RAW output, the VTDecompressionSession 
+		will return CVPixelBuffers in the decoder's native RAW format.  Any destinationImageBufferAttributes set on the VTDecompressionSession will be ignored.
+*/
+VT_EXPORT const CFStringRef kVTDecompressionPropertyKey_RequestRAWOutput API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, tvos, watchos, visionos); // CFBoolean, Read/Write, Optional, kCFBooleanFalse by default
 
 
 #pragma mark Multi-image decompression
Clone this wiki locally