diff --git a/doc/stream.txt b/doc/stream.txt index f64db09d..c14b9d21 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -854,6 +854,11 @@ Android: Состояния ожидания KEY и decoder разделены; логи показывают inputs/decoded/shown, рабочие slots, inflight и decoderLeadUs. Короткие audio gaps заполняются Opus PLC, большой разрыв сбрасывает timeline. Локальный preview получает прямой Camera2 output в TextureView одновременно с encoder Surface. + Удалённый Android viewer открыт во весь экран: TextureView вписан по aspect без обрезки и изменения пропорций. + После первого KEY ориентация окна следует aspect с учётом rotation источника (sensor landscape/portrait). + Имя канала/источника, статус и крестик расположены поверх видео; при live скрываются через 3s, касание переключает видимость. + Во время подключения/ошибки управление видно. Смена видимости не меняет геометрию TextureView и не пересоздаёт reader. + Выход восстанавливает прежнюю requestedOrientation и видимость системных панелей; ON_STOP освобождает viewer. Собственный источник не открывает viewer/cursor, decoder, AudioTrack и playback controller. Preview ориентируется по сенсору камеры и текущему положению экрана; ручной поворот трансляции его не вращает. TextureView уже применяет ориентацию сенсора. UI Matrix компенсирует только -displayDegrees, diff --git a/doc/tasks.md b/doc/tasks.md index a2b29e33..28721ad4 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,16 @@ ## Текущие задачи +[+] **Android live: полноэкранный просмотр с автоповоротом и скрываемым управлением** — 14.10.2026: + StreamViewerScreen выбирает sensor landscape/portrait по aspect первого KEY, уже учитывающему rotation источника. + Видео вписано целиком в экран, без зависимости от надписей; имя, статус и крестик закрытия находятся поверх изображения. + Управление скрывается через 3s live и возвращается касанием; при подключении/ошибке остаётся видно. + Выход восстанавливает ориентацию и системные панели. Capture preview сохраняет отдельное управление публикацией. + На SM подтверждены landscape, TextureView 1920x1080 в экране 2400x1080, скрытие/возврат управления, + неизменные bounds видео, закрытие крестиком и возврат в portrait. Поворот не пересоздал viewer; более 2000 кадров, underruns=0. + APK установлен на SM; 70 Kotlin-тестов, 151 тест ядра, proxy 9/9, burst и load прошли. + Логи: /tmp/stream-viewer-android-build.log, /tmp/stream-viewer-check.log, /tmp/stream-viewer-sm.log. + [ ] **Тесты: диагностировать нестабильную проверку TX snapshot в test_android_stream** — 14.10.2026: В полном прогоне один раз упала строка 177: snapshot успешен и 0 < video_bytes < 500000 после test_clock_run_for(ua, 1000). Сам publisher обновляет snapshot таймером 1000; текущий CHECK не выводит result/sample_us/video_bytes.