gpt4 book ai didi

objective-c - 为DSP目的在C++中处理音频数据

转载 作者:行者123 更新时间:2023-12-02 23:00:08 25 4
gpt4 key购买 nike

我希望这个问题不要太含糊。我正在尝试从此Xcode项目中的音频缓冲区中获取信息,并使用它来执行一些DSP。

framebuffer指向我想传递给函数的值的数组,循环遍历并最终插入原始缓冲区。该方法将起到声音过滤器或效果的作用。

也许为了使我的问题尽可能清楚,我们是否可以举一个子例程的示例,该例程将向缓冲区中的每个样本添加0.25?

到目前为止的代码如下:

static OSStatus playbackCallback(void *inRefCon, 
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {

EAGLView *remoteIOplayer = (EAGLView *)inRefCon;
for (int i = 0 ; i < ioData->mNumberBuffers; i++){
//get the buffer to be filled

AudioBuffer buffer = ioData->mBuffers[i];
short *frameBuffer = (short*)buffer.mData;


for (int j = 0; j < inNumberFrames; j++){
// get NextPacket returns a 32 bit value, one frame.
frameBuffer[j] = [[remoteIOplayer inMemoryAudioFile] getNextPacket];
}

EAGLView* thisView = [[EAGLView alloc] init];

[thisView DoStuffWithTheRecordedAudio:ioData];
[thisView release];
}

return noErr;
}

最佳答案

在iOS设备上尝试在音频回调中执行UI或Open GL东西是一个坏主意。您需要使用队列或fifos等将回调和UI执行解耦。

就设备性能而言,尝试在实时音频的内部循环内执行Objective C消息传递也可能是一个非常糟糕的主意。在性能至关重要的内部循环中,坚持使用纯C / C++效果要好得多。

此外,向音频数据添加常量可能只会导致听不见的DC偏移。

关于objective-c - 为DSP目的在C++中处理音频数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4399806/

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