gpt4 book ai didi

iphone - 为什么我们只使用 aurioTouch 项目中的第一个缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:39 24 4
gpt4 key购买 nike

我正在调查 aurioTouch2示例代码。
我注意到,当我们分析音频数据时,我们只使用该数据的第一个缓冲区,而不使用其他缓冲区。在 void FFTBufferManager::GrabAudioData(AudioBufferList *inBL) 函数中:

    UInt32 bytesToCopy = min(inBL->mBuffers[0].mDataByteSize, mAudioBufferSize - mAudioBufferCurrentIndex * sizeof(Float32));
memcpy(mAudioBuffer+mAudioBufferCurrentIndex, inBL->mBuffers[0].mData, bytesToCopy);

在函数中

static OSStatus PerformThru(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
if (THIS->displayMode == aurioTouchDisplayModeOscilloscopeWaveform)
{
AudioConverterConvertComplexBuffer(THIS->audioConverter, inNumberFrames, ioData, THIS->drawABL);
SInt8 *data_ptr = (SInt8 *)(THIS->drawABL->mBuffers[0].mData);
}

问题是为什么我们要忽略 inBL->mBuffers 1 中的数据.mData?

最佳答案

由于您的 iPhone 上只有 1 个麦克风,因此 2 个立体声 channel 缓冲区(左和右)中的样本是相同的。由于第二个缓冲区只是冗余的(或在某些配置中为空),因此不需要(再次)分析那里的数据。

关于iphone - 为什么我们只使用 aurioTouch 项目中的第一个缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11503139/

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