-
Notifications
You must be signed in to change notification settings - Fork 568
AudioToolbox tvOS xcode27.0 b1
Alex Soto edited this page Jun 9, 2026
·
1 revision
#AudioToolbox.framework
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h 2026-04-18 21:23:57
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h 2026-05-23 15:53:28
@@ -188,6 +188,28 @@
@constant kAudioUnitType_SpeechSynthesizer
An offline audio unit that produces synthesized speech audio output.
+
+ @constant kAudioUnitType_HeadTrackingBinauralRenderer
+ An Audio Unit that enables third-party developers to provide custom spatial audio rendering
+ for their compatible Bluetooth headphones.
+
+ This Audio Unit type is only used by a 3rd Party Spatial Audio Extension to receive head
+ tracking data and perform binaural rendering.
+
+ Headphone manufacturers must publish head tracking spatial audio capabilities for matching
+ headphones via Audio Accessory Framework. This enables the manufacturer-provided Audio
+ Accessory Extension to take the head tracking data retrieved from the headphones using
+ Core Bluetooth APIs and transmit it to the Audio Accessory Daemon. The Audio Unit then
+ retrieves the head tracking data exposed through the daemon using API vended for this
+ purpose. See the 3rd Party Spatial Audio Extension programming guide for more information.
+
+ The system automatically loads matching Head Tracking Binaural Renderer Audio Units into
+ the audio signal chain when spatialization is enabled and audio is routed to the Bluetooth
+ headphones. When spatialization is disabled, the system removes the Audio Unit from the
+ signal chain.
+
+ When loaded, the system bypasses Audio Units of this type if power limits are exceeded or
+ if the system detects audio dropouts.
*/
CF_ENUM(UInt32) {
kAudioUnitType_Output = 'auou',
@@ -200,7 +222,8 @@
kAudioUnitType_Generator = 'augn',
kAudioUnitType_OfflineEffect = 'auol',
kAudioUnitType_MIDIProcessor = 'aumi',
- kAudioUnitType_SpeechSynthesizer API_AVAILABLE(ios(16.0), macos(13.0), watchos(9.0), tvos(16.0)) = 'ausp'
+ kAudioUnitType_SpeechSynthesizer API_AVAILABLE(ios(16.0), macos(13.0), watchos(9.0), tvos(16.0)) = 'ausp',
+ kAudioUnitType_HeadTrackingBinauralRenderer API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), watchos(27.0), visionos(27.0)) = 'auht'
};
#if AU_SUPPORT_INTERAPP_AUDIO
@@ -1600,6 +1623,17 @@
The call should only clear memory, it should NOT allocate or free memory
resources (this is done in the Initialize calls).
+
+ It is the AudioUnit host's responsibility to synchronize calls to AudioUnitReset()
+ against calls to AudioUnitRender() so that they are not being called concurrently.
+ Generally, this should not be accomplished by calling AudioUnitReset() from a realtime
+ thread, since the clearing of large internal buffers can be sufficiently slow as to
+ trigger an overload.
+
+ Note: Some Audio Unit implementations do internally synchronize Reset against Render,
+ because they must synchronize with external event sources (beyond the host).
+ The Apple base implementation, AUBase, provides an optional mutex for this purpose,
+ though most AudioUnits don't need to use it.
@param inUnit
the audio unit
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUHeadTrackingBinauralRenderer.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUHeadTrackingBinauralRenderer.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUHeadTrackingBinauralRenderer.h 1969-12-31 19:00:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUHeadTrackingBinauralRenderer.h 2026-05-23 02:47:49
@@ -0,0 +1,73 @@
+#if (defined(__USE_PUBLIC_HEADERS__) && __USE_PUBLIC_HEADERS__) || (defined(USE_AUDIOTOOLBOX_PUBLIC_HEADERS) && USE_AUDIOTOOLBOX_PUBLIC_HEADERS) || !__has_include(<AudioToolboxCore/AUHeadTrackingBinauralRenderer.h>)
+#ifndef AudioToolbox_AUHeadTrackingBinauralRenderer_h
+#define AudioToolbox_AUHeadTrackingBinauralRenderer_h
+#if __OBJC2__
+
+#import <Foundation/Foundation.h>
+#import <AudioToolbox/AUAudioUnit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A subclass of AUAudioUnit specifically for 3rd party spatial Audio Units.
+///
+/// This class adds spatial-audio-specific head tracking properties beyond the standard
+/// AUAudioUnit interface.
+///
+/// When the user selects matching Bluetooth headphones for the current audio route and
+/// the system has a 3rd Party Spatial Audio Extension installed that supports them, the
+/// system automatically loads this AUAudioUnit subclass into the audio signal chain while
+/// head tracking remains active on the host device.
+///
+/// Only the audio mix engine may use AUHeadTrackingBinauralRenderer Audio Units to
+/// provide on demand Bluetooth head tracking support. See the 3rd Party Spatial Audio
+/// Extension programming guide for more information.
+API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(macos, macCatalyst, tvos, watchos, visionos)
+@interface AUHeadTrackingBinauralRenderer : AUAudioUnit
+
+/// Indicates whether the host currently has enabled head tracking for this spatial Audio Unit.
+///
+/// The host sets this property when the user enables or disables head tracking.
+/// When YES, the spatial Audio Unit should use head tracking data to adjust
+/// spatialization. When NO, the host has disabled head tracking.
+///
+/// The Audio Unit should monitor this property to detect changes in head tracking state.
+///
+/// This property supports Key-Value Observing (KVO).
+@property (nonatomic, readonly, getter=isHeadTracking) BOOL headTracking;
+
+/// Indicates whether the host is bypassing the renderer due to poor performance.
+///
+/// The host may set this property when the Audio Unit exhibits problematic behavior
+/// such as excessive CPU usage that impacts real-time performance or non-compliance with
+/// API requirements.
+///
+/// When YES, the host bypasses the spatial Audio Unit in the audio signal chain and the
+/// Audio Unit does not render audio. When NO, the Audio Unit receives input and must
+/// render audio when it is matched a Bluetooth headphone device.
+///
+/// The Audio Unit should monitor this property to detect when the host disables the Audio Unit.
+///
+/// This property supports Key-Value Observing (KVO).
+@property (nonatomic, readonly, getter=isDisabled) BOOL disabled;
+
+/// The Unique Identifier (UID) of the Bluetooth headphone device providing IMU sensor data for head tracking.
+///
+/// The UID identifies which Bluetooth headphone device corresponds to this instance of the
+/// Audio Unit. The host sets this property when it matches a device with this instance of
+/// the Audio Unit.
+///
+/// The Audio Unit should monitor this property to detect when the host matches the Audio Unit with
+/// Bluetooth headphones.
+///
+/// This property supports Key-Value Observing (KVO).
+@property (nonatomic, readonly, nullable) NSString* deviceUID;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // __OBJC2__
+#endif // AudioToolbox_AUHeadTrackingBinauralRenderer_h
+#else
+#include <AudioToolboxCore/AUHeadTrackingBinauralRenderer.h>
+#endif
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h 2026-04-18 22:23:14
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h 2026-05-23 03:56:37
@@ -1008,7 +1008,7 @@
AudioCodecGetPropertyInfo( AudioCodec inCodec,
AudioCodecPropertyID inPropertyID,
UInt32* __nullable outSize,
- Boolean* __nullable outWritable) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ Boolean* __nullable outWritable) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
/*!
@@ -1033,7 +1033,7 @@
AudioCodecGetProperty( AudioCodec inCodec,
AudioCodecPropertyID inPropertyID,
UInt32* ioPropertyDataSize,
- void* outPropertyData) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ void* outPropertyData) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
/*!
@@ -1056,7 +1056,7 @@
AudioCodecSetProperty( AudioCodec inCodec,
AudioCodecPropertyID inPropertyID,
UInt32 inPropertyDataSize,
- const void* inPropertyData) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ const void* inPropertyData) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
//=============================================================================
@@ -1091,7 +1091,7 @@
const AudioStreamBasicDescription* __nullable inOutputFormat,
const void* __nullable inMagicCookie,
UInt32 inMagicCookieByteSize)
- API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
/*!
@@ -1107,7 +1107,7 @@
@result The OSStatus value
*/
extern OSStatus
-AudioCodecUninitialize(AudioCodec inCodec) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+AudioCodecUninitialize(AudioCodec inCodec) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
/*!
@@ -1144,7 +1144,7 @@
UInt32* ioInputDataByteSize,
UInt32* ioNumberPackets,
const AudioStreamPacketDescription* __nullable inPacketDescription)
- API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
/*!
@@ -1183,7 +1183,7 @@
UInt32* ioNumberPackets,
AudioStreamPacketDescription* __nullable outPacketDescription,
UInt32* outStatus)
- API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+ API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
extern OSStatus
AudioCodecAppendInputBufferList( AudioCodec inCodec,
@@ -1191,7 +1191,7 @@
UInt32* ioNumberPackets,
const AudioStreamPacketDescription* __nullable inPacketDescription,
UInt32* outBytesConsumed)
- API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0));
+ API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) ;
extern OSStatus
AudioCodecProduceOutputBufferList( AudioCodec inCodec,
@@ -1199,7 +1199,7 @@
UInt32* ioNumberPackets,
AudioStreamPacketDescription* __nullable outPacketDescription,
UInt32* outStatus)
- API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0));
+ API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)) ;
/*!
@function AudioCodecReset
@@ -1213,7 +1213,7 @@
@result the OSStatus value
*/
extern OSStatus
-AudioCodecReset(AudioCodec inCodec) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0));
+AudioCodecReset(AudioCodec inCodec) API_AVAILABLE(macos(10.2), ios(2.0), watchos(2.0), tvos(9.0)) ;
//=====================================================================================================================
typedef OSStatus
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h 2026-04-18 19:44:49
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h 2026-05-23 15:53:28
@@ -19,6 +19,7 @@
#include <AudioToolbox/AUAudioUnitImplementation.h>
#include <AudioToolbox/AUComponent.h>
#include <AudioToolbox/AUGraph.h>
+#include <AudioToolbox/AUHeadTrackingBinauralRenderer.h>
#include <AudioToolbox/AUParameters.h>
#include <AudioToolbox/AudioComponent.h>
#include <AudioToolbox/AudioConverter.h>
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h 2026-04-18 19:44:49
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h 2026-05-23 15:53:28
@@ -3075,6 +3075,7 @@
@enum Reverb Room Types
@discussion Used to specify room type (as identified by a factory preset number) on Apple audio
units that use internal reverb.
+ @note kReverbRoomType_OutdoorGeneral is available with specific AudioUnits and AudioEngines only. Refer to corresponding AudioUnit/AudioEngines documentations to verify the support criteria.
*/
typedef CF_ENUM(UInt32, AUReverbRoomType) {
kReverbRoomType_SmallRoom = 0,
@@ -3089,7 +3090,8 @@
kReverbRoomType_LargeRoom2 = 9,
kReverbRoomType_MediumHall2 = 10,
kReverbRoomType_MediumHall3 = 11,
- kReverbRoomType_LargeHall2 = 12
+ kReverbRoomType_LargeHall2 = 12,
+ kReverbRoomType_OutdoorGeneral API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(watchos) = 24
};
/*!
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/CASpatialAudioExperience.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/CASpatialAudioExperience.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/CASpatialAudioExperience.h 2026-04-18 20:57:28
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/CASpatialAudioExperience.h 2026-05-23 02:02:07
@@ -22,7 +22,7 @@
/// Configure the distribution of audio channels in 3D space.
///
/// The Objective-C version of the ``SpatialAudioExperiences.SoundStageSize`` Swift type.
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
typedef NS_ENUM(NSInteger, CASoundStageSize) {
/// A system-defined sound stage size.
@@ -45,7 +45,7 @@
///
/// The Objective-C version of the ``SpatialAudioExperiences.AnchoringStrategy`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAAnchoringStrategy : NSObject <NSSecureCoding, NSCopying>
- (instancetype)init NS_UNAVAILABLE;
@@ -55,7 +55,7 @@
/// A system-defined anchoring strategy.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAAutomaticAnchoringStrategy : CAAnchoringStrategy
- (instancetype)init;
@@ -65,7 +65,7 @@
/// Anchor to the front of the user's space.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAFrontAnchoringStrategy : CAAnchoringStrategy
- (instancetype)init;
@@ -75,7 +75,7 @@
/// Anchor to the visual center of a particular UIScene.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CASceneAnchoringStrategy : CAAnchoringStrategy
- (instancetype)initWithSceneIdentifier:(NSString*)sceneIdentifier;
@@ -91,7 +91,7 @@
///
/// The Objective-C version of the ``SpatialAudioExperience`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CASpatialAudioExperience : NSObject <NSSecureCoding, NSCopying>
- (instancetype)init NS_UNAVAILABLE;
@@ -103,7 +103,7 @@
///
/// The Objective-C version of the ``AutomaticSpatialAudio`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAAutomaticSpatialAudio : CASpatialAudioExperience
- (instancetype)init;
@@ -115,7 +115,7 @@
///
/// The Objective-C version of the ``BypassedSpatialAudio`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CABypassedSpatialAudio : CASpatialAudioExperience
- (instancetype)init;
@@ -127,7 +127,7 @@
///
/// The Objective-C version of the ``FixedSpatialAudio`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAFixedSpatialAudio : CASpatialAudioExperience
- (instancetype)initWithSoundStageSize:(CASoundStageSize)soundStageSize;
@@ -142,7 +142,7 @@
///
/// The Objective-C version of the ``HeadTrackedSpatialAudio`` Swift type.
NS_REFINED_FOR_SWIFT
-API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios, watchos, tvos, macos)
+API_AVAILABLE(visionos(26.0)) API_UNAVAILABLE(ios) API_UNAVAILABLE(watchos, tvos, macos)
@interface CAHeadTrackedSpatialAudio : CASpatialAudioExperience
- (instancetype)initWithSoundStageSize:(CASoundStageSize)soundStageSize