this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at vchroot 46 lines 2.0 kB view raw
1#ifndef AUDIOUNITBASE_H 2#define AUDIOUNITBASE_H 3 4#include "AudioUnit.h" 5#include "AudioUnitProperties.h" 6#include <vector> 7#include <set> 8#include <mutex> 9#include <CoreFoundation/CFString.h> 10#include <CoreServices/ComponentsInternal.h> 11 12class AudioUnitComponent : public CarbonComponent 13{ 14protected: 15 AudioUnitComponent(std::initializer_list<CFStringRef> elements); 16public: 17 virtual ~AudioUnitComponent(); 18 19 virtual OSStatus init() = 0; 20 virtual OSStatus deinit() = 0; 21 22 virtual OSStatus reset(AudioUnitScope inScope, AudioUnitElement inElement) = 0; 23 24 virtual OSStatus render(AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) = 0; 25 26 virtual OSStatus setProperty(AudioUnitPropertyID prop, AudioUnitScope scope, AudioUnitElement elem, const void* data, UInt32 dataSize); 27 virtual OSStatus getProperty(AudioUnitPropertyID prop, AudioUnitScope scope, AudioUnitElement elem, void* data, UInt32* dataSize); 28 virtual OSStatus getPropertyInfo(AudioUnitPropertyID prop, AudioUnitScope scope, AudioUnitElement elem, UInt32* dataSize, Boolean* writable); 29 30 OSStatus addRenderNotify(AURenderCallback inProc, void* opaque); 31 OSStatus removeRenderNotify(AURenderCallback inProc, void* opaque); 32 OSStatus notifyListeners(AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData); 33protected: 34 std::vector<CFStringRef> m_elementNames; 35 std::vector<std::pair<AudioStreamBasicDescription, AudioStreamBasicDescription>> m_config; 36 //AudioStreamBasicDescription m_configOutputPlayback, m_configInputPlayback, m_configInputCapture, m_configOutputCapture; 37 AudioUnitConnection m_inputUnit; 38 bool m_shouldAllocateBuffer = true; 39 OSStatus m_lastRenderError = 0; 40 CFStringRef m_contextName = nullptr; 41 std::mutex m_listenersMutex; 42 std::set<std::pair<AURenderCallback, void*>> m_listeners; 43}; 44 45#endif 46