Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Аудио высокого разрешения
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
В версию 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 конвейер обработки цепочки эффектов обновлен для поддержки многоканального формата float. Ключевые моменты:
- Эффекты программного обеспечения 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
.
- Эффекты выходного сигнала Legacy (вспомогательные) настраиваются AudioFlinger с маской входного канала моно и потенциально многоканальными масками выходного канала в зависимости от того, является ли выходной приемник многоканальным. Они должны отклонять неподдерживаемые конфигурации в
EFFECT_CMD_SET_CONFIG
.- Проверьте, что формат — int16.
- Убедитесь, что маска входного канала — моно, а маска выходного канала — стерео.
- Если какая-либо проверка не пройдена, вернуть
-EINVAL
.
- Проверьте устаревший код. Не думайте, что он работает!
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# High-resolution audio\n\nThe Android 10 release includes the following\nimprovements for high-resolution audio:\n\n- **Float:** WAV, FLAC codecs, and extractors are updated to support float (24+ bits of lossless precision). Downmix and Virtualizer effects are updated to float. Updated precision is allowed by MediaPlayer (NuPlayer).\n- **High-frequency:** WAV, FLAC codecs, and extractors are updated to support 192 kHz. The default Android supplied effects are tested for 192 kHz support at standard frequencies. The standard frequencies permitted are 88.2 kHz, 96 kHz, 176.4 kHz, and 192 kHz.\n- **Multichannel:** Default Android playback effects are tested for multichannel support to eight channels.\n- **Timing:** Timing information is included throughout the audio framework.\n\nStarting in Android 9, the following improvements\ndon't require any partner implementation:\n\n- The number of simultaneous client output tracks increases from 14 to 40, as limited client instances of `AudioTrack` have been an issue for apps in Android 8.x.\n- Maximum client/server memory increases from 4 MB to 32 MB (depending on total device memory) to allow more simultaneous high-resolution audio tracks.\n- Total mixed tracks increases from 32 to 256 to prevent resource contention between apps and the System UI.\n\nOutput effect changes\n---------------------\n\nSee [Audio\neffects](/docs/core/audio/audio-effects) for Android 11 release changes.\n\nPrior to the Android 9 release, effect chain processing\nwas implemented in stereo int16 sample format. This had several limitations:\n\n- All output effects forced conversion from floating point audio data to int16, causing loss of precision.\n- Output effects were rejected from output sinks with a channel count greater than two.\n\nIn the Android 9 release, the effect chain processing\npipeline is upgraded to support the multichannel float format. Key points:\n\n- Android software effects are already migrated to stereo float.\n- Legacy effects are supported with format adapters, which convert float to int16 as needed.\n\nImplement output effects\n------------------------\n\nA reference implementation for output effects is available under\n`frameworks/av/media/libeffects`.\n\nPartners implementing their own custom output effects should do the\nfollowing for the Android 10 release:\n\n- Update output effects to support the multichannel float format:\n - Int16 processing support is no longer required.\n - Support output channel counts from 2--8 (for future compatibility consider counts from 1--30).\n - Support input channel counts matching output channel counts for insert effects. Auxiliary effects continue to see an input channel count of 1 (mono).\n - Support both channel position masks (canonical) and channel index masks of `(1 \u003c\u003c n) - 1`.\n- If you must continue to support legacy vendor output effects and can't update them, then verify legacy code as follows:\n - Legacy output (insert) effects **must reject** unsupported configurations in `EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input and output channel masks are stereo.\n - If either check fails, return `-EINVAL`.\n - Legacy output (auxiliary) effects are configured by AudioFlinger with a mono input channel mask and potentially multichannel output channel masks, depending on whether the output sink is multichannel. They **must reject** unsupported configurations in `\n EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input channel mask is mono and the output channel mask is stereo.\n - If either check fails, return `-EINVAL`.\n - Verify legacy code. Don't assume that it works!"]]