Document Android startup checks and remaining Linux probe delay

This commit is contained in:
evgeny committed 2026-10-20 01:05:53 +02:00
1 parent a4b9367344
commit 7ae204ba4f
2 files changed
+58

No files matched your search

+38
View File
@@ -1434,3 +1434,41 @@ phase=5/heartbeats=12001, артефакт /tmp/utun_encrypted_attachment_3XZGxj
/tmp/video-surface-freeze-full-check.log, /tmp/video-surface-freeze-local-retry.log.
Основное приложение на телефонах в этой проверке не заменялось; готовый исправленный APK —
tools/chatgui-android/app/build/outputs/apk/debug/app-debug.apk. Сетевой звонок с новым APK ещё не проверен.
Fullscreen и подготовка Android, 20.10.2026
В большом видео CallVideoPanel используется общий со StreamViewerScreen fitVideoFrame:
сравнивается площадь вписывания без поворота и с поворотом на 90 градусов. Поворачивается
только слой изображения, элементы управления и Android orientation lock остаются прежними.
Thumbnail не поворачивается. Geometry unit tests проверяют обе ориентации, пропорции и границы.
Успешно завершённые encoder/decoder probes теперь кэшируются до завершения процесса.
Прерванная/пустая проверка не кэшируется; параллельный вызов ждёт lock с проверкой отмены.
После decoder probe сразу публикуются полные RX CAPS, затем отдельным open того же id — TX CAPS.
Native regression test доказывает сохранение восьми RX кадров, received counter, wake и peer
при обновлении возможностей. INFO video startup показывает prepare/receive_caps/duplex_caps,
first_received/first_decoded/first_presented; video visible означает release на Surface, а не ACK.
Аппаратная команда CallVideoHevcProbe OUTPUT capabilities проверяет холодную матрицу и три
повторных обращения, отмену до и после прогрева, совпадение проверенных режимов.
На втором телефоне: RX 13647мс, собственный encode 10164мс, всего 23811мс;
три повторных обращения к обеим матрицам — всего 306мкс. Основное приложение проба не перезапускала.
APK/118 unit и C build PASS; check.sh 162/164: прежние local_transport TTL и encrypted_attachment
phase=5/heartbeats=12001, артефакт /tmp/utun_encrypted_attachment_CcugjO.
Логи: /tmp/call-video-startup-final-build.log, /tmp/call-video-startup-port.log,
/tmp/call-video-startup-full-check.log. Новый APK установлен на Samsung и второй телефон.
Живой Linux -> Samsung звонок после обновления, id=e55c56204f7bf159:
Linux ACTIVE 01:01:17.892, Samsung RX CAPS уже через 4мс, duplex через 23мс — оба cache hit.
Первый кадр Samsung pulled через 10459мс, decoded через 10545мс, Surface ACK через 10648мс.
На Linux собственная decoder matrix выполнялась 01:01:17.99–01:01:26.255, затем encoder matrix
до 01:01:28.284; только после этого открылся порт и началась передача. Часы телефонов отличаются,
поэтому задержки приведены из локальных elapsedMs, а не вычитанием wall timestamps разных машин.
Логи: /tmp/call-startup-sm-first-call.log; tools/chatgui/build/vibechat.log (живой, может ротироваться).
Эта задержка находится до передачи первого кадра на Linux. Android cache исправляет повторные
проверки телефона, но не подготовку отправителя Linux и не холодную пробу после перезапуска Android.
Архитектурное ограничение следующего исправления: нулевой decode CAPS сейчас означает окончательное
отсутствие decoder. Отправители выключают выбранную камеру при отсутствии совместимого режима.
Поэтому раннее открытие encode-only порта при продолжающейся подготовке RX требует отличать
подготовку от окончательного отказа либо перехода к проверке только выбранного режима при запуске.
Непроверенные режимы нельзя молча выдавать за прошедшие аппаратную матрицу.
+20
View File
@@ -4,6 +4,26 @@
## Текущие задачи
[ ] **Desktop: подготовка собственных decoder блокирует первую отправку камеры** — 20.10.2026:
Звонок e55c56204f7bf159, локальный Linux: ACTIVE 01:01:17.892, decoder probes до 01:01:26.255,
encoder probes до 01:01:28.284. Samsung уже опубликовал RX CAPS за 4мс; первый input через 10459мс,
фактический показ через 10648мс. Источник задержки — последовательная матрица TX worker Linux.
Нельзя просто публиковать decode=0: текущий отправитель второго устройства принимает это за
окончательную недоступность режима и выключает камеру. Нужен согласованный контракт подготовки
возможностей/проверки выбранного режима. Логи: /tmp/call-startup-sm-first-call.log,
tools/chatgui/build/vibechat.log (живой файл). Подробности: doc/call_video.txt.
[+] **Android: fullscreen вдоль длинной стороны и повторное использование codec probes** — 20.10.2026:
Общее вписывание со стримами поворачивает только изображение большого видео, интерфейс остаётся
неподвижным; миниатюры не поворачиваются. Проверены пропорции и отсутствие обрезки: четыре unit tests.
Завершённые codec probes сохраняются в процессе, RX публикуется до проверки своих encoder.
INFO метки отделяют подготовку, первый input, decode и Surface ACK. Native test подтверждает,
что обновление CAPS того же звонка сохраняет RX очередь/счётчик/уведомления/peer.
На втором телефоне холодная подготовка 23811мс, три обращения к кэшу суммарно 306мкс.
C/Android APK и 118 unit PASS; check.sh 162/164: прежние local_transport TTL и encrypted_attachment phase=5.
APK установлен на оба телефона. Первый звонок после перезапуска процесса ещё требует полной пробы.
Задержка первого Linux -> Samsung звонка локализована отдельно выше.
[+] **Samsung RX: фризы из-за поздней регистрации Surface ACK** — 20.10.2026:
В живом логе 1.99 fps, ожидание ACK 538мс в медиане/1019мс максимум. Callback регистрировался
в onSurfaceTextureUpdated после захвата списка текущего draw и ждал постороннего обновления окна.