gpt4 book ai didi

ios - 从回调调用 objective-c 方法

转载 作者:行者123 更新时间:2023-11-28 19:00:22 28 4
gpt4 key购买 nike

首先我是新手!我正在尝试从麦克风获取音频数据并应用过滤器。我发现的过滤器是基于 NVDSP 过滤器的客观 c 方法。来自麦克风的过滤器方法和回调函数在下面。但我不知道如何连接点。如何从 performRender 回调中调用作为 FilterData 的 objective-c 方法?

static OSStatus performRender (void                     *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
UInt32 bus1 = 1;
CheckError(AudioUnitRender(effectState.rioUnit,
ioActionFlags,
inTimeStamp,
bus1,
inNumberFrames,
ioData), "Couldn't render from RemoteIO unit");


//how can I call the method here to apply filter on ioData->mBuffers[0].mData ?
//is this logical ? what should I do for best performance?


return noErr;
}



@implementation ViewController

...
...
-(float *) FilterData_rawSamples:(float *)samples
{
// setup Highpass filter
NVHighpassFilter *HPF;
HPF = [[NVHighpassFilter alloc] initWithSamplingRate:samplingRate];

HPF.cornerFrequency = 17500.0f;
HPF.Q = 0.5f;

[HPF filterData:samples numFrames:(UInt32)theFileLengthInFrames numChannels:1];
return samples;
}
...
...

@end

提前致谢

最佳答案

我没有看到您将回调连接到数据源(麦克风 API?)的代码。

通常在那个时候你会传入一个对象。我注意到回调的一个参数:

void                     *inRefCon

您没有使用的。查看文档 - 可能您可以传入您的 objective-c 对象,并且回调将使其可以通过参数访问。 inRefCon 听起来很模糊,它可能是您正在寻找的参数。

正确传入您的对象,然后在回调中转换 inRefCon。 (再次请查看文档,了解您正在进行的任何 API 调用,我猜它可能概述了这一点)。

关于ios - 从回调调用 objective-c 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26507442/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com