Защо използваме само първия буфер в проекта aurioTouch

Проучвам aurioTouch2 примерен код.< br> И забелязах, че когато анализираме аудио данни, използваме само първия буфер от тези данни и никога други буфери. в 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->mBuffers1.mData?


person Paul T.    schedule 16.07.2012    source източник


Отговори (2)


Тъй като има само 1 микрофон на вашия iPhone, семплите в буферите на 2 стерео канала (L и R) са идентични. Тъй като вторият буфер е просто излишен (или в някои конфигурации празен), тези данни там не е необходимо да се анализират (отново).

person hotpaw2    schedule 17.07.2012

Може би греша, но сега има разлика какъв буфер да използвам. Имате само 2 буфера: mBuffers[0] и mBuffers1. Опитах се да използвам буфер 0 в спектрограмата и след това буфер 1 (произнасяне на еднакви звуци). Лявата част на изображението е направена с помощта на буфер 0; дясна част - с помощта на буфер 1 (десният пик е направен при правене на моментна снимка).

Така че, можете да видите, няма разлика.

въведете описание на изображението тук

person Paul T.    schedule 17.07.2012
comment
Също така се опитвам да интегрирам проекта auriotouch в моето приложение. Опитвам се от много време и все не мога да го разбера. И така, можете ли да ми помогнете да разреша този проблем? - person The X-Coder; 27.03.2013