this repo has no description
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
21#include <AudioToolbox/AUComponent.h>
22#include <AudioToolbox/AudioOutputUnit.h>
23#include <CarbonCore/MacErrors.h>
24#include "ComponentDispatch.h"
25
26const CFStringRef kAudioComponentRegistrationsChangedNotification = CFSTR("AudioComponentRegistrationsChangedNotification");
27const CFStringRef kAudioComponentInstanceInvalidationNotification = CFSTR("AudioComponentInstanceInvalidationNotification");
28
29OSStatus AudioOutputUnitStart(AudioUnit ci)
30{
31 return dispatchCall(ci, kAudioOutputUnitStartSelect);
32}
33
34OSStatus AudioOutputUnitStop(AudioUnit ci)
35{
36 return dispatchCall(ci, kAudioOutputUnitStopSelect);
37}
38
39OSStatus AudioUnitInitialize(AudioUnit inUnit)
40{
41 return dispatchCall(inUnit, kAudioUnitInitializeSelect);
42}
43
44OSStatus AudioUnitUninitialize(AudioUnit inUnit)
45{
46 return dispatchCall(inUnit, kAudioUnitUninitializeSelect);
47}
48
49OSStatus
50AudioUnitGetPropertyInfo(AudioUnit inUnit,
51 AudioUnitPropertyID inID,
52 AudioUnitScope inScope,
53 AudioUnitElement inElement,
54 UInt32 * _Nullable outDataSize,
55 Boolean * _Nullable outWritable)
56{
57 return dispatchCall(inUnit, kAudioUnitGetPropertyInfoSelect, inID, inScope, inElement, outDataSize, outWritable);
58}
59
60OSStatus
61AudioUnitGetProperty(AudioUnit inUnit,
62 AudioUnitPropertyID inID,
63 AudioUnitScope inScope,
64 AudioUnitElement inElement,
65 void * outData,
66 UInt32 * ioDataSize)
67{
68 return dispatchCall(inUnit, kAudioUnitGetPropertySelect, inID, inScope, inElement, outData, ioDataSize);
69}
70
71OSStatus
72AudioUnitSetProperty(AudioUnit inUnit,
73 AudioUnitPropertyID inID,
74 AudioUnitScope inScope,
75 AudioUnitElement inElement,
76 const void * _Nullable inData,
77 UInt32 inDataSize)
78{
79 return dispatchCall(inUnit, kAudioUnitSetPropertySelect, inID, inScope, inElement, inData, inDataSize);
80}
81
82OSStatus
83AudioUnitAddPropertyListener(AudioUnit inUnit,
84 AudioUnitPropertyID inID,
85 AudioUnitPropertyListenerProc inProc,
86 void * _Nullable inProcUserData)
87{
88 return dispatchCall(inUnit, kAudioUnitAddPropertyListenerSelect, inID, inProc, inProcUserData);
89}
90
91OSStatus
92AudioUnitRemovePropertyListenerWithUserData(
93 AudioUnit inUnit,
94 AudioUnitPropertyID inID,
95 AudioUnitPropertyListenerProc inProc,
96 void * _Nullable inProcUserData)
97{
98 return dispatchCall(inUnit, kAudioUnitRemovePropertyListenerWithUserDataSelect, inID, inProc, inProcUserData);
99}
100
101OSStatus
102AudioUnitAddRenderNotify(AudioUnit inUnit,
103 AURenderCallback inProc,
104 void * _Nullable inProcUserData)
105{
106 return dispatchCall(inUnit, kAudioUnitAddRenderNotifySelect, inProc, inProcUserData);
107}
108
109OSStatus
110AudioUnitRemoveRenderNotify(AudioUnit inUnit,
111 AURenderCallback inProc,
112 void * _Nullable inProcUserData)
113{
114 return dispatchCall(inUnit, kAudioUnitRemoveRenderNotifySelect, inProc, inProcUserData);
115}
116
117OSStatus
118AudioUnitGetParameter(AudioUnit inUnit,
119 AudioUnitParameterID inID,
120 AudioUnitScope inScope,
121 AudioUnitElement inElement,
122 AudioUnitParameterValue * outValue)
123{
124 return dispatchCall(inUnit, kAudioUnitGetParameterSelect, inID, inScope, inElement, outValue);
125}
126
127OSStatus
128AudioUnitSetParameter(AudioUnit inUnit,
129 AudioUnitParameterID inID,
130 AudioUnitScope inScope,
131 AudioUnitElement inElement,
132 AudioUnitParameterValue inValue,
133 UInt32 inBufferOffsetInFrames)
134{
135 return dispatchCall(inUnit, kAudioUnitSetParameterSelect, inID, inScope, inElement, inValue, inBufferOffsetInFrames);
136}
137
138OSStatus
139AudioUnitScheduleParameters(AudioUnit inUnit,
140 const AudioUnitParameterEvent * inParameterEvent,
141 UInt32 inNumParamEvents)
142{
143 return dispatchCall(inUnit, kAudioUnitScheduleParametersSelect, inParameterEvent, inNumParamEvents);
144}
145
146OSStatus
147AudioUnitRender(AudioUnit inUnit,
148 AudioUnitRenderActionFlags * _Nullable ioActionFlags,
149 const AudioTimeStamp * inTimeStamp,
150 UInt32 inOutputBusNumber,
151 UInt32 inNumberFrames,
152 AudioBufferList * ioData)
153{
154 return dispatchCall(inUnit, kAudioUnitRenderSelect, ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData);
155}
156
157OSStatus
158AudioUnitProcess (AudioUnit inUnit,
159 AudioUnitRenderActionFlags * _Nullable ioActionFlags,
160 const AudioTimeStamp * inTimeStamp,
161 UInt32 inNumberFrames,
162 AudioBufferList * ioData)
163{
164 // TODO
165 return unimpErr;
166}
167
168OSStatus
169AudioUnitProcessMultiple(AudioUnit inUnit,
170 AudioUnitRenderActionFlags * _Nullable ioActionFlags,
171 const AudioTimeStamp * inTimeStamp,
172 UInt32 inNumberFrames,
173 UInt32 inNumberInputBufferLists,
174 const AudioBufferList * _Nonnull * _Nonnull inInputBufferLists,
175 UInt32 inNumberOutputBufferLists,
176 AudioBufferList * _Nonnull * _Nonnull ioOutputBufferLists)
177{
178 // TODO
179 return unimpErr;
180}
181
182OSStatus
183AudioUnitReset(AudioUnit inUnit,
184 AudioUnitScope inScope,
185 AudioUnitElement inElement)
186{
187 return dispatchCall(inUnit, kAudioUnitResetSelect, inScope, inElement);
188}
189
190OSStatus
191AudioUnitExtensionSetComponentList(CFStringRef extensionIdentifier, _Nullable CFArrayRef audioComponentInfo)
192{
193 // TODO
194 return unimpErr;
195}
196
197_Nullable CFArrayRef
198AudioUnitExtensionCopyComponentList(CFStringRef extensionIdentifier)
199{
200 // TODO
201 return nullptr;
202}
203