01
Звуковой тракт и аудиокадры
Музыка декодируется в отсчёты PCM, проходит обработку движения ленты и стойки эффектов, затем передаётся на аудиовыход Android. Система и наушники могут дополнительно ставить звук в очередь, менять частоту дискретизации или кодировать его. Размер одного буфера не равен полной задержке от движения пальца до слышимого звука.
Кадр PCM содержит отсчёты всех каналов в один момент; блок обработки состоит из группы аудиокадров. Для перевода кадров во время нужна частота дискретизации. Частота кадров экрана или один блок обработки не измеряют слышимую задержку напрямую.
01
Звуковой тракт и аудиокадры
Музыка декодируется в отсчёты PCM, проходит обработку движения ленты и стойки эффектов, затем передаётся на аудиовыход Android. Система и наушники могут дополнительно ставить звук в очередь, менять частоту дискретизации или кодировать его. Размер одного буфера не равен полной задержке от движения пальца до слышимого звука.
Кадр PCM содержит отсчёты всех каналов в один момент; блок обработки состоит из группы аудиокадров. Для перевода кадров во время нужна частота дискретизации. Частота кадров экрана или один блок обработки не измеряют слышимую задержку напрямую.
02
Управление и задержка наушников
Используйте проводные наушники. В опытах разработчика они устранили заметную слышимую задержку колеса и встряхивания, наблюдавшуюся через Bluetooth. Фактический отклик по-прежнему зависит от телефона, системы и устройства вывода.
На переднем плане нижней границей служит минимальный буфер устройства, учитывается запрос примерно на 30 ms. Это сокращает очередь звука, чтобы действия с лентой раньше влияли на последующий звук.
02
Управление и задержка наушников
Используйте проводные наушники. В опытах разработчика они устранили заметную слышимую задержку колеса и встряхивания, наблюдавшуюся через Bluetooth. Фактический отклик по-прежнему зависит от телефона, системы и устройства вывода.
На переднем плане нижней границей служит минимальный буфер устройства, учитывается запрос примерно на 30 ms. Это сокращает очередь звука, чтобы действия с лентой раньше влияли на последующий звук.
03
Предварительное чтение и кеш
Воспроизведение хранит не более четырёх окон предварительного чтения и повторно использует декодированный звук в кеше, заполняемом по мере необходимости, с пределом 16 MiB. Это уменьшает повторное декодирование и ограничивает память. Это не означает, что весь трек или такой объём звука поставлен в очередь наушников.
Окна предварительного чтения, кеш декодированного звука и выходной буфер выполняют разные задачи. Объём памяти нельзя напрямую переводить в задержку вывода, не различая эти этапы.
03
Предварительное чтение и кеш
Воспроизведение хранит не более четырёх окон предварительного чтения и повторно использует декодированный звук в кеше, заполняемом по мере необходимости, с пределом 16 MiB. Это уменьшает повторное декодирование и ограничивает память. Это не означает, что весь трек или такой объём звука поставлен в очередь наушников.
Окна предварительного чтения, кеш декодированного звука и выходной буфер выполняют разные задачи. Объём памяти нельзя напрямую переводить в задержку вывода, не различая эти этапы.
04
Эффекты, обход и треск
Цепочка эффектов обновляется на границе аудиоблока с переходом примерно 20 ms между старой и новой цепочкой. Переход может кратковременно повысить нагрузку, но сам по себе не устанавливает причину треска. Если Android принимает только часть блока, затем передаётся уже обработанный остаток без повторного применения эффектов.
Обход меняет слышимый результат, но экземпляр продолжает вычисления для сохранения состояния. Чтобы снизить нагрузку, удалите ненужные экземпляры.
При треске проверьте выходные пики цепочки и уменьшите чрезмерное усиление эффектов, чтобы исследовать клиппинг. Затем удалите ненужные эффекты и сравните нагрузку. Нехватка своевременно подготовленного звука вызывает опустошение буфера, а слишком высокие пики могут обрезаться. Индикатор перегрузки показывает пики, не опустошение буфера. Эти шаги сужают поиск, но не дают точного диагноза.
04
Эффекты, обход и треск
Цепочка эффектов обновляется на границе аудиоблока с переходом примерно 20 ms между старой и новой цепочкой. Переход может кратковременно повысить нагрузку, но сам по себе не устанавливает причину треска. Если Android принимает только часть блока, затем передаётся уже обработанный остаток без повторного применения эффектов.
Обход меняет слышимый результат, но экземпляр продолжает вычисления для сохранения состояния. Чтобы снизить нагрузку, удалите ненужные экземпляры.
При треске проверьте выходные пики цепочки и уменьшите чрезмерное усиление эффектов, чтобы исследовать клиппинг. Затем удалите ненужные эффекты и сравните нагрузку. Нехватка своевременно подготовленного звука вызывает опустошение буфера, а слишком высокие пики могут обрезаться. Индикатор перегрузки показывает пики, не опустошение буфера. Эти шаги сужают поиск, но не дают точного диагноза.
05
Фоновое воспроизведение
В фоне PCM передаётся пакетами с обычной скоростью 1×, обработка эффектов сохраняется. Пустая стойка запрашивает буфер примерно 200 ms, с эффектами — примерно 600 ms, в пределах выделенной ёмкости.
Более крупный фоновый буфер даёт запас на колебания планирования системы. Если обработка постоянно не успевает, буфер всё равно может опустошаться. Возврат на передний план восстанавливает меньшие настройки буфера, но звук, уже стоящий в очереди, ещё должен быть потреблён.
05
Фоновое воспроизведение
В фоне PCM передаётся пакетами с обычной скоростью 1×, обработка эффектов сохраняется. Пустая стойка запрашивает буфер примерно 200 ms, с эффектами — примерно 600 ms, в пределах выделенной ёмкости.
Более крупный фоновый буфер даёт запас на колебания планирования системы. Если обработка постоянно не успевает, буфер всё равно может опустошаться. Возврат на передний план восстанавливает меньшие настройки буфера, но звук, уже стоящий в очереди, ещё должен быть потреблён.
06
Графика и датчики ориентации
Отрисовка колеса хранит только последнее состояние и не более одной ожидающей задачи, уменьшая накопление устаревших состояний. Изображение и звук проходят разные пути: слышимая задержка Bluetooth не объясняет пропуски кадров экрана.
При уходе приложения в фон, выключении экрана или отключении функции соответствующее чтение датчиков ориентации прекращается, а слушатели освобождаются. Динамические отражения меняют свет, не звук. Влияние имитации встряхивания на звук включается отдельно.
06
Графика и датчики ориентации
Отрисовка колеса хранит только последнее состояние и не более одной ожидающей задачи, уменьшая накопление устаревших состояний. Изображение и звук проходят разные пути: слышимая задержка Bluetooth не объясняет пропуски кадров экрана.
При уходе приложения в фон, выключении экрана или отключении функции соответствующее чтение датчиков ориентации прекращается, а слушатели освобождаются. Динамические отражения меняют свет, не звук. Влияние имитации встряхивания на звук включается отдельно.
07
Наблюдения и условия измерения
Пока опубликованы качественные наблюдения разработчика при сравнении проводного подключения и Bluetooth. Воспроизводимые численные измерения полной задержки, нагрузки или энергопотребления с полным описанием условий не опубликованы.
Для сравнения нужны модель телефона, версия системы, устройство и способ вывода, частота дискретизации, цепочка эффектов и один и тот же фрагмент. Запросы и целевые размеры буферов не заменяют измерений. Десять мест в стойке обозначают вместимость, а не гарантию плавной работы любой комбинации, фиксированной задержки или определённой экономии энергии.
07
Наблюдения и условия измерения
Пока опубликованы качественные наблюдения разработчика при сравнении проводного подключения и Bluetooth. Воспроизводимые численные измерения полной задержки, нагрузки или энергопотребления с полным описанием условий не опубликованы.
Для сравнения нужны модель телефона, версия системы, устройство и способ вывода, частота дискретизации, цепочка эффектов и один и тот же фрагмент. Запросы и целевые размеры буферов не заменяют измерений. Десять мест в стойке обозначают вместимость, а не гарантию плавной работы любой комбинации, фиксированной задержки или определённой экономии энергии.