apple / apple/AudioUnitSDK

realtime Reset

Open
#8 2 comments 1 reaction 0 assignees View on GitHub
Dominant language
C++
Stars
223
Forks
48
PR merge metrics
No merged PRs in 30d

Description

I can't figure out how realtime-safe audio `Reset` is supposed to function in the 1.4.0 SDK release.

`AUBase::BaseReset` is a non-virtual no-op. The documentary comment says:
`if a derived class wishes to implement a safe Reset, it can call BaseReset()`
`AUBase::Reset` does as much, which will run the no-op. An override of `AUBase::Reset` could also call `BaseReset`, but it's still a no-op that cannot be itself overridden because it is not virtual, so what is the envisioned usage of this?

Similarly there is `ResetRT` in `AUEffectBase` which presents a means for by template invoking a non-virtual method also named `ResetRT` in `AUKernelBase`-derived classes, but still `ResetRT` is invoked nowhere in the existing `Reset` call paths, so I don't understand the purpose, why it is not a virtual method in `AUKernelBase` and called from `AUEffectBase` or anything like that?

And generally I am confused because `Reset` does need to be realtime safe and has strong reasons for being sometimes called from the realtime audio thread and definitely is by existing AU hosts, so I'm wondering why `AUBase::Reset` wasn't simply attributed as such, and then how any of these alternatives are actually expected to be used functionally by a client of the AU SDK?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.