我正在尝试使用远程I / O在iOS中进行主动降噪。我已经能够以8.24定点格式获得音频缓冲区并将其放入扬声器中。现在我正试图通过麦克风捕获正弦波(使用onlinetonegenerator.com)并反转我通过回调得到的每帧中的幅度。这是我的代码:
static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
AppDelegate *THIS = (AppDelegate *)inRefCon;
OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
for(int i = 0; i < ioData->mNumberBuffers; ++i) {
Float32 *flptr = (Float32 *)ioData->mBuffers[i].mData;
for(int j = 0; j < inNumberFrames; ++j) {
*flptr *= -1.; // inverting the buffer value
flptr++;
}
}
return err;
}
但输出音似乎不会产生破坏性干扰。我感觉到,当我运行应用程序时,周期性的幅度变化,但它不会取消输入声音。
我认为可能还有两个因素:
任何想法如何在AudioUnit中处理这些问题?
非常感谢!
答案 0 :(得分:0)
您似乎使用kAudioUnitSubType_RemoteIO
。
您是否尝试使用kAudioUnitSubType_VoiceProcessingIO
?
可能会有所帮助。
此音频单元执行信号处理 传入的音频(取出从设备播放的任何音频) 在来自传入音频的给定时间)。