this repo has no description
1#include "darling-config.h"
2#include "AudioUnit.h"
3#include "AudioOutputUnitComponent.h"
4#include "AudioUnitALSA.h"
5#include <log.h>
6#include <trace.h>
7#include <alsa/asoundlib.h>
8#include <CoreServices/MacErrors.h>
9
10OSStatus AudioUnitInitialize(AudioUnit inUnit)
11{
12 return inUnit->init();
13}
14
15OSStatus AudioUnitUninitialize(AudioUnit inUnit)
16{
17 return inUnit->deinit();
18}
19
20OSStatus AudioUnitAddRenderNotify(AudioUnit inUnit, AURenderCallback inProc, void* opaque)
21{
22 return inUnit->addRenderNotify(inProc, opaque);
23}
24
25OSStatus AudioUnitRemoveRenderNotify(AudioUnit inUnit, AURenderCallback inProc, void* opaque)
26{
27 return inUnit->removeRenderNotify(inProc, opaque);
28}
29
30OSStatus AudioUnitRender(AudioUnit inUnit, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inOutputBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData)
31{
32 OSStatus status;
33
34 if (inUnit == nullptr)
35 return paramErr;
36
37 *ioActionFlags |= kAudioUnitRenderAction_PreRender;
38 status = inUnit->notifyListeners(ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData);
39
40 if (status != noErr)
41 return status;
42
43 *ioActionFlags &= ~kAudioUnitRenderAction_PreRender;
44 status = inUnit->render(ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData);
45
46 if (status != noErr)
47 *ioActionFlags |= kAudioUnitRenderAction_PostRenderError;
48
49 *ioActionFlags |= kAudioUnitRenderAction_PostRender;
50 return inUnit->notifyListeners(ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData);
51}
52
53OSStatus AudioUnitReset(AudioUnit inUnit, AudioUnitScope inScope, AudioUnitElement inElement)
54{
55 return inUnit->reset(inScope, inElement);
56}
57
58OSStatus AudioUnitGetProperty(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void* outData, UInt32 *ioDataSize)
59{
60 return inUnit->getProperty(inID, inScope, inElement, outData, ioDataSize);
61}
62
63OSStatus AudioUnitGetPropertyInfo(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32 *outDataSize, Boolean *outWritable)
64{
65 return inUnit->getPropertyInfo(inID, inScope, inElement, outDataSize, outWritable);
66}
67
68OSStatus AudioUnitSetProperty(AudioUnit inUnit, AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void *inData, UInt32 inDataSize)
69{
70 return inUnit->setProperty(inID, inScope, inElement, inData, inDataSize);
71}
72
73OSStatus AudioOutputUnitStart(AudioUnit inUnit)
74{
75 return static_cast<AudioOutputUnitComponent*>(inUnit)->start();
76}
77
78OSStatus AudioOutputUnitStop(AudioUnit inUnit)
79{
80 return static_cast<AudioOutputUnitComponent*>(inUnit)->stop();
81}
82
83