音频单元记录:增加缓冲区的容量

Spi*_*oxa 1 xcode core-audio audiounit ios

我正在为iPhone构建一个录音应用程序,我在其中使用远程音频设备.在对传入缓冲区执行某些音频分析后,我使用以下方法将缓冲区写入磁盘

ExtAudioFileWriteAsync

但是,我遇到的问题是记录的缓冲区比我想要的更安静.

我想通过在写入磁盘之前手动将它们乘以体积因子来增加缓冲区的容量.任何人都可以向我解释最好的方法吗?

(由于各种原因,最后阶段的手动调整比更改任何音频单元属性更有吸引力,否则这些属性对我的应用程序很有用.)

提前致谢!!

sbo*_*oth 5

您可以Accelerate.framework快速轻松地使用它.由于您使用的是AudioUnits,我假设您有解交错的浮点缓冲区,所以这样的东西应该可以工作:

float desiredGain = 1.06f; // or whatever linear gain you'd like
AudioBufferList *ioData; // audio from somewhere
for(UInt32 bufferIndex = 0; bufferIndex < ioData->mNumberBuffers; ++bufferIndex) {
  float *rawBuffer = (float *)ioData->mBuffers[bufferIndex].mData;
  vDSP_Length frameCount = ioData->mBuffers[bufferIndex].mDataByteSize / sizeof(float); // if you don't have it already
  vDSP_vsmul(rawBuffer, 1, &desiredGain, rawBuffer, 1, frameCount);
}
Run Code Online (Sandbox Code Playgroud)