From 6c74749dd485653e7dbf6ea5d2de64e62a749416 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 20 Oct 2026 19:27:38 +0200 Subject: [PATCH] Document direct local multiview preview and Samsung verification --- doc/stream.txt | 6 ++++++ doc/tasks.md | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/doc/stream.txt b/doc/stream.txt index 8d9a51ab..040c34e7 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -1059,6 +1059,12 @@ Desktop: Плоский keyed Layout сохраняет Surface при перекладке. ON_STOP/закрытие освобождает readers; Surface/SurfaceTexture освобождаются только после выхода decoder worker. Перед Android-звонком новые viewers заблокированы; подготовка ждёт workers и закрытия общего AudioTrack вне UI-потока. +- Android: собственная плитка использует StreamController.preview — прямой выход Camera2 параллельно encoder Surface. + Reader, видеодекодер, Opus playback и вход микшера для неё не создаются; публикация звука другим зрителям сохраняется. + Экран публикации и сетка используют общий StreamPreviewPlayback с поворотом по сенсору/экрану. + Нажатие разворачивает любую плитку; повторное нажатие или Back возвращает сетку без пересоздания её Surface. + ON_STOP отключает только preview output, ON_START подключает его снова; encoder и origin публикации сохраняются. + Завершённая собственная плитка удаляется без дренирования; ошибка preview не запускает remote decoder/retry. - PCM всех источников смешивается в один stereo 48kHz output: SoundManager на desktop, StreamAudioMixer/AudioTrack на Android. Opus, SoundTouch, темп, PTS и A/V clock у каждого свои. Общий limiter имеет быстрый attack и release 100ms; тихая новая плитка не уменьшает громкость остальных. diff --git a/doc/tasks.md b/doc/tasks.md index 43d121df..02f72bdc 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,22 @@ ## Текущие задачи +[+] **Android multiview: собственная трансляция напрямую и без местного звука** — 20.10.2026: + Собственная плитка получает Camera2 preview до кодирования, без reader/decoder/Opus playback/mixer input. + Общий StreamPreviewPlayback используется экраном публикации и сеткой; полноэкранный режим сохраняет target. + Собственная плитка не запускает remote retry и не ждёт декодируемый хвост при удалении. + Головная сборка, APK и Android unit 129/129 PASS; APK установлен на SM-A525F. + Проверено в существующем Stream-Camera-Test (единственный участник — свой узел), 20:19:51–20:24:57: + публикация со звуком, переход preview → сетка → fullscreen → сетка, фон/возврат, stop при развёрнутой плитке. + Во всём сеансе generation=1/origin неизменны, encoder 9048 кадров/dropped=0; + fullscreen target=249460734, кадры 369→5389 без новой camera session. Все три preview target освобождены. + Локальных viewer/decoder/mixer opens=0; завершение автоматически удалило выбранную плитку и вернуло панели окна. + Затем две удалённые трансляции: 1126/780 показанных кадров, один mixer input/AudioTrack; + tap/Back, viewer failed/released/retry=0. Одновременный local+remote в общем канале отдельно не проверялся. + В исходящем звуке прежний компрессор сообщил 11 clipping предупреждений; ошибок video/stream не было. + Логи /tmp/sm-self-live.log, /tmp/sm-self-evidence.json; проверка /tmp/sm-self-evidence.py; + сборки /tmp/sm-self-core-build.log, /tmp/sm-self-android-build.log; снимок /tmp/sm-self-fullscreen.png. + [+] **Android multiview: нажатие разворачивает плитку** — 20.10.2026: Нажатие на видео разворачивает его на весь экран; повторное нажатие или Back возвращает сетку. Общий immersive-режим восстанавливает панели окна; видео вписывается без обрезки с поворотом 0/90°.