It looks like AttachProcessor and DetachProcessor are calling ::SetAudioStreamCallback(*this, processor); rather than ::AttachAudioStreamProcessor(*this, processor). Same for AudioStreamDetachProcessor.
Is this an optimization of some kind I'm not aware of? It does't look to be since Attach and Detach Audio Processor utilize a linked-list data structure, even if they share the same callback type with SetAudioStreamCallback.