/* This file is part of Darling. Copyright (C) 2020 Lubos Dolezel Darling is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Darling is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Darling. If not, see . */ #include #include #include #include "ComponentDispatch.h" const CFStringRef kAudioComponentRegistrationsChangedNotification = CFSTR("AudioComponentRegistrationsChangedNotification"); const CFStringRef kAudioComponentInstanceInvalidationNotification = CFSTR("AudioComponentInstanceInvalidationNotification"); OSStatus AudioOutputUnitStart(AudioUnit ci) { return dispatchCall(ci, kAudioOutputUnitStartSelect); } OSStatus AudioOutputUnitStop(AudioUnit ci) { return dispatchCall(ci, kAudioOutputUnitStopSelect); } OSStatus AudioUnitInitialize(AudioUnit inUnit) { return dispatchCall(inUnit, kAudioUnitInitializeSelect); } OSStatus AudioUnitUninitialize(AudioUnit inUnit) { return dispatchCall(inUnit, kAudioUnitUninitializeSelect); } OSStatus AudioUnitGetPropertyInfo(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32 * _Nullable outDataSize, Boolean * _Nullable outWritable) { return dispatchCall(inUnit, kAudioUnitGetPropertyInfoSelect, inID, inScope, inElement, outDataSize, outWritable); } OSStatus AudioUnitGetProperty(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void * outData, UInt32 * ioDataSize) { return dispatchCall(inUnit, kAudioUnitGetPropertySelect, inID, inScope, inElement, outData, ioDataSize); } OSStatus AudioUnitSetProperty(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void * _Nullable inData, UInt32 inDataSize) { return dispatchCall(inUnit, kAudioUnitSetPropertySelect, inID, inScope, inElement, inData, inDataSize); } OSStatus AudioUnitAddPropertyListener(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitPropertyListenerProc inProc, void * _Nullable inProcUserData) { return dispatchCall(inUnit, kAudioUnitAddPropertyListenerSelect, inID, inProc, inProcUserData); } OSStatus AudioUnitRemovePropertyListenerWithUserData( AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitPropertyListenerProc inProc, void * _Nullable inProcUserData) { return dispatchCall(inUnit, kAudioUnitRemovePropertyListenerWithUserDataSelect, inID, inProc, inProcUserData); } OSStatus AudioUnitAddRenderNotify(AudioUnit inUnit, AURenderCallback inProc, void * _Nullable inProcUserData) { return dispatchCall(inUnit, kAudioUnitAddRenderNotifySelect, inProc, inProcUserData); } OSStatus AudioUnitRemoveRenderNotify(AudioUnit inUnit, AURenderCallback inProc, void * _Nullable inProcUserData) { return dispatchCall(inUnit, kAudioUnitRemoveRenderNotifySelect, inProc, inProcUserData); } OSStatus AudioUnitGetParameter(AudioUnit inUnit, AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue * outValue) { return dispatchCall(inUnit, kAudioUnitGetParameterSelect, inID, inScope, inElement, outValue); } OSStatus AudioUnitSetParameter(AudioUnit inUnit, AudioUnitParameterID inID, AudioUnitScope inScope, AudioUnitElement inElement, AudioUnitParameterValue inValue, UInt32 inBufferOffsetInFrames) { return dispatchCall(inUnit, kAudioUnitSetParameterSelect, inID, inScope, inElement, inValue, inBufferOffsetInFrames); } OSStatus AudioUnitScheduleParameters(AudioUnit inUnit, const AudioUnitParameterEvent * inParameterEvent, UInt32 inNumParamEvents) { return dispatchCall(inUnit, kAudioUnitScheduleParametersSelect, inParameterEvent, inNumParamEvents); } OSStatus AudioUnitRender(AudioUnit inUnit, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp * inTimeStamp, UInt32 inOutputBusNumber, UInt32 inNumberFrames, AudioBufferList * ioData) { return dispatchCall(inUnit, kAudioUnitRenderSelect, ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData); } OSStatus AudioUnitProcess (AudioUnit inUnit, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp * inTimeStamp, UInt32 inNumberFrames, AudioBufferList * ioData) { // TODO return unimpErr; } OSStatus AudioUnitProcessMultiple(AudioUnit inUnit, AudioUnitRenderActionFlags * _Nullable ioActionFlags, const AudioTimeStamp * inTimeStamp, UInt32 inNumberFrames, UInt32 inNumberInputBufferLists, const AudioBufferList * _Nonnull * _Nonnull inInputBufferLists, UInt32 inNumberOutputBufferLists, AudioBufferList * _Nonnull * _Nonnull ioOutputBufferLists) { // TODO return unimpErr; } OSStatus AudioUnitReset(AudioUnit inUnit, AudioUnitScope inScope, AudioUnitElement inElement) { return dispatchCall(inUnit, kAudioUnitResetSelect, inScope, inElement); } OSStatus AudioUnitExtensionSetComponentList(CFStringRef extensionIdentifier, _Nullable CFArrayRef audioComponentInfo) { // TODO return unimpErr; } _Nullable CFArrayRef AudioUnitExtensionCopyComponentList(CFStringRef extensionIdentifier) { // TODO return nullptr; }