From 833eeb0a8db8c163298232af480706ce3980e6a2 Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 19 Oct 2026 22:56:35 +0200 Subject: [PATCH] Document Full HD call modes and verified codec recovery checks --- doc/call_video.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++ doc/tasks.md | 15 +++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/doc/call_video.txt b/doc/call_video.txt index 8da9df96..928270e3 100644 --- a/doc/call_video.txt +++ b/doc/call_video.txt @@ -1193,3 +1193,47 @@ decoder output+12мс, stop без ACK, запоздалый ACK после star Qt encoder/GPU/clock/jitter: 4/4 PASS, core и vibechat собраны. Полный check.sh вне sandbox: 163/164; известный test_encrypted_attachment снова phase=5, heartbeats=12001 (описан в doc/tasks.md). Лог: /tmp/video-independent-check-full.log. + +Full HD и режимы камеры, 19.10.2026 +Предел интерфейса звонка — 1920x1080 либо 1080x1920, 30fps. Начальный режим и диапазон +300k..4M не повышаются автоматически. Общие wire CAPS уже допускают эти геометрии. +Для Full HD@30 согласуются AVC level_idc=40 и HEVC general_level_idc=120, Main tier; +нижние размеры по-прежнему получают минимальный допустимый уровень через call_video_choose. + +Desktop camera worker опрашивает QCameraDevice::videoFormats и использует те же +stream_video_add_camera_modes/stream_video_camera_supports, что publisher трансляций. +В звонок попадают только чётные аппаратные размеры до Full HD при 30/29.97fps. +Дубликаты pixel format объединяются; список передаётся в GUI вместе с id/именем камеры +и обновляется по videoInputsChanged. Драйвер опрашивается только в отдельном процессе. +GUI сохраняет разрешение при смене камеры, если оно поддерживается; иначе выбирает 640x480 +либо минимальный доступный размер. Отсутствие режимов не превращается в запрос размера -1. +При старте требуется точное совпадение аппаратной геометрии; другой размер готового +QImage диагностируется как ошибка вместо скрытого масштабирования. + +Shared mapping FRAME/ACK расширен до 1920*1080*4 байт; обе стороны проверяют геометрию. +Worker копирует RGB32 построчно с учётом stride, GUI получает собственный QImage. +Владение mapping, поколения и ограничение единственного кадра в IPC сохранены. + +Android выбирает 640x480/1280x720/1920x1080 из YUV_420_888 камеры, учитывая min frame +duration и диапазон AE с upper=30. Каждая геометрия кодера проверяется в двух ориентациях; +для разных размеров могут использоваться разные аппаратные/программные реализации. +Decoder также хранит реализацию и измеренный pipeline отдельно для 720p и Full HD. +Это сохраняет работающий GPU на 720p, если Full HD проверен только через CPU. +CAPS содержат реальные проверенные encode/decode пределы; выбранный режим дополнительно +проверяется открытием codec и bitstream, как требует контракт независимых верхних границ. + +Общие KEY fixtures дополнены 1920x1080 и 1080x1920, AVC Baseline/CB и HEVC Main. +call_video_probe_key принимает width/height; генератор tools/generate_call_video_portrait.py +--fullhd явно задаёт high-tier=0. Нельзя заменять Full HD-пробу одной лишь проверкой 720p. +Desktop capability probes отменяются при stop, включая ожидание другого probe; +незавершённый результат не кэшируется. Codec/драйверные вызовы выполняются вне GUI/playout. + +Проверки: native bitstream/геометрия/профили/DPB — PASS; Qt encoder/GPU/clock/camera/audio +5/5 PASS, включая настоящие Full HD encode/decode в обеих ориентациях, поколения, +границу shared buffer и stop во время проб. Общие camera modes publisher — 3/3 PASS. +Ядро, все desktop targets и Android APK собраны; Android unit 111/111 PASS. +Логи: /tmp/fullhd-native-video-test.log, /tmp/fullhd-qt-verified-tests.log, +/tmp/fullhd-shared-camera-modes.log, /tmp/fullhd-android-final-build.log, +/tmp/fullhd-desktop-final-build.log. Полный check.sh — 163/164, прежний отказ +test_encrypted_attachment phase=5/heartbeats=12001: /tmp/fullhd-core-check.log. +Это codec/IPC-проверки; живой Full HD звонок новой сборки на Windows/Android ещё не проверен. diff --git a/doc/tasks.md b/doc/tasks.md index de0a2658..59e5bd9f 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -12,6 +12,21 @@ Повторилось при проверке независимого видеопланировщика: check.sh вне sandbox 163/164, тот же phase=5/heartbeats=12001; /tmp/video-independent-check-full.log, артефакты /tmp/utun_encrypted_attachment_IW0W28. Код вложений в этой работе не менялся. + Повторилось при проверке Full HD звонков: check.sh 163/164, тот же phase=5/heartbeats=12001; + /tmp/fullhd-core-check.log, артефакты /tmp/utun_encrypted_attachment_MIwfM3. + +[+] **Full HD в видеозвонках и реальные разрешения desktop-камеры** — 19.10.2026: + Desktop использует общий со стримами отбор аппаратных режимов до 1920x1080 при 30/29.97fps. + Список и hotplug приходят из отдельного процесса; выбранный режим открывается точно, без подстановки ближайшего. + Android добавляет 1920x1080 в пересечение YUV-режимов камеры и проверенных кодеров; учтены обе ориентации. + Encode/decode CAPS объявляются после настоящих проб, GPU/CPU выбираются с учётом размера. + Общий RGB-буфер камеры расширен до Full HD; очередь показа остаётся на три кадра. + Пробы decoder отменяются при stop, незавершённые CAPS не кэшируются. + Ядро, полный desktop и Android APK собраны; Android unit 111/111, Qt video/camera/clock/audio 5/5, + общий механизм режимов камер 3/3, native bitstream/Full HD — PASS. + Полный check.sh: известный сбой test_encrypted_attachment, остальные 163 PASS. + Проверка живого Full HD звонка на Windows и телефонах ещё не выполнена. + Подробности и логи: doc/call_video.txt. [ ] **Разобрать нестабильную загрузку storage-узлов в test_media_delivery_chat** — 19.10.2026: В том же общем прогоне storage st1/st2 не собрали файл, n2 исчерпал попытки блока 0 (15/19 внутренних проверок).