Skip to content

AudioToolbox iOS xcode16.0 b1

Rolf Bjarne Kvinge edited this page Jul 10, 2024 · 3 revisions

#AudioToolbox.framework https://github.com/xamarin/xamarin-macios/pull/20856

diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2024-04-16 05:17:31
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2024-05-30 04:18:14
@@ -1077,6 +1077,19 @@
 */
 @property (NS_NONATOMIC_IOSONLY, copy, nullable) NSString *contextName;
 
+/*!	@property	migrateFromPlugin
+	@brief		Information for migrating data from other audio plug-ins to the v3 Audio Unit architecture.
+	@discussion
+		This can be used to migrate settings from an older Audio Unit; this allows manufacturers
+		to deprecate older Audio Units and replace them with new ones. The data for the older Audio Unit is
+		an array of NSData representing byte encoded AudioUnitOtherPluginDescs to migrate from.
+		Can also be used to migrate from a v2 to a v3 Audio Unit.
+
+		Bridged to the v2 property kAudioUnitMigrateProperty_FromPlugin.
+*/
+@property (NS_NONATOMIC_IOSONLY, readonly) NSArray* migrateFromPlugin API_AVAILABLE(macos(13.0), ios(16.0), watchos(9.0), tvos(16.0));
+
+
 /*!	@property	supportsMPE
 	@brief		Specifies whether an audio unit supports Multi-dimensional Polyphonic Expression.
 	@discussion
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h	2024-04-16 05:17:31
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h	2024-05-30 03:13:57
@@ -240,7 +240,7 @@
 */
 typedef CF_OPTIONS(UInt32, AudioComponentInstantiationOptions) {
     kAudioComponentInstantiation_LoadOutOfProcess   CF_ENUM_AVAILABLE(10_11,  9_0) = 1,
-    kAudioComponentInstantiation_LoadInProcess      CF_ENUM_AVAILABLE(10_11,  NA)  = 2,
+    kAudioComponentInstantiation_LoadInProcess      API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios)  = 2,
     kAudioComponentInstantiation_LoadedRemotely     API_UNAVAILABLE(macos)    = 1u << 31,
 };
 
@@ -306,7 +306,7 @@
                     ComponentInstanceRecord *, you should not assume that this will always be
                     compatible and usable with Component Manager calls.
 */
-#if TARGET_OS_IPHONE || (0 && 0) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES)
+#if TARGET_OS_IPHONE || (0 && 0) || TARGET_OS_LINUX || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES)
     typedef struct OpaqueAudioComponentInstance *   AudioComponentInstance;
 #else
     typedef struct ComponentInstanceRecord *        AudioComponentInstance;
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h	2024-04-25 05:29:48
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h	2024-05-30 05:20:05
@@ -402,6 +402,21 @@
 };
 typedef struct AudioConverterPrimeInfo AudioConverterPrimeInfo;
 
+/*!	@enum	AudioConverterOptions
+	@constant   kAudioConverterOption_Unbuffered
+		This is an option for AudioConverterNewWithOptions which removes unnecessary
+		buffering, both for input and internally to the converter, saving memory
+		at the cost of reduced format support and usage restrictions:
+		
+		- Input and output formats must be constant bit-rate, non-zero bytes per packet
+		  (e.g. linear PCM, a-law, etc.) with the same sample rate and frames per packet.
+		- AudioConverterFillBuffer cannot be used.
+		- AudioConverterFillComplexBuffer cannot be used.
+*/
+typedef CF_OPTIONS(UInt32, AudioConverterOptions) {
+	kAudioConverterOption_Unbuffered = (1 << 16)
+};
+
 //=============================================================================
 //  Errors
 //=============================================================================
