diff --git a/doc/stream.txt b/doc/stream.txt index c14b9d21..f23bec77 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -857,6 +857,9 @@ Android: Удалённый Android viewer открыт во весь экран: TextureView вписан по aspect без обрезки и изменения пропорций. После первого KEY ориентация окна следует aspect с учётом rotation источника (sensor landscape/portrait). Имя канала/источника, статус и крестик расположены поверх видео; при live скрываются через 3s, касание переключает видимость. + Два пальца увеличивают видео 1x..4x вокруг центра жеста; сдвиг ограничен краями изображения, возврат к 1x центрирует его. + VideoZoomState общий с просмотрщиком файлов; смена aspect/размера окна пересчитывает допустимые границы сдвига. + GraphicsLayer преобразует только видео, не Surface/decoder/reader и не управление; жест продлевает таймер скрытия управления. Во время подключения/ошибки управление видно. Смена видимости не меняет геометрию TextureView и не пересоздаёт reader. Выход восстанавливает прежнюю requestedOrientation и видимость системных панелей; ON_STOP освобождает viewer. Собственный источник не открывает viewer/cursor, decoder, AudioTrack и playback controller. diff --git a/doc/tasks.md b/doc/tasks.md index 28721ad4..9dbc8da0 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,20 @@ ## Текущие задачи +[+] **Android live: увеличение и перемещение видео как в просмотрщике файлов** — 14.10.2026: + Общий VideoZoomState задаёт масштаб 1x..4x вокруг центра жеста, ограничение сдвига и центрирование при возврате к 1x. + File/live используют одну геометрию; смена размеров окна или aspect ограничивает текущий offset заново. + Жесты преобразуют только GraphicsLayer видео и продлевают таймер controls, без пересоздания TextureView/decoder/reader. + Добавлены пять проверок геометрии: точка под пальцами, границы сдвига, возврат к 1x, верхний предел и смена размеров. + Все 75 Kotlin-тестов и assembleDebug прошли; APK установлен на SM. + На SM проверены pinch до 4x, перемещение до границ и возврат к 1x/Offset.Zero; во время жестов viewer продолжал показ. + Логи: /tmp/stream-zoom-android-build.log, /tmp/stream-zoom-sm.log, /tmp/stream-zoom-check-final.log. + +[ ] **Тесты: нестабильное завершение test_stcp_traffic** — 14.10.2026: + В полном прогоне после NCD CLOSE server получил 1029466/1048576 bytes (done=0), client — 1048576 (done=1). + Упала проверка test_stcp_traffic.c:216; отдельный повтор прошёл. Причина не установлена, сетевой код в задаче zoom не менялся. + Проверить завершение двусторонней передачи относительно закрытия handle; первичный лог сохранён: /tmp/stream-zoom-stcp-first.log. + [+] **Android live: полноэкранный просмотр с автоповоротом и скрываемым управлением** — 14.10.2026: StreamViewerScreen выбирает sensor landscape/portrait по aspect первого KEY, уже учитывающему rotation источника. Видео вписано целиком в экран, без зависимости от надписей; имя, статус и крестик закрытия находятся поверх изображения.