Версия 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
.
- Проверьте устаревший код. Не думайте, что это работает!
- Устаревшие эффекты вывода (вставки) должны отклонять неподдерживаемые конфигурации в