Аудио высокого разрешения

Версия Android 10 включает следующие улучшения для звука высокого разрешения:

  • Float: кодеки WAV, FLAC и экстракторы обновлены для поддержки float (24+ бит точности без потерь). Эффекты Downmix и Virtualizer теперь плавающие. Обновленная точность разрешена MediaPlayer (NuPlayer).
  • Высокая частота: кодеки WAV, FLAC и экстракторы обновлены для поддержки 192 кГц. Эффекты, поставляемые Android по умолчанию, протестированы на поддержку 192 кГц на стандартных частотах. Допустимые стандартные частоты: 88,2 кГц, 96 кГц, 176,4 кГц и 192 кГц.
  • Многоканальность: стандартные эффекты воспроизведения Android проверены на многоканальную поддержку до восьми каналов.
  • Синхронизация: информация о времени включена во всю аудиосистему.

Начиная с Android 9, следующие улучшения не требуют реализации партнером:

  • Количество одновременных клиентских выходных дорожек увеличивается с 14 до 40, так как ограниченные клиентские экземпляры AudioTrack были проблемой для приложений в Android 8.x.
  • Максимальный объем памяти клиента/сервера увеличивается с 4 МБ до 32 МБ (в зависимости от общего объема памяти устройства), что позволяет одновременно воспроизводить больше звуковых дорожек высокого разрешения.
  • Общее количество смешанных треков увеличивается с 32 до 256, чтобы предотвратить конкуренцию за ресурсы между приложениями и пользовательским интерфейсом системы.

Изменения выходного эффекта

См. раздел « Аудиоэффекты для изменений версии Android 11».

До выпуска Android 9 обработка цепочки эффектов была реализована в формате сэмпла стерео int16. Это имело несколько ограничений:

  • Все выходные эффекты принудительно преобразовывали аудиоданные с плавающей запятой в int16, что приводило к потере точности.
  • Выходные эффекты были отклонены от выходных приемников с числом каналов больше двух.

В выпуске Android 9 конвейер обработки цепочки эффектов обновлен для поддержки многоканального формата с плавающей запятой. Ключевые моменты:

  • Программные эффекты Android уже перенесены в стереофоническое плавание.
  • Устаревшие эффекты поддерживаются адаптерами формата, которые при необходимости преобразуют float в int16.

Реализация выходных эффектов

Эталонная реализация выходных эффектов доступна в frameworks/av/media/libeffects .

Партнеры, реализующие свои собственные выходные эффекты, должны выполнить следующие действия для выпуска Android 10:

  • Обновите выходные эффекты для поддержки многоканального формата float:
    • Поддержка обработки Int16 больше не требуется.
    • Поддержка количества выходных каналов от 2 до 8 (для совместимости в будущем рассмотрите количество от 1 до 30).
    • Поддержка счетчиков входных каналов, соответствующих счетчикам выходных каналов для инсерт-эффектов. Вспомогательные эффекты по-прежнему имеют количество входных каналов равное 1 (моно).
    • Поддерживайте как маски положения канала (канонические), так и маски индекса канала (1 << n) - 1 .
  • Если вы должны продолжать поддерживать выходные эффекты устаревшего поставщика и не можете их обновить, проверьте устаревший код следующим образом:
    • Устаревшие эффекты вывода (вставки) должны отклонять неподдерживаемые конфигурации в EFFECT_CMD_SET_CONFIG .
      • Убедитесь, что формат int16.
      • Убедитесь, что маски входных и выходных каналов являются стереофоническими.
      • Если какая-либо проверка не пройдена, верните -EINVAL .
    • Устаревшие выходные (вспомогательные) эффекты настраиваются AudioFlinger с маской моно входного канала и потенциально многоканальными масками выходного канала, в зависимости от того, является ли выходной приемник многоканальным. Они должны отклонять неподдерживаемые конфигурации в EFFECT_CMD_SET_CONFIG .
      • Убедитесь, что формат int16.
      • Убедитесь, что маска входного канала моно, а маска выходного канала стерео.
      • Если какая-либо проверка не пройдена, верните -EINVAL .
    • Проверьте устаревший код. Не думайте, что это работает!