Максимальное значение для кадра AudioUnit?

У меня есть простой код, который использует AudioUnit для вывода синусоидальной волны на выход. Мой вопрос: каков диапазон значений, которые я должен помещать в кадры? Я имею в виду, что в функции AudioUnitRender я должен предоставить буферный массив с некоторыми аудиоданными... Итак, какие значения я должен ввести? В настоящее время я вставляю значения от -1 до 1, но вижу, что могу использовать и большие значения...

Итак, какое максимальное значение я должен использовать (которое соответствует 100% громкости)?

Спасибо :)


person xx77aBs    schedule 27.11.2011    source источник


Ответы (1)


Это полностью зависит от того, какой формат потока вы используете. Вы должны создать AudioStreamBasicDescription и установить его в качестве входного формата для вашего аудиоустройства. Существует множество различных форматов потоковой передачи, и каждый из них по-своему представляет, что такое «100% объем». Если вы выберете число с плавающей запятой, то оно будет, например, от -1,0 до 1,0, но если вы выберете 16-битное число без знака, оно будет от 0 до 65535.

Я не уверен, какой у вас уже есть код для настройки вашего аудиоустройства, но здесь показан хороший пример: http://atastypixel.com/blog/using-remoteio-audio-unit/

В этом примере вы заметите, что он создает AudioStreamBasicDescription и выбирает линейный PCM с флагом kAudioFormatFlagIsSignedInteger при 16 битах на канал и 1 канале. Это означает, что значения будут меняться от -32768 до 32767.

person mattjgalloway    schedule 28.11.2011