|
|
|
|
@ -140,6 +140,27 @@ INFO-логи Android показывают длительности настро
|
|
|
|
|
(на desktop 60–80мс). Лог `playback buffering` показывает принятый порог и ёмкость; |
|
|
|
|
ежесекундный `clock` — queuedUs, текущий порог и underruns, прирост underruns имеет уровень WARN. |
|
|
|
|
Это очередь AudioTrack, а не полная сквозная задержка и не сетевой jitter reserve. |
|
|
|
|
Повторный замер: startFrames=1920 принят, но written-played остался 140мс; одного стартового порога недостаточно. |
|
|
|
|
|
|
|
|
|
Диагностика Android при `call=debug`: playback сохраняет один числовой снимок на блок (20мс) |
|
|
|
|
в кольце 512 элементов, без форматирования/вывода. Отдельный reporter раз в 200мс забирает записи; |
|
|
|
|
раз в секунду выводит `audio summary` с min/avg/max очередей, задержек pull/write и опоздания потока, |
|
|
|
|
целевым запасом/разбросом доставки JB, темпом, недостающим PCM и отдельными счётчиками JB/AudioTrack. |
|
|
|
|
Снимок JB не сбрасывает события для CALL_STATS. encodedMs — очередь Opus после pull, |
|
|
|
|
processingMs — оставшийся PCM SoundTouch в длительности исходной речи; reserveMs зависит только от доставки. |
|
|
|
|
AudioTimestamp опрашивается раз в 200мс, его frame/time и время опроса печатаются отдельно; |
|
|
|
|
при недоступности стоит stampOk=0. Времена trace — MONOTONIC; очередь устройства — written-played. |
|
|
|
|
Эти показатели нельзя складывать с возрастом AudioTimestamp как независимые задержки. |
|
|
|
|
|
|
|
|
|
`audio detail` сохраняет 2с до и 3с после старта, фактической смены routedDevice или новой аномалии: |
|
|
|
|
очередь устройства >100мс в течение секунды, отсутствие продвижения head 100мс при наличии данных, |
|
|
|
|
либо новый episode underrun (затухает через 3с без повторений). Порог очереди — диагностический, |
|
|
|
|
не настройка JB и не изменение воспроизведения. События внутри окна объединяются, между выгрузками |
|
|
|
|
не менее 10с; продолжающаяся аномалия не создаёт повторных дампов. Восстановление логируется INFO. |
|
|
|
|
Подробные строки содержат по четыре снимка и заголовок с порядком колонок; при stop окно может быть неполным. |
|
|
|
|
Переполнение кольца при задержке reporter имеет отдельный WARN lost=N. Аудиоданные не сохраняются. |
|
|
|
|
Выключение call=debug прекращает сбор/выгрузку; буфер и reporter освобождаются с playback worker. |
|
|
|
|
Сравнивать сводки следует по call ID и monoUs; рост сетевого запаса сам по себе не является ошибкой. |
|
|
|
|
|
|
|
|
|
## 7. Буфер звонка и восстановление |
|
|
|
|
|
|
|
|
|
|