Browse Source

Record Android low latency output probe and route recovery results

master
evgeny 4 days ago
parent
commit
43522936ff
  1. 27
      doc/tasks.md

27
doc/tasks.md

@ -39,8 +39,31 @@
Desktop после пробы держит один готовый блок: pcm_after_mix в среднем ~18.6мс вместо ~38.6мс;
после начального пустого callback новых starvation нет. Стартовый callback повысил резерв 2 -> 3,
возврат 3 -> 2 -> 1 занял 40с; обучение стартового периода стоит отделить от рабочего starvation.
Основная задержка Samsung не устранена: требуется отдельная проверка AAudio/MMAP с речевыми атрибутами,
без подмены звонка мультимедийным потоком. Принятый backend, аппаратные timestamps и маршруты проверить до интеграции.
Отдельный APK audio-probe проверен на обоих телефонах: VOICE_COMMUNICATION/SPEECH, активный захват,
тишина на выходе, данные микрофона отбрасываются. Основное приложение пока использует 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мс.
Проверен круг speaker -> earpiece -> speaker: обе смены дают AAUDIO_ERROR_DISCONNECTED;
повторное открытие speaker возвращает MMAP/exclusive и 24.281мс в среднем (22.471..25.700), underrun=0.
Q8: все варианты AAudio остаются legacy, outputUs ~166–172мс при буфере 40мс.
AudioTrack Q8 с 20мс нестабилен (353/352/362 underrun за три этапа по 8с);
контроль с 40мс даёт 160–162мс в среднем и ноль underrun на всех трёх этапах.
Это оценка аудиовыхода по timestamp, включая очередь приложения, не акустическая задержка всего звонка.
Изолированная проба не проверяет DSP-нагрузку реального звонка и качество AEC; перед интеграцией нужны эти проверки.
Следующий этап: один владелец выхода, повторный выбор быстрого backend после подтверждённой смены маршрута,
закрытие/открытие вне realtime callback, новая эпоха аппаратных часов при сохранении шкалы медиа/JB.
Callback должен только выдавать подготовленный PCM. Legacy AAudio не дал выигрыша: сохранять AudioTrack fallback.
Смена маршрута не должна навсегда запрещать новую пробу MMAP; неудачи ограничивать в пределах текущего маршрута.
Не обещать бесшовность аппаратного DISCONNECTED: судьбу PCM, уже переданного старому устройству, нужно определить отдельно.
Сборки ядра, :app:assembleDebug и :audio-probe:assembleDebug прошли; оба диагностических прогона освободили ресурсы.
Логи: /tmp/aaudio-probe-{sm,q8}.log; AudioFlinger: /tmp/aaudio-probe-{sm,q8}-flinger.txt;
AudioPolicy Samsung: /tmp/aaudio-probe-sm-policy.txt.
Повтор: установить audio-probe/build/outputs/apk/debug/audio-probe-debug.apk через adb install -g -r;
открыть com.utun.audioprobe/.ProbeActivity при завершённых звонках и оставить Activity видимой.
Полная матрица запускается без аргументов; для круга 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 после завершения предыдущего.
[x] **Завершение звонка и видеопорта после обрыва транспорта** — 15.10.2026:
Трасса test_call доказала потерю HANGUP при смене эпохи сигналинга: router reset удалял старую очередь.

Loading…
Cancel
Save