【发布时间】:2011-07-14 02:50:16
【问题描述】:
我的 C++ 技能很轻,但我设法完成了工作 - 直到我碰壁。当前墙:
我正在使用 CoreAudio 来做一些关于 Midi 播放的事情。我有很多工作,但被困在一个简单的事情上。 (我不知道正确的 C++ 术语,所以请耐心等待......)。
我在 CoreAudio 中使用渲染回调函数来指示 AU 何时渲染 midi 音符事件。如果我将它定义为非类函数并将其粘贴到 main.cpp (或 testApp.cpp ),它就可以工作 - 我得到了事件。问题是我需要能够让 testApp 的实例获取这些事件。
那么.. 有没有办法从 main.cpp 获取 testApp 的实例,这样我就可以调用我需要的 testApp 方法了?
或者是否有一些 C++ voodoo 有一个驻留在类中的非类函数调用实例的方法?比如下面的函数在我的类中,怎么会调用类的实例上的方法……
OSStatus renderCallback(void *inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData)
{
someClassMethod(); // doesn't work
this.someClassMethod(); // doesn't work
self.someClassMethod(); // doesn't work
}
我不确定,但我认为 CoreAudio 的东西不会将实例方法作为回调 - 至少这是我从错误消息(如下)中收集到的。无论如何我都很好。
感谢任何提示!
错误:OSStatus 类型的参数 (testApp::)(void*, AudioUnitRenderActionFlags*, const AudioTimeStamp*, UInt32, UInt32, AudioBufferList*)' 不匹配 'OSStatus ()(void, AudioUnitRenderActionFlags*, const AudioTimeStamp*, UInt32, UInt32, 音频缓冲区列表*)
【问题讨论】:
标签: c++ core-audio openframeworks