Document live low latency route tests and Samsung headset MMAP fallback
This commit is contained in:
1 parent
23c8a190dd
commit
19a135d552
1 file changed
+29
-1
+29
-1
@@ -40,7 +40,7 @@
|
||||
после начального пустого callback новых starvation нет. Стартовый callback повысил резерв 2 -> 3,
|
||||
возврат 3 -> 2 -> 1 занял 40с; обучение стартового периода стоит отделить от рабочего starvation.
|
||||
Отдельный APK audio-probe проверен на обоих телефонах: VOICE_COMMUNICATION/SPEECH, активный захват,
|
||||
тишина на выходе, данные микрофона отбрасываются. Основное приложение пока использует AudioTrack.
|
||||
тишина на выходе, данные микрофона отбрасываются. На этапе этой пробы основное приложение использовало AudioTrack.
|
||||
Samsung: AudioTrack с буфером 20мс даёт outputUs ~103мс в среднем; повторное открытие не включает FAST.
|
||||
AAudio/MMAP на speaker: shared mono/stereo ~30мс, exclusive mono/stereo ~24мс, буфер 20мс, underrun=0.
|
||||
Earpiece отсутствует в MMAP-профиле устройства; AAudio падает в legacy shared с буфером 40мс и outputUs ~129мс.
|
||||
@@ -64,6 +64,34 @@
|
||||
Полная матрица запускается без аргументов; для круга Samsung: --es api aaudio --ei channels 1
|
||||
--es sharing exclusive --ez roundtrip true --ei seconds 20; контроль Q8: --es api track --ei buffer_ms 40.
|
||||
Логи adb logcat -s AudioProbe; для нового прогона сначала am force-stop com.utun.audioprobe после завершения предыдущего.
|
||||
Реализован CallAudioOutput: AAudio для подтверждённого SPEAKER, AudioTrack для остальных выходов/отказа fast.
|
||||
AAudio пишет подготовленный PCM по аппаратному периоду с ограниченным общим таймаутом 100мс;
|
||||
дополнительной PCM-очереди/callback нет. NON_BLOCKING заполняет ёмкость MMAP сверх рабочего bufferSize:
|
||||
прямая проба дала ~63мс, штатное ожидание по периоду — ~24.4мс без underrun и с восстановлением после route change.
|
||||
Источник поведения: AOSP AudioStreamInternalPlay::processDataNow и AudioStreamInternal::processData.
|
||||
Подтверждённый AudioManager device ID запускает повторный выбор выхода; одинаковые уведомления игнорируются.
|
||||
DISCONNECTED/DEAD_OBJECT обрабатывает playback worker, повтор ограничен текущим маршрутом, далее AudioTrack.
|
||||
Новое устройство получает локальный head=0 и общий base=accepted PCM. Незаписанный хвост блока сохраняется.
|
||||
Очередь уже закрытого устройства не переигрывается: pendingFrames логируется, при переключении возможен короткий разрыв.
|
||||
call_audio_suspend_device инвалидирует аппаратный якорь без сброса JB/DSP/PTS. Старые timestamps отвергаются по generation.
|
||||
AEC использует полную задержку выхода и возраст аппаратной метки захвата, без смешивания старого/нового frame counter.
|
||||
Реальный видеозвонок на Samsung: SPEAKER ~23.1мс, wired MMAP ~23.4мс, EARPIECE AudioTrack ~137мс при буфере 40мс;
|
||||
возврат EARPIECE -> SPEAKER снова выбирает MMAP. На всех выходах hardware underrun=0, ошибок аудиочасов нет.
|
||||
Однако wired MMAP физически продолжал играть из динамика: Telecom, AudioPolicy и HAL показывали headset/0x4,
|
||||
пользователь дважды подтвердил неверный звук. Контроль с AudioTrack исправил физический выход (подтверждено пользователем).
|
||||
Поэтому быстрый backend разрешён только на SPEAKER; для гарнитур сохранён AudioTrack, несмотря на формальную доступность MMAP.
|
||||
Исправлен auto-headset: ручной выбор speaker действует до следующего подключения/отключения гарнитуры,
|
||||
дубликаты событий не отменяют ручной выбор. Рация явно отключает авторежим при ручном выборе, её поведение сохранено.
|
||||
Добавлены INFO только при изменении списка устройств, Telecom endpoints и видимого состояния аудиокнопок.
|
||||
103 Android unit-теста, test_call_timeline, test_call_video_clock, test_call_delay, test_call_jitter прошли;
|
||||
ядро и APK собраны. Финальный APK установлен на оба телефона. Логи переходов: /tmp/route-sm-live.log;
|
||||
противоречащий физическому звуку HAL-маршрут: /tmp/headset-failure-{audio,policy,flinger}.txt.
|
||||
|
||||
[ ] **Доступность разговорного динамика в UI звонка** — при подключённой проводной гарнитуре Samsung убирает
|
||||
EARPIECE из Telecom endpoints, но кнопка остаётся доступной по наличию физического встроенного устройства.
|
||||
Нажатие создаёт отложенный запрос, который исполняется после отключения гарнитуры. Согласовать UI с доступными endpoints.
|
||||
Также выбор проводной гарнитуры в CallScreen сейчас запрашивает BLUETOOTH_CONNECT при отсутствии этого разрешения;
|
||||
проверку разрешения нужно привязать к выбранному типу гарнитуры.
|
||||
|
||||
[x] **Завершение звонка и видеопорта после обрыва транспорта** — 15.10.2026:
|
||||
Трасса test_call доказала потерю HANGUP при смене эпохи сигналинга: router reset удалял старую очередь.
|
||||
|
||||
Reference in new issue
Block a user