Почему мы используем только первый буфер в проекте 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.mДанные?


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


Ответы (2)


Поскольку на вашем iPhone только 1 микрофон, сэмплы в 2 буферах стереоканалов (левый и правый) идентичны. Поскольку второй буфер просто избыточен (или в некоторых конфигурациях пуст), эти данные не нужно анализировать (снова).

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