Browse Source

Document Android call video navigation and preview limits

stream-multiview
evgeny 7 days ago
parent
commit
4f91f575a1
  1. 16
      doc/call_video.txt
  2. 4
      doc/tasks.md

16
doc/call_video.txt

@ -531,22 +531,28 @@ ChatGUI пересобран; test_call_video_encoder — 10/10 PASS в кажд
Работающий GUI автоматически не перезапускался; проверка полного звонка после исправления остаётся. Работающий GUI автоматически не перезапускался; проверка полного звонка после исправления остаётся.
UI и периодические фризы (15.10.2026) UI и периодические фризы (15.10.2026)
Android: принимаемое видео занимает весь экран, своя камера — миниатюрой поверх него. Android: принимаемое видео сначала занимает весь экран, своя камера — миниатюрой поверх него.
Ориентация экрана выбирается по размерам принятого кадра с учётом rotation; весь кадр Назад возвращает к управлению звонком с двумя доступными миниатюрами (своей и собеседника).
Нажатие миниатюры открывает выбранное видео на весь экран; второе остаётся в углу и позволяет
поменять их местами. Выход в управление не выключает передачу/приём и не пересоздаёт TextureView/Surface.
Ориентация экрана выбирается по размерам выбранного кадра с учётом rotation; весь кадр
вписывается максимально крупно с исходными пропорциями, без crop и растяжения. вписывается максимально крупно с исходными пропорциями, без crop и растяжения.
При несовпадении пропорций остаются поля. Выход из экрана звонка восстанавливает прежнюю При несовпадении пропорций остаются поля. Возврат к управлению звонком восстанавливает прежнюю
ориентацию; краткое переподключение Surface не вызывает обратного поворота. ориентацию; краткое переподключение Surface не вызывает обратного поворота.
При видео экран остаётся включённым, proximity-overlay отключён. Если выбран EARPIECE, При видео экран остаётся включённым, proximity-overlay отключён. Если выбран EARPIECE,
переход на SPEAKER ждёт подтверждённого FAR; UNKNOWN/NEAR переключение запрещают. переход на SPEAKER ждёт подтверждённого FAR; UNKNOWN/NEAR переключение запрещают.
Выключение видео, конец звонка и ручной выбор выхода отменяют ожидание. HEADSET не меняется, Выключение видео, конец звонка и ручной выбор выхода отменяют ожидание. HEADSET не меняется,
автоследование за гарнитурой сохраняется. Отсутствующий датчик означает отсутствие proximity; автоследование за гарнитурой сохраняется. Отсутствующий датчик означает отсутствие proximity;
при отказе регистрации состояние остаётся UNKNOWN с предупреждением, автоматического переключения нет. при отказе регистрации состояние остаётся UNKNOWN с предупреждением, автоматического переключения нет.
Без RX локальная камера видна только миниатюрой на экране аудиозвонка; без кадров Без RX локальная камера сначала видна миниатюрой на экране аудиозвонка; без кадров
место под видео не резервируется. Касание показывает кнопки, через 5с они скрываются. место под видео не резервируется. Касание показывает кнопки, через 5с они скрываются.
Имя/статус/диагностика не рисуются поверх видео; параметры вынесены в «Настройки звонка». Имя/статус/диагностика не рисуются поверх видео; параметры вынесены в «Настройки звонка».
Кнопки и миниатюры учитывают вырез и systemBarsIgnoringVisibility, включая боковую панель
навигации и временно скрытые системные кнопки. Видео по-прежнему использует весь экран.
TextureView и Surface сохраняются при показе кнопок; decoder освобождает старый Surface TextureView и Surface сохраняются при показе кнопок; decoder освобождает старый Surface
до его release. Запоздалый detach предыдущего Surface не отключает новый. до его release. Запоздалый detach предыдущего Surface не отключает новый.
Preview берётся из того же Camera2 YUV кадра (до 5 fps), без второй камеры. Preview берётся из того же Camera2 YUV кадра (до 5 fps, ширина до поворота 192 px), без второй камеры.
Развёрнутое своё видео пока использует это же превью; приём сохраняет исходное качество и частоту кадров.
Desktop: первый RX кадр открывает отдельное изменяемое окно видео, без автоматического fullscreen. Desktop: первый RX кадр открывает отдельное изменяемое окно видео, без автоматического fullscreen.
Окно звонка с управлением и всеми настройками сохраняет свою геометрию и состояние настроек. Окно звонка с управлением и всеми настройками сохраняет свою геометрию и состояние настроек.
Видео сохраняет пропорции, своя миниатюра — в углу окна видео. F11/двойной щелчок переключают Видео сохраняет пропорции, своя миниатюра — в углу окна видео. F11/двойной щелчок переключают

4
doc/tasks.md

@ -59,6 +59,10 @@
desktop — отдельное изменяемое окно видео со своей миниатюрой в углу; звонок и настройки — в своём окне. desktop — отдельное изменяемое окно видео со своей миниатюрой в углу; звонок и настройки — в своём окне.
Только при отсутствии RX своя миниатюра остаётся в окне звонка. Закрытие видеоокна не завершает звонок. Только при отсутствии RX своя миниатюра остаётся в окне звонка. Закрытие видеоокна не завершает звонок.
Android выбирает ориентацию экрана под RX и вмещает весь кадр с исходными пропорциями, без обрезки. Android выбирает ориентацию экрана под RX и вмещает весь кадр с исходными пропорциями, без обрезки.
Android: Назад из видео открывает управление звонком; две миниатюры разворачиваются нажатием,
второе видео остаётся в углу. RX TextureView/Surface сохраняются при смене режима.
Кнопки учитывают системные панели (включая боковую навигацию) и вырез экрана.
Своё развёрнутое видео пока использует прежнее превью 192 px / 5 fps; RX без снижения качества.
Видео удерживает экран включённым без proximity-overlay; EARPIECE -> SPEAKER только после FAR, Видео удерживает экран включённым без proximity-overlay; EARPIECE -> SPEAKER только после FAR,
UNKNOWN/NEAR ждут, ручной выбор/выключение видео/конец звонка отменяют ожидание. HEADSET сохраняется. UNKNOWN/NEAR ждут, ручной выбор/выключение видео/конец звонка отменяют ожидание. HEADSET сохраняется.
Фризы: обе платформы сохраняют decoder при коррекции audio epoch; production RX 90/90 кадров, Фризы: обе платформы сохраняют decoder при коррекции audio epoch; production RX 90/90 кадров,

Loading…
Cancel
Save