this repo has no description
at fixPythonPipStalling 453 lines 15 kB view raw
1/* 2This file is part of Darling. 3 4Copyright (C) 2020 Lubos Dolezel 5 6Darling is free software: you can redistribute it and/or modify 7it under the terms of the GNU General Public License as published by 8the Free Software Foundation, either version 3 of the License, or 9(at your option) any later version. 10 11Darling is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16You should have received a copy of the GNU General Public License 17along with Darling. If not, see <http://www.gnu.org/licenses/>. 18*/ 19 20#ifndef AUCOMPONENT_H 21#define AUCOMPONENT_H 22#include <MacTypes.h> 23#include <CoreFoundation/CFString.h> 24#include <AudioToolbox/AudioComponent.h> 25#include <CoreAudio/CoreAudioTypes.h> 26 27#ifdef __cplusplus 28extern "C" { 29#endif 30 31typedef AudioComponentInstance AudioUnit; 32enum { 33 kAudioUnitType_Output = 'auou', 34 kAudioUnitType_MusicDevice = 'aumu', 35 kAudioUnitType_MusicEffect = 'aumf', 36 kAudioUnitType_FormatConverter = 'aufc', 37 kAudioUnitType_Effect = 'aufx', 38 kAudioUnitType_Mixer = 'aumx', 39 kAudioUnitType_Panner = 'aupn', 40 kAudioUnitType_Generator = 'augn', 41 kAudioUnitType_OfflineEffect = 'auol', 42 kAudioUnitType_MIDIProcessor = 'aumi' 43}; 44enum { 45 kAudioUnitManufacturer_Apple = 'appl' 46}; 47enum { 48 kAudioUnitSubType_GenericOutput = 'genr', 49 kAudioUnitSubType_VoiceProcessingIO = 'vpio' 50}; 51enum { 52 kAudioUnitSubType_HALOutput = 'ahal', 53 kAudioUnitSubType_DefaultOutput = 'def ', 54 kAudioUnitSubType_SystemOutput = 'sys ', 55}; 56enum { 57 kAudioUnitSubType_DLSSynth = 'dls ', 58 kAudioUnitSubType_Sampler = 'samp', 59 kAudioUnitSubType_MIDISynth = 'msyn' 60}; 61enum { 62 kAudioUnitSubType_AUConverter = 'conv', 63 kAudioUnitSubType_Varispeed = 'vari', 64 kAudioUnitSubType_DeferredRenderer = 'defr', 65 kAudioUnitSubType_Splitter = 'splt', 66 kAudioUnitSubType_MultiSplitter = 'mspl', 67 kAudioUnitSubType_Merger = 'merg', 68 kAudioUnitSubType_NewTimePitch = 'nutp', 69 kAudioUnitSubType_AUiPodTimeOther = 'ipto', 70 kAudioUnitSubType_RoundTripAAC = 'raac', 71}; 72enum { 73 kAudioUnitSubType_TimePitch = 'tmpt' 74}; 75enum { 76 kAudioUnitSubType_PeakLimiter = 'lmtr', 77 kAudioUnitSubType_DynamicsProcessor = 'dcmp', 78 kAudioUnitSubType_LowPassFilter = 'lpas', 79 kAudioUnitSubType_HighPassFilter = 'hpas', 80 kAudioUnitSubType_BandPassFilter = 'bpas', 81 kAudioUnitSubType_HighShelfFilter = 'hshf', 82 kAudioUnitSubType_LowShelfFilter = 'lshf', 83 kAudioUnitSubType_ParametricEQ = 'pmeq', 84 kAudioUnitSubType_Distortion = 'dist', 85 kAudioUnitSubType_Delay = 'dely', 86 kAudioUnitSubType_SampleDelay = 'sdly', 87 kAudioUnitSubType_NBandEQ = 'nbeq' 88}; 89enum { 90 kAudioUnitSubType_GraphicEQ = 'greq', 91 kAudioUnitSubType_MultiBandCompressor = 'mcmp', 92 kAudioUnitSubType_MatrixReverb = 'mrev', 93 kAudioUnitSubType_Pitch = 'tmpt', 94 kAudioUnitSubType_AUFilter = 'filt', 95 kAudioUnitSubType_NetSend = 'nsnd', 96 kAudioUnitSubType_RogerBeep = 'rogr' 97}; 98enum { 99 kAudioUnitSubType_MultiChannelMixer = 'mcmx', 100 kAudioUnitSubType_MatrixMixer = 'mxmx', 101 kAudioUnitSubType_SpatialMixer = '3dem', 102}; 103enum { 104 kAudioUnitSubType_StereoMixer = 'smxr', 105 kAudioUnitSubType_3DMixer = '3dmx', 106 107}; 108enum { 109 kAudioUnitSubType_SphericalHeadPanner = 'sphr', 110 kAudioUnitSubType_VectorPanner = 'vbas', 111 kAudioUnitSubType_SoundFieldPanner = 'ambi', 112 kAudioUnitSubType_HRTFPanner = 'hrtf' 113}; 114enum { 115 kAudioUnitSubType_NetReceive = 'nrcv', 116 kAudioUnitSubType_ScheduledSoundPlayer = 'sspl', 117 kAudioUnitSubType_AudioFilePlayer = 'afpl' 118}; 119typedef UInt32 AudioUnitRenderActionFlags; enum 120{ 121 kAudioUnitRenderAction_PreRender = (1UL << 2), 122 kAudioUnitRenderAction_PostRender = (1UL << 3), 123 kAudioUnitRenderAction_OutputIsSilence = (1UL << 4), 124 kAudioOfflineUnitRenderAction_Preflight = (1UL << 5), 125 kAudioOfflineUnitRenderAction_Render = (1UL << 6), 126 kAudioOfflineUnitRenderAction_Complete = (1UL << 7), 127 kAudioUnitRenderAction_PostRenderError = (1UL << 8), 128 kAudioUnitRenderAction_DoNotCheckRenderArgs = (1UL << 9) 129}; 130enum { 131 kAudioUnitErr_InvalidProperty = -10879, 132 kAudioUnitErr_InvalidParameter = -10878, 133 kAudioUnitErr_InvalidElement = -10877, 134 kAudioUnitErr_NoConnection = -10876, 135 kAudioUnitErr_FailedInitialization = -10875, 136 kAudioUnitErr_TooManyFramesToProcess = -10874, 137 kAudioUnitErr_InvalidFile = -10871, 138 kAudioUnitErr_UnknownFileType = -10870, 139 kAudioUnitErr_FileNotSpecified = -10869, 140 kAudioUnitErr_FormatNotSupported = -10868, 141 kAudioUnitErr_Uninitialized = -10867, 142 kAudioUnitErr_InvalidScope = -10866, 143 kAudioUnitErr_PropertyNotWritable = -10865, 144 kAudioUnitErr_CannotDoInCurrentContext = -10863, 145 kAudioUnitErr_InvalidPropertyValue = -10851, 146 kAudioUnitErr_PropertyNotInUse = -10850, 147 kAudioUnitErr_Initialized = -10849, 148 kAudioUnitErr_InvalidOfflineRender = -10848, 149 kAudioUnitErr_Unauthorized = -10847, 150 kAudioUnitErr_MIDIOutputBufferFull = -66753, 151 kAudioComponentErr_InstanceInvalidated = -66749, 152 kAudioUnitErr_RenderTimeout = -66745, 153 kAudioUnitErr_ExtensionNotFound = -66744 154}; 155typedef UInt32 AudioUnitPropertyID; 156 157typedef UInt32 AudioUnitScope; 158 159 160typedef UInt32 AudioUnitElement; 161 162typedef UInt32 AudioUnitParameterID; 163 164typedef Float32 AudioUnitParameterValue; 165typedef UInt32 AUParameterEventType; enum 166{ 167 kParameterEvent_Immediate = 1, 168 kParameterEvent_Ramped = 2 169}; 170struct AudioUnitParameterEvent 171{ 172 AudioUnitScope scope; 173 AudioUnitElement element; 174 AudioUnitParameterID parameter; 175 176 AUParameterEventType eventType; 177 178 union 179 { 180 struct 181 { 182 SInt32 startBufferOffset; 183 UInt32 durationInFrames; 184 AudioUnitParameterValue startValue; 185 AudioUnitParameterValue endValue; 186 } ramp; 187 188 struct 189 { 190 UInt32 bufferOffset; 191 AudioUnitParameterValue value; 192 } immediate; 193 194 } eventValues; 195}; 196typedef struct AudioUnitParameterEvent AudioUnitParameterEvent; 197struct AudioUnitParameter 198{ 199 AudioUnit mAudioUnit; 200 AudioUnitParameterID mParameterID; 201 AudioUnitScope mScope; 202 AudioUnitElement mElement; 203}; 204typedef struct AudioUnitParameter AudioUnitParameter; 205struct AudioUnitProperty 206{ 207 AudioUnit mAudioUnit; 208 AudioUnitPropertyID mPropertyID; 209 AudioUnitScope mScope; 210 AudioUnitElement mElement; 211}; 212typedef struct AudioUnitProperty AudioUnitProperty; 213typedef OSStatus 214(*AURenderCallback)( void * inRefCon, 215 AudioUnitRenderActionFlags * ioActionFlags, 216 const AudioTimeStamp * inTimeStamp, 217 UInt32 inBusNumber, 218 UInt32 inNumberFrames, 219 AudioBufferList * _Nullable ioData); 220typedef void 221(*AudioUnitPropertyListenerProc)( void * inRefCon, 222 AudioUnit inUnit, 223 AudioUnitPropertyID inID, 224 AudioUnitScope inScope, 225 AudioUnitElement inElement); 226typedef void 227(*AUInputSamplesInOutputCallback)( void * inRefCon, 228 const AudioTimeStamp * inOutputTimeStamp, 229 Float64 inInputSample, 230 Float64 inNumberInputSamples); 231extern const CFStringRef kAudioComponentRegistrationsChangedNotification; 232extern const CFStringRef kAudioComponentInstanceInvalidationNotification; 233extern OSStatus 234AudioUnitInitialize( AudioUnit inUnit); 235 236extern OSStatus 237AudioUnitUninitialize( AudioUnit inUnit); 238 239extern OSStatus 240AudioUnitGetPropertyInfo( AudioUnit inUnit, 241 AudioUnitPropertyID inID, 242 AudioUnitScope inScope, 243 AudioUnitElement inElement, 244 UInt32 * _Nullable outDataSize, 245 Boolean * _Nullable outWritable); 246 247extern OSStatus 248AudioUnitGetProperty( AudioUnit inUnit, 249 AudioUnitPropertyID inID, 250 AudioUnitScope inScope, 251 AudioUnitElement inElement, 252 void * outData, 253 UInt32 * ioDataSize); 254 255extern OSStatus 256AudioUnitSetProperty( AudioUnit inUnit, 257 AudioUnitPropertyID inID, 258 AudioUnitScope inScope, 259 AudioUnitElement inElement, 260 const void * _Nullable inData, 261 UInt32 inDataSize); 262 263extern OSStatus 264AudioUnitAddPropertyListener( AudioUnit inUnit, 265 AudioUnitPropertyID inID, 266 AudioUnitPropertyListenerProc inProc, 267 void * _Nullable inProcUserData); 268 269extern OSStatus 270AudioUnitRemovePropertyListenerWithUserData( 271 AudioUnit inUnit, 272 AudioUnitPropertyID inID, 273 AudioUnitPropertyListenerProc inProc, 274 void * _Nullable inProcUserData); 275 276extern OSStatus 277AudioUnitAddRenderNotify( AudioUnit inUnit, 278 AURenderCallback inProc, 279 void * _Nullable inProcUserData); 280 281extern OSStatus 282AudioUnitRemoveRenderNotify( AudioUnit inUnit, 283 AURenderCallback inProc, 284 void * _Nullable inProcUserData); 285 286extern OSStatus 287AudioUnitGetParameter( AudioUnit inUnit, 288 AudioUnitParameterID inID, 289 AudioUnitScope inScope, 290 AudioUnitElement inElement, 291 AudioUnitParameterValue * outValue); 292 293extern OSStatus 294AudioUnitSetParameter( AudioUnit inUnit, 295 AudioUnitParameterID inID, 296 AudioUnitScope inScope, 297 AudioUnitElement inElement, 298 AudioUnitParameterValue inValue, 299 UInt32 inBufferOffsetInFrames); 300 301extern OSStatus 302AudioUnitScheduleParameters( AudioUnit inUnit, 303 const AudioUnitParameterEvent * inParameterEvent, 304 UInt32 inNumParamEvents); 305 306extern OSStatus 307AudioUnitRender( AudioUnit inUnit, 308 AudioUnitRenderActionFlags * _Nullable ioActionFlags, 309 const AudioTimeStamp * inTimeStamp, 310 UInt32 inOutputBusNumber, 311 UInt32 inNumberFrames, 312 AudioBufferList * ioData); 313 314extern OSStatus 315AudioUnitProcess ( AudioUnit inUnit, 316 AudioUnitRenderActionFlags * _Nullable ioActionFlags, 317 const AudioTimeStamp * inTimeStamp, 318 UInt32 inNumberFrames, 319 AudioBufferList * ioData); 320 321extern OSStatus 322AudioUnitProcessMultiple( AudioUnit inUnit, 323 AudioUnitRenderActionFlags * _Nullable ioActionFlags, 324 const AudioTimeStamp * inTimeStamp, 325 UInt32 inNumberFrames, 326 UInt32 inNumberInputBufferLists, 327 const AudioBufferList * _Nonnull * _Nonnull inInputBufferLists, 328 UInt32 inNumberOutputBufferLists, 329 AudioBufferList * _Nonnull * _Nonnull ioOutputBufferLists); 330extern OSStatus 331AudioUnitReset( AudioUnit inUnit, 332 AudioUnitScope inScope, 333 AudioUnitElement inElement); 334extern OSStatus 335AudioUnitExtensionSetComponentList(CFStringRef extensionIdentifier, _Nullable CFArrayRef audioComponentInfo); 336 337extern _Nullable CFArrayRef 338AudioUnitExtensionCopyComponentList(CFStringRef extensionIdentifier); 339 340enum { 341 kAudioUnitRange = 0x0000, 342 kAudioUnitInitializeSelect = 0x0001, 343 kAudioUnitUninitializeSelect = 0x0002, 344 kAudioUnitGetPropertyInfoSelect = 0x0003, 345 kAudioUnitGetPropertySelect = 0x0004, 346 kAudioUnitSetPropertySelect = 0x0005, 347 kAudioUnitAddPropertyListenerSelect = 0x000A, 348 kAudioUnitRemovePropertyListenerSelect = 0x000B, 349 kAudioUnitRemovePropertyListenerWithUserDataSelect = 0x0012, 350 kAudioUnitAddRenderNotifySelect = 0x000F, 351 kAudioUnitRemoveRenderNotifySelect = 0x0010, 352 kAudioUnitGetParameterSelect = 0x0006, 353 kAudioUnitSetParameterSelect = 0x0007, 354 kAudioUnitScheduleParametersSelect = 0x0011, 355 kAudioUnitRenderSelect = 0x000E, 356 kAudioUnitResetSelect = 0x0009, 357 kAudioUnitComplexRenderSelect = 0x0013, 358 kAudioUnitProcessSelect = 0x0014, 359 kAudioUnitProcessMultipleSelect = 0x0015 360}; 361 362 363 364 365 366typedef OSStatus 367(*AudioUnitInitializeProc) (void *self); 368 369typedef OSStatus 370(*AudioUnitUninitializeProc) (void *self); 371 372typedef OSStatus 373(*AudioUnitGetPropertyInfoProc) (void *self, AudioUnitPropertyID prop, AudioUnitScope scope, 374 AudioUnitElement elem, UInt32 * _Nullable outDataSize, Boolean * _Nullable outWritable); 375 376typedef OSStatus 377(*AudioUnitGetPropertyProc) (void *self, AudioUnitPropertyID inID, AudioUnitScope inScope, 378 AudioUnitElement inElement, void *outData, UInt32 *ioDataSize); 379 380typedef OSStatus 381(*AudioUnitSetPropertyProc) (void *self, AudioUnitPropertyID inID, AudioUnitScope inScope, 382 AudioUnitElement inElement, const void *inData, UInt32 inDataSize); 383 384typedef OSStatus 385(*AudioUnitAddPropertyListenerProc) (void *self, AudioUnitPropertyID prop, 386 AudioUnitPropertyListenerProc proc, void *userData); 387 388typedef OSStatus 389(*AudioUnitRemovePropertyListenerProc) (void *self, AudioUnitPropertyID prop, 390 AudioUnitPropertyListenerProc proc); 391 392typedef OSStatus 393(*AudioUnitRemovePropertyListenerWithUserDataProc) (void *self, AudioUnitPropertyID prop, 394 AudioUnitPropertyListenerProc proc, void * _Nullable userData); 395 396typedef OSStatus 397(*AudioUnitAddRenderNotifyProc) (void *self, AURenderCallback proc, void * _Nullable userData); 398 399typedef OSStatus 400(*AudioUnitRemoveRenderNotifyProc) (void *self, AURenderCallback proc, void * _Nullable userData); 401 402typedef OSStatus 403(*AudioUnitScheduleParametersProc) (void *self, const AudioUnitParameterEvent *events, UInt32 numEvents); 404 405typedef OSStatus 406(*AudioUnitResetProc) (void *self, AudioUnitScope inScope, AudioUnitElement inElement); 407 408typedef OSStatus 409(*AudioUnitComplexRenderProc) (void *self, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp *inTimeStamp, 410 UInt32 inOutputBusNumber, UInt32 inNumberOfPackets, UInt32 *outNumberOfPackets, 411 AudioStreamPacketDescription *outPacketDescriptions, AudioBufferList *ioData, 412 void *outMetadata, UInt32 *outMetadataByteSize); 413 414typedef OSStatus 415(*AudioUnitProcessProc) (void *self, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp *inTimeStamp, 416 UInt32 inNumberFrames, AudioBufferList *ioData); 417 418typedef OSStatus 419(*AudioUnitProcessMultipleProc) (void *self, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp *inTimeStamp, 420 UInt32 inNumberFrames, UInt32 inNumberInputBufferLists, const AudioBufferList * _Nonnull * _Nonnull inInputBufferLists, 421 UInt32 inNumberOutputBufferLists, AudioBufferList * _Nonnull * _Nonnull ioOutputBufferLists); 422typedef OSStatus 423(*AudioUnitGetParameterProc)( void * inComponentStorage, 424 AudioUnitParameterID inID, 425 AudioUnitScope inScope, 426 AudioUnitElement inElement, 427 AudioUnitParameterValue * outValue); 428typedef OSStatus 429(*AudioUnitSetParameterProc)( void * inComponentStorage, 430 AudioUnitParameterID inID, 431 AudioUnitScope inScope, 432 AudioUnitElement inElement, 433 AudioUnitParameterValue inValue, 434 UInt32 inBufferOffsetInFrames); 435typedef OSStatus 436(*AudioUnitRenderProc)( void * inComponentStorage, 437 AudioUnitRenderActionFlags * _Nullable ioActionFlags, 438 const AudioTimeStamp * inTimeStamp, 439 UInt32 inOutputBusNumber, 440 UInt32 inNumberFrames, 441 AudioBufferList * ioData); 442 443enum { 444 kAudioUnitErr_IllegalInstrument = -10873, 445 kAudioUnitErr_InstrumentTypeNotFound = -10872, 446} __attribute__((deprecated)); 447 448#ifdef __cplusplus 449} 450#endif 451 452#endif 453