iOS: Audio Units: установка произвольной частоты дискретизации - PullRequest
5 голосов
/ 12 ноября 2010

Могу ли я установить любую частоту дискретизации, которую я хочу? Какие ограничения?

Как насчет аппаратной частоты дискретизации? И как только это будет установлено, каково ограничение на внутренние частоты дискретизации, передаваемые между единицами?

Я предполагаю, что фактическая аппаратная частота может быть с некоторым сдвигом в 44,1 кГц, а любая внутренняя частота дискретизации должна быть смещением вниз по битам по сравнению с этим исходным значением (например, 22,1 кГц, 11,05 кГц). Это близко?

Насколько я понимаю,
1. Я устанавливаю аппаратную частоту дискретизации из аудиосеанса.
2. Система будет устанавливать частоту дискретизации настолько близко, насколько это возможно к указанной мной частоте дискретизации.
3. Затем я запрашиваю аудио сеанс для того же свойства, которое я установил, что даст мне фактическую частоту дискретизации, которую он использует

На уровне аудиоустройств, в частности, модуля RemoteIO, в документации говорится, что две точки, в которых устройство подключается к аппаратному обеспечению (т. Е. Объем входного сигнала шины микрофона (вход) и объем выходного сигнала динамика (выход) )), частота дискретизации может быть извлечена , но не установлена ​​.

Однако я пытаюсь получить доступ к этому значению при создании модуля удаленного ввода-вывода, и он возвращает ноль. Я думаю, может быть, мне нужно запустить устройство, прежде чем я смогу получить значимые данные из его соединений (сам процесс запуска, вероятно, создает соединения). Таким образом, решение здесь, по-видимому, состоит в том, чтобы получить частоту дискретизации из аудиосеанса и использовать ее, как указано выше.

NEAG TAG: Аудиоустройство

1 Ответ

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

Я предполагаю, что вы находитесь на iOS, так как упоминаете AudioSessions.Итак, вы захотите:

  1. Проверить наличие оборудования для ввода звука.AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. Установите аудиосеанс в режим воспроизведения и записи.AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...) с kAudioSessionCategory_PlayAndRecord

  3. Активировать сеанс.AudioSessionSetActive()

  4. Получите предпочтительную частоту выборки.AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

Затем вы можете настроить цепочку обработки звука с правильной частотой дискретизации.

Что касается воспроизведения звука, вы можете использовать любую частоту дискретизации, и API должен преобразовать ее в аппаратную частоту дискретизации.Очевидно, что если вы используете очень высокую частоту дискретизации, это потребует много памяти и процессорного времени.

...