Задержка звука для разработчиков приложений

Для наименьшей возможной задержки звука мы рекомендуем использовать собственный звук Android на основе OpenSL ES 1.0.1.

Контрольный список реализации

Чтобы использовать собственный звук Android:

  1. Загрузите и установите Android NDK . В остальной части этого документа мы будем предполагать, что NDKroot — это каталог, в который вы установили NDK.
  2. Прочтите сопроводительную документацию.
  3. Проверьте уровень API 9 или выше.
  4. Проверьте наличие функции android.hardware.audio.low_latency.
  5. Используйте рекомендуемый собственный размер буфера и частоту дискретизации, возвращаемые android.media.AudioManager.getProperty(java.lang.String)

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

  6. Обычно счетчика буферов OpenSL ES, равного 1, достаточно.
  7. Держите свои обработчики обратных вызовов короткими, без пикового использования ЦП или неограниченной блокировки. Избегайте инверсии приоритетов.
  8. Рассмотрите возможность использования неблокирующих алгоритмов для связи между входными и выходными обработчиками обратного вызова, а также между обработчиками обратного вызова и остальной частью вашего приложения.

Сопутствующая документация

OpenSLES 1.0.1

Используйте программу просмотра PDF для просмотра спецификации OpenSL 1.0.1. Это довольно длинная ссылка, и не вся она будет вам актуальна; но вам нужно будет проконсультироваться с ним для получения подробной информации об API.

Примечание . В этом документе описывается полная версия OpenSL ES 1.0.1, но собственный звук Android на самом деле основан на подмножестве OpenSL ES 1.0.1 с некоторыми специфичными для Android расширениями.

Документы, описывающие более поздние версии OpenSL ES, такие как 1.1, не относятся к Android.

OpenSL ES для Android

Документ «OpenSL ES для Android» входит в состав установки NDK и в настоящее время недоступен в Интернете. Откройте эту ссылку в браузере:

NDKroot/docs/Additional_library_docs/opensles/index.html

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

В разделе «Поддерживаемые функции OpenSL ES 1.0.1» описывается подмножество поддерживаемых Android.

В разделе «Расширения Android» описаны расширения для Android, которые не включены в базовую версию OpenSL ES 1.0.1.

Связь с OpenSL ES 1.0.1

На этой диаграмме Венна показана взаимосвязь между собственным звуком Android и OpenSL ES 1.0.1.

Диаграмма Венна

Рисунок 1. Диаграмма Венна

Другие источники

источник.android.com

Сайт source.android.com в первую очередь предназначен для OEM-производителей устройств Android и поставщиков SoC, поставляющих компоненты этим OEM-производителям.

Однако на этом сайте есть много полезной информации о задержке, поэтому вы можете просмотреть ее. См. статьи в Audio Latency.

android-ndk

Если у вас есть вопросы о том, как использовать собственный звук Android, вы можете задать их в группе обсуждения android-ndk.

Видео

Высококачественный звук на Android (Google I/O 2013)
Все видео посвящено задержке.
Создание отличных мультимедийных приложений на Android (Google I/O, 2014 г.)
Первые 14 минут посвящены звуку в целом и задержке ввода в частности.
Задержка звука: размеры буфера (100 Days of Google Dev)
Описывает взаимосвязь между задержкой звука, размерами буфера и планированием задач.