@@ -453,6 +468,28 @@
 
 //-----------------------------------------------------------------------------
 /*!
+    @function   AudioConverterPrepare
+    @abstract   Optimizes the subsequent creation of audio converters by the current process.
+    @discussion This function performs its work asynchronously.  The optional completion block,
+                if provided, is executed once preparation is complete.
+                Although a best effort is made to ensure future audio converters will be created quickly,
+                there are no guarantees.
+
+    @param      inFlags
+                    Reserved for future use.  Pass 0.
+    @param      ioReserved
+                    Reserved for future use.  Pass NULL.
+    @param      inCompletionBlock
+                    Optional block to execute once preparation is complete.  May be NULL.
+                    The block is given the OSStatus result of the preparation.
+    */
+extern void
+AudioConverterPrepare(  UInt32            inFlags,
+                        void * __nullable ioReserved,
+                        void (^__nullable inCompletionBlock)(OSStatus))         API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0));
+
+//-----------------------------------------------------------------------------
+/*!
     @function   AudioConverterNew
     @abstract   Create a new AudioConverter.
 
@@ -488,6 +525,12 @@
 	supported formats. When using a codec, you can use any supported PCM format (as
 	above); the converter will perform any necessary additional conversion between
 	your PCM format and the one created or consumed by the codec.
+	
+	Note that AudioConverter may change the formats to correct any
+	inconsistent or erroneous values.  The actual formats expected and used
+	by the newly created AudioConverter can be obtained by getting the
+	properties `kAudioConverterCurrentInputStreamDescription` and
+	`kAudioConverterCurrentOutputStreamDescription` from it.
 */
 extern OSStatus
 AudioConverterNew(      const AudioStreamBasicDescription * inSourceFormat,
@@ -525,6 +568,30 @@
 
 //-----------------------------------------------------------------------------
 /*!
+    @function   AudioConverterNewWithOptions
+    @abstract   Create a new AudioConverter with one or more options enabled.
+
+    @param      inSourceFormat
+                    The format of the source audio to be converted.
+    @param      inDestinationFormat
+                    The destination format to which the audio is to be converted.
+    @param      inOptions
+                    Flags selecting one or more optional configurations for the AudioConverter.
+    @param      outAudioConverter
+                    On successful return, points to a new AudioConverter instance.
+    @result     An OSStatus result code.
+    
+	This is an alternative to AudioConverterNew which supports enabling
+	one or more optional configurations for the new AudioConverter.
+*/
+extern OSStatus
+AudioConverterNewWithOptions(const AudioStreamBasicDescription * inSourceFormat,
+                             const AudioStreamBasicDescription * inDestinationFormat,
+                             AudioConverterOptions inOptions,
+                             AudioConverterRef __nullable * __nonnull outAudioConverter)      API_AVAILABLE(macos(15.0), ios(18.0), tvos(18.0), watchos(11.0), visionos(2.0));
+
+//-----------------------------------------------------------------------------
+/*!
     @function   AudioConverterDispose
     @abstract   Destroy an AudioConverter.
 
@@ -679,6 +746,7 @@
 	The callback may return one or more packets. If this is less than the minimum,
 	the callback will simply be called again in the near future. Note that ioNumberDataPackets counts
 	packets in terms of the converter's input format (not its output format).
+	Also note that the callback must provide a whole number of packets.
 
 	The callback may be asked to provide multiple input packets in a single call, even for compressed
 	formats.  The callback must update the number of packets pointed to by ioNumberDataPackets
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h	2024-04-05 22:59:46
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h	2024-05-30 04:02:57
@@ -715,10 +715,17 @@
  @enum          AUSoundIsolation sound types
  @brief         Constants available as values for parameter kAUSoundIsolation_SoundToIsolate.
  
+ @constant      kAUSoundIsolationSoundType_HighQualityVoice
+ Isolate voice signal from the input signal using high quality voice isolation model
+
  @constant      kAUSoundIsolationSoundType_Voice
- Isolate voice signal from the input signal.
+ Isolate voice signal from the input signal using standard voice isolation model (default)
+
+ @constant      kAUSoundIsolationSoundType_Music
+ Adjust vocal level in the input signal/music using vocal attenuation model
  */
 CF_ENUM(long) {
+    kAUSoundIsolationSoundType_HighQualityVoice API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 0,
     kAUSoundIsolationSoundType_Voice API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 1
 };
 
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2024-04-16 04:36:17
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2024-05-30 03:13:57
@@ -2070,9 +2070,11 @@
     @abstract       The collection of Instrument Unit Property IDs
 
 	@constant		kMusicDeviceProperty_MIDIXMLNames
-	@discussion			Scope:
-						Value Type:
-						Access:
+	@discussion			Scope:              Global
+						Value Type:         CFURLRef
+						Access:             read
+ 
+                        This property's value specifies a URL to a local file containg the XML Instrument description.
 
 	@constant		kMusicDeviceProperty_PartGroup
 	@discussion			Scope:				Part
@@ -3002,9 +3004,9 @@
 	kAudioUnitProperty_SpatialMixerAttenuationCurve			= 3013,
 	kAudioUnitProperty_SpatialMixerOutputType				= 3100,
 	kAudioUnitProperty_SpatialMixerPointSourceInHeadMode	= 3103,
-    kAudioUnitProperty_SpatialMixerEnableHeadTracking API_AVAILABLE(macos(12.3)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3111,
-    kAudioUnitProperty_SpatialMixerPersonalizedHRTFMode API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3113,
-    kAudioUnitProperty_SpatialMixerAnyInputIsUsingPersonalizedHRTF API_AVAILABLE(macos(14.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 3116
+    kAudioUnitProperty_SpatialMixerEnableHeadTracking API_AVAILABLE(macos(12.3), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos, visionos) = 3111,
+    kAudioUnitProperty_SpatialMixerPersonalizedHRTFMode API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 3113,
+    kAudioUnitProperty_SpatialMixerAnyInputIsUsingPersonalizedHRTF API_AVAILABLE(macos(14.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 3116
 };
 
 /*!
@@ -3120,9 +3122,9 @@
                      head-related transfer function (HRTF).
 */
 typedef CF_ENUM(UInt32, AUSpatialMixerPersonalizedHRTFMode) {
-    kSpatialMixerPersonalizedHRTFMode_Off CF_SWIFT_NAME(off) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 0,
-    kSpatialMixerPersonalizedHRTFMode_On CF_SWIFT_NAME(on) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 1,
-    kSpatialMixerPersonalizedHRTFMode_Auto CF_SWIFT_NAME(auto) API_AVAILABLE(macos(13.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(watchos) = 2
+    kSpatialMixerPersonalizedHRTFMode_Off CF_SWIFT_NAME(off) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 0,
+    kSpatialMixerPersonalizedHRTFMode_On CF_SWIFT_NAME(on) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 1,
+    kSpatialMixerPersonalizedHRTFMode_Auto CF_SWIFT_NAME(auto) API_AVAILABLE(macos(13.0), ios(18.0), tvos(18.0)) API_UNAVAILABLE(watchos) = 2
 };
 
 /*!
Clone this wiki locally