Как изменить образец приложения SpeakHere для записи в монофоническом формате на iPhone?

Я новичок в айфоне. Не могли бы вы помочь мне изменить приложение SpeakHere от Apple для записи в монофоническом формате. Что я должен установить для mChannelsPerFrame и что еще я должен установить?

Я уже переделываю часть для записи в формате linearPCM WAVE.

Вот ссылка на speakHere.

Вот что, я думаю, они позволяют мне изменить, но я не совсем понимаю звук:

void ChangeNumberChannels(UInt32 nChannels, bool interleaved)
                // alter an existing format
    {
        Assert(IsPCM(), "ChangeNumberChannels only works for PCM formats");
        UInt32 wordSize = SampleWordSize(); // get this before changing ANYTHING
        if (wordSize == 0)
            wordSize = (mBitsPerChannel + 7) / 8;
        mChannelsPerFrame = nChannels;
        mFramesPerPacket = 1;
        if (interleaved) {
            mBytesPerPacket = mBytesPerFrame = nChannels * wordSize;
            mFormatFlags &= ~kAudioFormatFlagIsNonInterleaved;
        } else {
            mBytesPerPacket = mBytesPerFrame = wordSize;
            mFormatFlags |= kAudioFormatFlagIsNonInterleaved;
        }
    }

person Arty    schedule 10.03.2011    source источник
comment
Нужно ли использовать аудио очереди? Вы видели AVAudioFramework для AVAudioRecorder?   -  person Viraj    schedule 10.03.2011


Ответы (1)


На iPhone вы сможете записывать только в моно.

Вам не нужно ничего делать, чтобы настроить это в примере SpeakHere. Это делается автоматически. Например, в AQRecorder::SetupAudioFormat:

size = sizeof(mRecordFormat.mChannelsPerFrame);
XThrowIfError(AudioSessionGetProperty(  kAudioSessionProperty_CurrentHardwareInputNumberChannels, 
                &size, 
                &mRecordFormat.mChannelsPerFrame), "couldn't get input channel count");

Это получает поддерживаемые аппаратные входные каналы и устанавливает их как ivar. В других случаях это будет учитываться при расчете размера буфера.

person Max MacLeod    schedule 19.01.2012