diff --git a/doc/service_lifecycle.md b/doc/service_lifecycle.md index 5b2125eb..3d3a49ef 100644 --- a/doc/service_lifecycle.md +++ b/doc/service_lifecycle.md @@ -127,6 +127,9 @@ Qt capture callback хранит только последний кадр, video закрывает оставшийся publisher. Workers никогда не держат borrowed instance/handle. Microphone lease публикации эксклюзивен; прежние call/radio/recorder leases совместные. Восстановление устройства сохраняет владение и не разрешает другой capture до stop/failure. +Fatal ошибка audio worker передаётся в GUI с session ID и завершает всю публикацию; +откат видеоконфигурации применяется только к video/capture. Поздний отказ старого publisher +не завершает новую сессию. Причина ошибки сохраняется в окне после окончания drain. Статус транспорта UP подтверждает восстановление физического пути. READY сессии группы означает согласованный JOIN/ACCEPT и завершённый обмен её таблицей; именно diff --git a/doc/tasks.md b/doc/tasks.md index 9c1ab6c5..0c8793ea 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,27 @@ ## Текущие задачи +[+] **Live: публикация с desktop ChatGUI** — 14.10.2026: + Камера, микрофон, экран и окно через Qt >=6.6 Multimedia/FFmpeg; Wayland/XWayland использует системный портал. + Отдельный controller сохраняет эфир при закрытии окна, сырое превью обновляется до 30Hz независимо от encode. + Выбор рабочего H.264/H.265/VP9/AV1/H.266, разрешения/FPS, bitrate и поворота 0/90/270 с отметкой верха. + Encoder проверяет два принудительных KEY, затем открывает чистую сессию; hardware имеет приоритет. + Смена видеонастроек сохраняет capture, звук и source_epoch; libx264 меняет bitrate без смены encoder. + Ошибка видеорежима откатывает последнюю подтверждённую конфигурацию; fatal Opus завершает эфир и освобождает микрофон. + Stereo Opus/128kbps с общим gain и текущими настройками компрессора рации; mono input обозначается явно. + Общий C stream_publisher для Android/desktop: ограниченные очереди/admission/KEY recovery, uAV2/RS, FIN/drain 2s, + согласованные 100ms TX snapshots (video queue, all-connection inflight, send buffer, ACK_1s). Протокол не меняется. + Microphone lease публикации эксклюзивен, прежняя совместная работа голосовых функций сохраняется. + 151 тест ядра и proxy/integration/burst/load прошли; полный check.sh — 129s. Все 32 CTest ChatGUI прошли. + Publisher отдельно: 11 проверок прошли, экранный сценарий запущен отдельно под Xvfb/private D-Bus — без пропусков. + Проверены реальные H.264/H.265/VP9/AV1 encoder/decoder, сохранение decoder при изменении libx264 bitrate, + настоящий X11 screen/window capture, непрерывный неподвижный экран, сырое превью, два стереотона, + H.264 → VP9 и rollback без смены audio/source_epoch, Opus failure, FIN и concurrent detach/leak count. + vibechat и APK arm64-v8a/x86_64 собраны, Kotlin unit tests прошли; Windows runtime/installer fixtures прошли. + Физическая камера, захват через Wayland portal и Windows runtime вручную не проверялись; VVC encoder отсутствует. + Устройства/colo2 не обновлялись. Архитектура: `doc/stream.txt`, `doc/service_lifecycle.md`. + Логи: `/tmp/desktop-stream-{full-check,final-gui-tests,final-publish-test,screen-test,android-build,runtime-test,installer-test}.log`. + [+] **Live: выбор видеокодека/битрейта и статистика отправки 10Hz** — 14.10.2026: Android показывает доступные Surface encoder в порядке H.264/H.265/VP9/AV1/H.266, проверяя профиль, разрешение/FPS и диапазон bitrate; аппаратные encoder имеют приоритет.