commit 50acd42bfff0667b50d1b8a632ae47c85f241346
parent 0a6162cd425457e6e7401982ae4677951953448c
Author: falkTX <falktx@falktx.com>
Date: Wed, 21 Feb 2024 22:19:53 +0100
Add enough AU bits so that auval finishes (but fails)
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
1 file changed, 56 insertions(+), 26 deletions(-)
diff --git a/distrho/src/DistrhoPluginAU.cpp b/distrho/src/DistrhoPluginAU.cpp
@@ -216,6 +216,11 @@ public:
outWritable = true;
*/
break;
+ case kAudioUnitProperty_MakeConnection:
+ DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Global || inScope == kAudioUnitScope_Input, inScope, kAudioUnitErr_InvalidScope);
+ outDataSize = sizeof(AudioUnitConnection);
+ outWritable = true;
+ return noErr;
case kAudioUnitProperty_SampleRate:
break;
case kAudioUnitProperty_ParameterList:
@@ -253,6 +258,11 @@ public:
outDataSize = sizeof(UInt32);
outWritable = true;
return noErr;
+ case kAudioUnitProperty_SetRenderCallback:
+ DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Input, inScope, kAudioUnitErr_InvalidScope);
+ outDataSize = sizeof(AURenderCallbackStruct);
+ outWritable = true;
+ return noErr;
#if DISTRHO_PLUGIN_HAS_UI
case kAudioUnitProperty_CocoaUI:
outDataSize = sizeof(AudioUnitCocoaViewInfo);
@@ -395,6 +405,9 @@ public:
case kAudioUnitProperty_MaximumFramesPerSlice:
*static_cast<UInt32*>(outData) = fPlugin.getBufferSize();
return noErr;
+ case kAudioUnitProperty_SetRenderCallback:
+ // TODO
+ break;
#if DISTRHO_PLUGIN_HAS_UI
case kAudioUnitProperty_CocoaUI:
{
@@ -433,6 +446,9 @@ public:
*static_cast<CFPropertyListRef*>(inData);
*/
break;
+ case kAudioUnitProperty_MakeConnection:
+ // TODO
+ return noErr;
case kAudioUnitProperty_StreamFormat:
DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Input || inScope == kAudioUnitScope_Output, inScope, kAudioUnitErr_InvalidScope);
DISTRHO_SAFE_ASSERT_UINT_RETURN(inElement == 0, inElement, kAudioUnitErr_InvalidElement);
@@ -463,6 +479,10 @@ public:
DISTRHO_SAFE_ASSERT_UINT_RETURN(inDataSize == sizeof(UInt32), inDataSize, kAudioUnitErr_InvalidPropertyValue);
fPlugin.setBufferSize(*static_cast<const UInt32*>(inData));
return noErr;
+ case kAudioUnitProperty_SetRenderCallback:
+ DISTRHO_SAFE_ASSERT_UINT_RETURN(inScope == kAudioUnitScope_Input, inScope, kAudioUnitErr_InvalidScope);
+ // TODO
+ return noErr;
}
return kAudioUnitErr_InvalidProperty;
@@ -529,6 +549,18 @@ public:
return noErr;
}
+ OSStatus auRender(AudioUnitRenderActionFlags& ioActionFlags,
+ const AudioTimeStamp& inTimeStamp,
+ const UInt32 inBusNumber,
+ const UInt32 inFramesToProcess,
+ AudioBufferList& ioData)
+ {
+ if (inFramesToProcess > fPlugin.getBufferSize())
+ return kAudioUnitErr_TooManyFramesToProcess;
+
+ return noErr;
+ }
+
OSStatus auReset(const AudioUnitScope scope, const AudioUnitElement elem)
{
return noErr;
@@ -539,31 +571,6 @@ protected:
// ----------------------------------------------------------------------------------------------------------------
// ComponentBase AU dispatch
- OSStatus GetParameter(const AudioUnitParameterID inParameterID,
- const AudioUnitScope inScope,
- const AudioUnitElement inElement,
- AudioUnitParameterValue& outValue) override
- {
- DISTRHO_SAFE_ASSERT_INT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope);
- DISTRHO_SAFE_ASSERT_UINT_RETURN(inParameterID < fParameterCount, inParameterID, kAudioUnitErr_InvalidParameter);
-
- return fPlugin.getParameterValue(inParameterID);
- }
-
- OSStatus SetParameter(AudioUnitParameterID inParameterID,
- const AudioUnitScope inScope,
- const AudioUnitElement inElement,
- const AudioUnitParameterValue inValue,
- const UInt32 inBufferOffsetInFrames) override
- {
- DISTRHO_SAFE_ASSERT_INT_RETURN(inScope == kAudioUnitScope_Global, inScope, kAudioUnitErr_InvalidScope);
- DISTRHO_SAFE_ASSERT_UINT_RETURN(inParameterID < fParameterCount, inParameterID, kAudioUnitErr_InvalidParameter);
-
- PluginBase::SetParameter(inParameterID, inScope, inElement, inValue, inBufferOffsetInFrames);
- fPlugin.setParameterValue(inParameterID, inValue);
- return noErr;
- }
-
OSStatus Render(AudioUnitRenderActionFlags& ioActionFlags,
const AudioTimeStamp& inTimeStamp,
const UInt32 nFrames) override
@@ -705,9 +712,9 @@ struct AudioComponentPlugInInstance {
return reinterpret_cast<AudioComponentMethod>(SetParameter);
case kAudioUnitScheduleParametersSelect:
return reinterpret_cast<AudioComponentMethod>(ScheduleParameters);
- /*
case kAudioUnitRenderSelect:
return reinterpret_cast<AudioComponentMethod>(Render);
+ /*
case kAudioUnitComplexRenderSelect:
return reinterpret_cast<AudioComponentMethod>(ComplexRender);
*/
@@ -924,6 +931,29 @@ struct AudioComponentPlugInInstance {
return self->plugin->auReset(scope, elem);
}
+ static OSStatus Render(AudioComponentPlugInInstance* const self,
+ AudioUnitRenderActionFlags* ioActionFlags,
+ const AudioTimeStamp* const inTimeStamp,
+ const UInt32 inOutputBusNumber,
+ const UInt32 inNumberFrames,
+ AudioBufferList* const ioData)
+ {
+ d_stdout("AudioComponentPlugInInstance::Render(%p, %p, %p, %u, %u, %p)",
+ self, ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData);
+ DISTRHO_SAFE_ASSERT_RETURN(inTimeStamp != nullptr, kAudio_ParamError);
+ DISTRHO_SAFE_ASSERT_RETURN(ioData != nullptr, kAudio_ParamError);
+
+ AudioUnitRenderActionFlags tmpFlags;
+
+ if (ioActionFlags == nullptr)
+ {
+ tmpFlags = 0;
+ ioActionFlags = &tmpFlags;
+ }
+
+ return self->plugin->auRender(*ioActionFlags, *inTimeStamp, inOutputBusNumber, inNumberFrames, *ioData);
+ }
+
DISTRHO_DECLARE_NON_COPYABLE(AudioComponentPlugInInstance)
};