Как я могу изменить пример приложения SpeakHere для записи в моно формате на iPhone? - PullRequest
1 голос
/ 10 марта 2011

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

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

Вот ссылка на разговор.

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

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;
        }
    }

1 Ответ

0 голосов
/ 19 января 2012

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

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

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

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

...