Tag: 频率

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

我正在调查aurioTouch2示例代码。 我注意到,当我们分析audio数据时,我们只使用这个数据的第一个缓冲区,而不使用其他的缓冲区。 在void FFTBufferManager::GrabAudioData(AudioBufferList *inBL)函数中: UInt32 bytesToCopy = min(inBL->mBuffers[0].mDataByteSize, mAudioBufferSize – mAudioBufferCurrentIndex * sizeof(Float32)); memcpy(mAudioBuffer+mAudioBufferCurrentIndex, inBL->mBuffers[0].mData, bytesToCopy); function 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中的数据?