Модификация aurioTouch для сохранения записи в виде файла wav или caf - PullRequest
2 голосов
/ 13 августа 2011

Я хочу изменить aurioTouch, чтобы сохранить запись, поступающую через микрофон, в файл в формате, который позже можно будет воспроизвести на iphone, используя AVAudioPlayer. Но я немного растерялся, как создать этот файл, используя данные PCM, поступающие из буферов данных. Например, в PerformThru я также сохраняю в буфер сохранения:

SInt8 *data_ptr = (SInt8 *)(ioData->mBuffers[0].mData);
NSString * s = [NSString stringWithFormat:@"%d", data_ptr[2]];
    for (i=0; i<inNumberFrames; i++)
    {
        if ((i+drawBufferIdx) >= drawBufferLen)
        {
            //cycleOscilloscopeLines();
            drawBufferIdx = -i;
        }
        drawBuffers[0][i + drawBufferIdx] = data_ptr[2];

        if ( saveBuffer ) { saveBuffer[ saveBufferIdx++ ] = ( data_ptr[ 2 ] ); }
        data_ptr += 4;
    }

позже я записываю saveBuffer в файл

std::ofstream bufferOut;
bufferOut.open( "myaudio.wav" );
for ( UInt64 i = 0; i < saveBufferIdx; i++ )
{
    bufferOut << saveBuffer[ i ];
}
bufferOut.close();
free( saveBuffer );

Это определенно выходит не так (не играет). Кто-нибудь знает, как правильно захватить PCM и сохранить в файл?

...