Порт Mac OS X App для iPhone - PullRequest
       3

Порт Mac OS X App для iPhone

0 голосов
/ 21 ноября 2011

У меня есть приложение для Mac OS X. Я хочу знать, как портировать следующий фрагмент кода для iPhone:

    AudioObjectPropertyAddress addr;
    addr.mSelector = kAudioDevicePropertyBufferFrameSize;
    addr.mScope = kAudioDevicePropertyScopeOutput;
    addr.mElement = kAudioObjectPropertyElementWildcard;

    uint32_t size = sizeof(uint32_t);
    uint32_t buff_size = 0;
    if(AudioObjectGetPropertyData(devId, &addr, 0, 0, 
                          &size, &buff_size) == noErr)
        return buff_size;

Я думаю, что Audio Session Service будет полезен в этом случае, но я не могу найти функцию, которая позволила бы мне получить размер буфера в ссылках.

1 Ответ

1 голос
/ 22 ноября 2011

Если вы используете API Audio Queue, вы предоставляете буферы размера, который вы определяете с помощью AudioQueueAllocateBuffer ().(Обратите внимание, что эти буферы AQ могут быть заполнены из буферов аудиодрайвера другого и непрозрачного размера.)

Если вы используете аудиоустройство RemoteIO, ОС выбирает фактический размер буфера, ОС может изменитьРазмер буфера во время выполнения, и ваш аудио обратный вызов должен быть достаточно гибким, чтобы обрабатывать заданный им размер буфера, даже если размер изменяется с обратного вызова на обратный вызов.

Для RemoteIO вы можете запросить предпочтительный размер буфера, используя:AudioSessionSetProperty с kAudioSessionProperty_PreferredHardwareIOBufferDuration.Вы должны преобразовать размер в эквивалентную длительность (учитывая частоту дискретизации и т. Д.), Но iOS может или не может удовлетворить этот запрос.

...