-
Notifications
You must be signed in to change notification settings - Fork 517
CoreAudio macOS xcode15.1 b2
Alex Soto edited this page Oct 26, 2023
·
1 revision
#CoreAudio.framework
diff -ruN /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h
--- /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h 2023-08-05 09:46:05
+++ /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h 2023-10-13 13:29:08
@@ -583,6 +583,25 @@
property can be set in an application's info.plist using the key,
"AudioHardwarePowerHint". The values for this key are the strings that
correspond to the values in the Power Hints enum.
+ @constant kAudioHardwarePropertyProcessObjectList
+ An array of AudioObjectIDs that represent the Process objects for all client processes
+ currently connected to the system.
+ @constant kAudioHardwarePropertyTranslatePIDToProcessObject
+ This property fetches the AudioObjectID that corresponds to the Process object
+ that has the given PID. The PID is passed in via the qualifier as a pid_t
+ while the AudioObjectID for the Process is returned to the caller as the
+ property's data. Note that an error is not returned if the PID doesn't refer
+ to any Process. Rather, this property will return kAudioObjectUnknown
+ as the value of the property.
+ @constant kAudioHardwarePropertyTapList
+ An array of AudioObjectIDs that represent the Tap objects on the system.
+ @constant kAudioHardwarePropertyTranslateUIDToTap
+ This property fetches the AudioObjectID that corresponds to the AudioTap
+ that has the given UID. The UID is passed in via the qualifier as a CFString
+ while the AudioObjectID for the AudioTap is returned to the caller as the
+ property's data. Note that an error is not returned if the UID doesn't refer
+ to any AudioTap. Rather, this property will return kAudioObjectUnknown as the
+ value of the property.
*/
CF_ENUM(AudioObjectPropertySelector)
{
@@ -611,6 +630,10 @@
kAudioHardwarePropertyUserSessionIsActiveOrHeadless = 'user',
kAudioHardwarePropertyServiceRestarted = 'srst',
kAudioHardwarePropertyPowerHint = 'powh',
+ kAudioHardwarePropertyProcessObjectList = 'prs#',
+ kAudioHardwarePropertyTranslatePIDToProcessObject = 'id2p',
+ kAudioHardwarePropertyTapList = 'tps#',
+ kAudioHardwarePropertyTranslateUIDToTap = 'uidt',
};
//==================================================================================================
@@ -1590,6 +1613,28 @@
*/
#define kAudioAggregateDeviceIsStackedKey "stacked"
+/*!
+ @defined kAudioAggregateDeviceTapListKey
+ @discussion The key used in a CFDictionary that describes the Tap composition of an
+ AudioAggregateDevice. The value for this key is a CFArray of CFDictionaries
+ that describe each tap in the AudioAggregateDevice. The keys for this
+ CFDictionary are defined in the AudioTap section.
+*/
+#define kAudioAggregateDeviceTapListKey "taps"
+
+/*!
+ @defined kAudioAggregateDeviceTapAutoStartKey
+ @discussion The key used in a CFDictionary that describes the composition of an
+ AudioAggregateDevice. The value for this key is a CFNumber where a non-zero
+ value indicates that this aggregate device’s start should wait for the first
+ tap that receives audio. When this key is used, calling AudioDeviceStart with
+ the aggregate device will wait until a tapped process begins receiving its
+ first audio from any tapped applications. The composition must also include
+ the private key so that the aggregate is private to the process that created
+ it.
+*/
+#define kAudioAggregateDeviceTapAutoStartKey "tapautostart"
+
//==================================================================================================
#pragma mark AudioAggregateDevice Properties
@@ -1623,6 +1668,12 @@
device will control the time base. Setting this property will enable
drift correction for all subdevices in the aggregate device. The caller is
responsible for releasing the returned CFObject.
+ @constant kAudioAggregateDevicePropertyTapList
+ A CFArray of CFStrings that contain the UUIDs of all the tap objects in the
+ contained in the AudioAggregateDevice.
+ @constant kAudioAggregateDevicePropertySubTapList
+ An array of AudioObjectIDs for all the active sub-taps in the aggregate
+ device.
*/
CF_ENUM(AudioObjectPropertySelector)
{
@@ -1631,6 +1682,8 @@
kAudioAggregateDevicePropertyComposition = 'acom',
kAudioAggregateDevicePropertyMainSubDevice = 'amst',
kAudioAggregateDevicePropertyClockDevice = 'apcd',
+ kAudioAggregateDevicePropertyTapList = 'tap#',
+ kAudioAggregateDevicePropertySubTapList = 'atap',
};
//==================================================================================================
@@ -1780,6 +1833,193 @@
kAudioSubDevicePropertyDriftCompensationQuality = 'drfq'
};
+//==================================================================================================
+#pragma mark -
+#pragma mark AudioSubTap Constants
+
+/*!
+ @enum AudioSubTap Class Constants
+ @abstract Various constants related to the AudioSubTap class.
+ @constant kAudioSubTapClassID
+ The AudioClassID that identifies the AudioSubTap class.
+*/
+CF_ENUM(AudioClassID)
+{
+ kAudioSubTapClassID = 'stap'
+};
+
+/*!
+ @defined kAudioSubTapUIDKey
+ @discussion The key used in a CFDictionary that describes the state of an AudioSubTap.
+ The value for this key is a CFString that contains the UID for the
+ AudioSubTap.
+*/
+#define kAudioSubTapUIDKey "uid"
+
+/*!
+ @defined kAudioSubTapExtraInputLatencyKey
+ @discussion The key used in a CFDictionary that describes the state of an AudioSubTap.
+ The value for this key is a CFNumber that indicates the total number of frames
+ of additional latency that will be added to the input side of the
+ AudioSubTap.
+*/
+#define kAudioSubTapExtraInputLatencyKey "latency-in"
+
+/*!
+ @defined kAudioSubTapExtraOutputLatencyKey
+ @discussion The key used in a CFDictionary that describes the state of an AudioSubTap.
+ The value for this key is a CFNumber that indicates the total number of frames
+ of additional latency that will be added to the output side of the
+ AudioSubTap.
+*/
+#define kAudioSubTapExtraOutputLatencyKey "latency-out"
+
+/*!
+ @defined kAudioSubTapDriftCompensationKey
+ @discussion The key used in a CFDictionary that describes the state of an AudioSubTap.
+ The value for this key is a CFNumber where a non-zero value indicates that drift
+ compensation is enabled for the AudioSubTap
+*/
+#define kAudioSubTapDriftCompensationKey "drift"
+
+/*!
+ @defined kAudioSubTapDriftCompensationQualityKey
+ @discussion The key used in a CFDictionary that describes the state of an AudioSubTap.
+ The value for this key is a CFNumber that indicates the quality of the drift
+ compensation for the AudioSubTap
+*/
+#define kAudioSubTapDriftCompensationQualityKey "drift quality"
+
+//==================================================================================================
+#pragma mark AudioSubTap Properties
+
+/*!
+ @enum AudioSubTap Properties
+ @abstract AudioObjectPropertySelector values provided by the AudioSubTap class.
+ @discussion The AudioSubTap class is a subclass of AudioObject class and has the same
+ scope and element structure. However, AudioSubTap objects do not implement an
+ IO path of their own and as such do not implement any AudioDevice properties
+ associated with the IO path. They also don't have any streams.
+ @constant kAudioSubTapPropertyExtraLatency
+ A Float64 indicating the number of sample frames to add to or subtract from
+ the latency compensation used for this AudioSubTap.
+ @constant kAudioSubTapPropertyDriftCompensation
+ A UInt32 where a value of 0 indicates that no drift compensation should be
+ done for this AudioSubTap and a value of 1 means that it should.
+ @constant kAudioSubTapPropertyDriftCompensationQuality
+ A UInt32 that controls the trade-off between quality and CPU load in the
+ drift compensation. The range of values is from 0 to 128, where the lower
+ the number, the worse the quality but also the less CPU is used to do the
+ compensation.
+*/
+CF_ENUM(AudioObjectPropertySelector)
+{
+ kAudioSubTapPropertyExtraLatency = 'xltc',
+ kAudioSubTapPropertyDriftCompensation = 'drft',
+ kAudioSubTapPropertyDriftCompensationQuality = 'drfq'
+};
+
+//==================================================================================================
+#pragma mark -
+#pragma mark Process Constants
+
+/*!
+ @enum Process Class Constants
+ @abstract Various constants related to the Process class.
+ @discussion The Process class contains information about a client process connected to the HAL.
+ @constant kAudioProcessClassID
+ The AudioClassID that identifies the Process class.
+*/
+CF_ENUM(AudioClassID)
+{
+ kAudioProcessClassID = 'clnt'
+};
+
+//==================================================================================================
+#pragma mark Process Properties
+
+/*!
+ @enum Process Properties
+ @abstract Processes AudioObjectPropertySelector values provided by the Process class.
+ @constant kAudioProcessPropertyPID
+ A pid_t indicating the process ID associated with the process.
+ @constant kAudioProcessPropertyBundleID
+ A CFString that contains the bundle ID of the process. The caller is
+ responsible for releasing the returned CFObject.
+ @constant kAudioProcessPropertyDevices
+ An array of AudioObjectIDs that represent the devices currently used by the
+ process for output.
+ @constant kAudioProcessPropertyIsRunning
+ A UInt32 where a value of 0 indicates that there is not audio IO in progress
+ in the process, and a value of 1 indicates that there is audio IO in progress
+ in the process. Note that audio IO may in progress even if no input or output
+ streams are active.
+ @constant kAudioProcessPropertyIsRunningInput
+ A UInt32 where a value of 0 indicates that the process is not running any
+ IO or there is not any active input streams, and a value of 1 indicates that
+ the process is running IO and there is at least one active input stream.
+ @constant kAudioProcessPropertyIsRunningOutput
+ A UInt32 where a value of 0 indicates that the process is not running any
+ IO or there is not any active output streams, and a value of 1 indicates that
+ the process is running IO and there is at least one active output stream.
+ @constant kAudioProcessPropertyIsMuted
+ A UInt32 where a value of 0 indicates that the process is playing audio
+ through its selected audio devices and a value of 1 indicates that a process
+ is currently muted by an audio tap.
+*/
+CF_ENUM(AudioObjectPropertySelector)
+{
+ kAudioProcessPropertyPID = 'ppid',
+ kAudioProcessPropertyBundleID = 'pbid',
+ kAudioProcessPropertyDevices = 'pdv#',
+ kAudioProcessPropertyIsRunning = 'pir?',
+ kAudioProcessPropertyIsRunningInput = 'piri',
+ kAudioProcessPropertyIsRunningOutput = 'piro',
+};
+
+//==================================================================================================
+#pragma mark -
+#pragma mark Tap Constants
+
+/*!
+ @enum Tap Class Constants
+ @abstract Various constants related to the Tap class.
+ @discussion The Tap class contains a list of input streams that originate from the output
+ stream(s) of one or more processes.
+ @constant kAudioTapClassID
+ The AudioClassID that identifies the Tap class.
+*/
+CF_ENUM(AudioClassID)
+{
+ kAudioTapClassID = 'tcls'
+};
+
+//==================================================================================================
+#pragma mark Tap Object Properties
+
+/*!
+ @enum Tap Object Properties
+ @abstract AudioObjectPropertySelector values provided by the Tap Object class.
+ @discussion The Tap class is a subclass of the AudioObject class. the class
+ has just the global scope, kAudioObjectPropertyScopeGlobal, and only a master element.
+ @constant kAudioTapPropertyUID
+ A CFString that contains a persistent identifier for the Tap. A Taps UID
+ persists until the tap is destroyed. The caller is responsible for releasing
+ the returned CFObject.
+ @constant kAudioTapPropertyDescription
+ The CATapDescription used to initially create this tap. This property can be used
+ to modify and set the description of an existing tap.
+ @constant kAudioTapPropertyFormat
+ An AudioStreamBasicDescription that describes the current data format for
+ the tap. This is the format of that data that will be accessible in any aggregate
+ device that contains the tap.
+*/
+CF_ENUM(AudioObjectPropertySelector)
+{
+ kAudioTapPropertyUID = 'tuid',
+ kAudioTapPropertyDescription = 'tdsc',
+ kAudioTapPropertyFormat = 'tfmt',
+};
//==================================================================================================
diff -ruN /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardwareTapping.h /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardwareTapping.h
--- /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardwareTapping.h 1969-12-31 19:00:00
+++ /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardwareTapping.h 2023-10-13 13:29:08
@@ -0,0 +1,63 @@
+/*==================================================================================================
+ File: CoreAudio/AudioHardwareTapping.h
+
+ Contains: API for communicating with audio hardware.
+
+ Copyright: (c) 1985-2020 by Apple, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+==================================================================================================*/
+
+#ifdef __OBJC__
+
+#ifndef AudioHardwareTapping_h
+#define AudioHardwareTapping_h
+
+#include <Availability.h>
+#include <CoreAudio/AudioHardware.h>
+
+@class CATapDescription;
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+//==================================================================================================
+#pragma mark Tap Functions
+
+/*!
+ @function AudioHardwareCreateProcessTap
+ @abstract This routine creates a new Tap using the provided description.
+ @param inDescription
+ The CATapDescription that specifies how to build the Tap.
+ @param outTapID
+ The AudioObjectID of the newly created Tap.
+ @result An OSStatus indicating success or failure.
+*/
+extern OSStatus
+AudioHardwareCreateProcessTap(CATapDescription* inDescription,
+ AudioObjectID* outTapID) API_AVAILABLE(macos(14.2)) API_UNAVAILABLE(ios, watchos, tvos);
+
+/*!
+ @function AudioHardwareDestroyProcessTap
+ @abstract This routine destroys the given Tap.
+ @param inTapID
+ The AudioObjectID of the Tap to destroy.
+ @result An OSStatus indicating success or failure.
+*/
+extern OSStatus
+AudioHardwareDestroyProcessTap(AudioObjectID inTapID) API_AVAILABLE(macos(14.2)) API_UNAVAILABLE(ios, watchos, tvos);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* AudioHardwareTapping_h */
+
+#endif // __OBJC__
+
diff -ruN /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/CATapDescription.h /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/CATapDescription.h
--- /Applications/Xcode_15.0.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/CATapDescription.h 1969-12-31 19:00:00
+++ /Applications/Xcode_15.1.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/CATapDescription.h 2023-10-13 13:29:08
@@ -0,0 +1,167 @@
+/*
+ File: CATapDescription.h
+ Framework: CoreAudio
+
+ Copyright (c) 2014-2022 Apple Inc. All Rights Reserved.
+*/
+
+#ifdef __OBJC__
+
+#ifndef CATapDescription_h
+#define CATapDescription_h
+
+#import <Foundation/NSString.h>
+#import <Foundation/NSArray.h>
+#import <Foundation/NSUUID.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ @enum CATapMuteBehavior
+ @abstract CATapMuteBehavior describes the playback behavior of the process being tapped. The default value is CATapUnmuted.
+ @constant CATapUnmuted
+ Audio is captured by the tap and also sent to the audio hardware
+ @constant CATapMuted
+ Audio is captured by the tap but no audio is sent from the process to the audio hardware
+ @constant CATapMutedWhenTapped
+ Audio is captured by the tap and also sent to the audio hardware until the tap is read by another audio client.
+ For the duration of the read activity on the tap no audio is sent to the audio hardware.
+*/
+typedef NS_ENUM(NSInteger, CATapMuteBehavior) {
+ CATapUnmuted = 0,
+ CATapMuted = 1,
+ CATapMutedWhenTapped = 2
+} API_AVAILABLE(macos(13.0), ios(16.0));
+
+//==================================================================================================
+#pragma mark -
+#pragma mark CATapDescription class.
+/*!
+ @class CATapDescription
+
+ This class describes a tap object that contains an input stream. The input stream is a mix of all of the specified processes output audio.
+*/
+API_AVAILABLE(macos(12.0), ios(15.0))
+@interface CATapDescription : NSObject
+
+- (instancetype)init;
+
+/*! @method initStereoMixdownOfProcesses
+ @abstract
+ Mix all given process audio streams down to stereo. Mono sources will be duplicated in
+ both right and left channels.
+ @param processesObjectIDsToIncludeInTap
+ An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to include in the tap
+*/
+- (instancetype) initStereoMixdownOfProcesses:(NSArray<NSNumber*>*)processesObjectIDsToIncludeInTap NS_REFINED_FOR_SWIFT;
+
+/*! @method initStereoGlobalTapButExcludeProcesses
+ @abstract
+ Mix all processes to a stereo stream except the given processes. Mono sources will be
+ duplicated in both right and left channels.
+ @param processesObjectIDsToExcludeFromTap
+ An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to exclude from the tap.
+ All other processes that output audio will be included in the tap.
+*/
+- (instancetype) initStereoGlobalTapButExcludeProcesses:(NSArray<NSNumber*>*)processesObjectIDsToExcludeFromTap NS_REFINED_FOR_SWIFT;
+
+/*! @method initMonoMixdownOfProcesses
+ @abstract
+ Mix all given process audio streams audio to mono.
+ @param processesObjectIDsToIncludeInTap
+ An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to include in the tap
+ */
+- (instancetype) initMonoMixdownOfProcesses:(NSArray<NSNumber*>*)processesObjectIDsToIncludeInTap NS_REFINED_FOR_SWIFT;
+
+/*! @method initMonoGlobalTapButExcludeProcesses
+ @abstract
+ Mix all processes to a mono stream except the given processes
+ @param processesObjectIDsToExcludeFromTap
+ An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to exclude from the tap.
+ All other processes that output audio will be included in the tap.
+ */
+- (instancetype) initMonoGlobalTapButExcludeProcesses:(NSArray<NSNumber*>*)processesObjectIDsToExcludeFromTap NS_REFINED_FOR_SWIFT;
+
+/*! @method initWithProcesses:andDeviceUID:withStreams
+ @abstract
+ Mix all given process audio streams destined for the selected device stream
+ @param processesObjectIDsToIncludeInTap
+ An NSArray of NSNumbers where each NSNumber holds an AudioObjectID of the process object to exclude from the tap.
+ All other processes that output audio will be included in the tap.
+ @param deviceUID
+ The device UID of the output device who's audio will be captured
+ @param stream
+ NSInteger that represents the index of the stream on the device who's audio will be captured. The format of the tap
+ will match the format of this stream.
+ */
+- (instancetype) initWithProcesses:(NSArray<NSNumber*>*)processesObjectIDsToIncludeInTap andDeviceUID:(NSString*) deviceUID withStream:(NSInteger) stream NS_REFINED_FOR_SWIFT;
+
+/*!
+ @property name
+ @abstract Human readable name of this tap.
+*/
+@property (atomic, copy) NSString* name;
+
+/*!
+ @property UUID
+ @abstract UID of this tap.
+*/
+@property (atomic, copy) NSUUID* UUID;
+
+/*! @property processes
+ @abstract
+ An NSArray of NSNumbers where each NSNumber holds the AudioObjectID of the process object to tap or exclude.
+ */
+@property (atomic, copy, readwrite) NSArray<NSNumber*>* processes NS_REFINED_FOR_SWIFT;
+
+/*! @property mono
+ @abstract
+ True if this description is a mono mixdown of channels.
+ */
+@property (atomic, readwrite, getter=isMono) BOOL mono;
+
+/*! @property exclusive
+ @abstract
+ True if this description should tap all processes except the process listed in the 'processes' property.
+ */
+@property (atomic, readwrite, getter=isExclusive) BOOL exclusive;
+
+/*! @property mixdown
+ @abstract
+ True if this description is a mono or stereo mix of the tapped device's channels.
+ */
+@property (atomic, readwrite, getter=isMixdown) BOOL mixdown;
+
+/*! @property privateTap
+ @abstract
+ True if this tap is only visible to the client process that created the tap.
+ */
+@property (atomic, readwrite, getter=isPrivate, setter=setPrivate:) BOOL privateTap;
+
+/*! @property muteBehavior
+ @abstract
+ Set the tap's mute behavior. See CATapMuteBehavior above.
+ */
+@property (atomic, readwrite, getter=isMuted) CATapMuteBehavior muteBehavior;
+
+/*! @property deviceUID
+ @abstract
+ An optional deviceUID that will have a value if this tap only taps a specific hardware device
+ */
+@property (atomic, copy, nullable) NSString* deviceUID;
+
+/*! @property stream
+ @abstract
+ An optional NSNumber that will have a value if this tap taps a specific device stream.
+ The value represents the index of the hardware stream.
+ */
+@property (atomic, copy, nullable) NSNumber* stream NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* CATapDescription_h */
+
+#endif // __OBJC__
+
- README
- xcode13.0 Binding Status
- xcode13.1 Binding Status
- xcode13.2 Binding Status
- xcode13.3 Binding Status
- xcode13.4 Binding Status
- xcode14.0 Binding Status
- xcode14.1 Binding Status
- xcode14.2 Binding Status
- xcode14.3 Binding Status
- xcode15.0 Binding Status
- xcode15.1 Binding Status
- xcode15.3 Binding Status
- xcode15.4 Binding Status
- xcode16.0 Binding Status
- xcode16.1 Binding Status
- xcode16.2 Binding Status