В Android 10 включены следующие улучшения для воспроизведения звука высокого разрешения:
- Поддержка формата Float: кодеки WAV и FLAC, а также экстракторы обновлены для поддержки формата Float (24+ бита точности без потерь). Эффекты Downmix и Virtualizer обновлены для работы с форматом Float. Обновленная точность поддерживается 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 уже перенесены в формат стереофонического плавающего изображения.
- Поддерживаются устаревшие эффекты с помощью адаптеров формата, которые при необходимости преобразуют числа с плавающей запятой в целочисленное значение типа int16.
Реализация результатов
Эталонная реализация эффектов вывода доступна в папке frameworks/av/media/libeffects .
Партнерам, внедряющим собственные пользовательские эффекты вывода, следует выполнить следующие действия для выпуска Android 10:
- Обновите выходные эффекты для поддержки многоканального формата с плавающей запятой:
- Поддержка обработки чисел типа Int16 больше не требуется.
- Поддерживается количество выходных каналов от 2 до 8 (для обеспечения совместимости в будущем следует рассмотреть возможность увеличения количества каналов с 1 до 30).
- Поддерживается соответствие количества входных каналов количеству выходных каналов для эффектов вставки. Для вспомогательных эффектов количество входных каналов по-прежнему равно 1 (моно).
- Поддерживаются как маски положения канала (канонические), так и маски индекса канала
(1 << n) - 1.
- Если вам необходимо продолжать поддерживать эффекты вывода данных от устаревшего поставщика и вы не можете их обновить, проверьте устаревший код следующим образом:
- Для устаревших эффектов вывода (вставки) необходимо отклонять неподдерживаемые конфигурации в
EFFECT_CMD_SET_CONFIG.- Убедитесь, что формат — int16.
- Убедитесь, что маски входного и выходного каналов соответствуют стереофоническому режиму.
- Если хотя бы одна из проверок не пройдена, вернуть
-EINVAL.
- Эффекты вспомогательного (монофонического) выхода настраиваются программой AudioFlinger с помощью маски монофонического входного канала и, возможно, многоканальных масок выходных каналов, в зависимости от того, является ли выходной канал многоканальным. Необходимо отклонить неподдерживаемые конфигурации в
EFFECT_CMD_SET_CONFIG.- Убедитесь, что формат — int16.
- Убедитесь, что маска входного канала — моно, а маска выходного канала — стерео.
- Если хотя бы одна из проверок не пройдена, вернуть
-EINVAL.
- Проверяйте устаревший код. Не стоит предполагать, что он работает!
- Для устаревших эффектов вывода (вставки) необходимо отклонять неподдерживаемые конфигурации в