|
|
|
|
@ -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 удалял старую очередь. |
|
|
|
|
|