Document background codec preparation and complete probe validation
This commit is contained in:
1 parent
475bec52ca
commit
390747343b
2 files changed
+69
-5
No files matched your search
@@ -1472,3 +1472,53 @@ Linux ACTIVE 01:01:17.892, Samsung RX CAPS уже через 4мс, duplex че
|
||||
Поэтому раннее открытие encode-only порта при продолжающейся подготовке RX требует отличать
|
||||
подготовку от окончательного отказа либо перехода к проверке только выбранного режима при запуске.
|
||||
Непроверенные режимы нельзя молча выдавать за прошедшие аппаратную матрицу.
|
||||
|
||||
Подготовка codec при старте приложения, 20.10.2026
|
||||
Задержка e55c56204f7bf159 устранена переносом всей проверки из начала звонка в фоновый запуск.
|
||||
CallVideoEngine::capabilities — единый процессный кэш desktop encoder/decoder, защищённый mutex.
|
||||
main запускает подготовку через std::async после создания окна; event loop не ждёт future.
|
||||
Завершение приложения отменяет подготовку и забирает future до освобождения зависимостей.
|
||||
TX звонка читает готовый кэш; конкурентный ранний звонок ждёт ту же пробу с отменой по stop.
|
||||
Полная decoder matrix сохраняет собственный кэш даже при последующей отмене encoder matrix;
|
||||
частичные общие CAPS не публикуются. Успешные проверки encoder больше не повторяются каждый звонок.
|
||||
|
||||
Android ChatApplication запускает один отдельный call-video-probe thread после инициализации приложения.
|
||||
Он прогревает процессные кэши CallVideoCodec.probeDecoders/probe; Activity, разрешение камеры,
|
||||
захват, Surface и сетевой экземпляр для этого не нужны. Ранний звонок ждёт соответствующий lock,
|
||||
после прогрева использует результаты без создания тестовых codec. Опрос/открытие подключаемых камер
|
||||
по-прежнему выполняется отдельно. Проверка выбранного рабочего encoder перед публикацией формата
|
||||
и обработка отказа GPU остаются на месте. Протокол/CAPS и тракт кадров не менялись.
|
||||
|
||||
Ускорение не сокращает матрицу и число кадров: каждый профиль/размер/FPS/ориентация всё ещё
|
||||
проверяется по восьми кадрам с точными PTS и геометрией. До первого выхода сохраняется исходный
|
||||
pacing для измерения pipeline, затем оставшиеся кадры подаются без ожидания следующего периода.
|
||||
Desktop проверяет весь хвост до EOS, в том числе выход до EOS; Android требует вернуть все восемь
|
||||
в пределах прежнего deadline. Кэш содержит только завершённый результат, а не декларации API драйвера.
|
||||
Это заменяет промежуточную оптимизацию с завершением после первого кадра: полное покрытие сохранено.
|
||||
|
||||
Регрессионная GPU-граница FFmpeg: первый выход задержан до третьего input, хвост удерживается
|
||||
до EOS. Все 48 вариантов по 8 кадров: inputs=outputs=384, first_inputs=3, max_inputs_per_mode=8.
|
||||
Настоящая матрица Linux VAAPI/CPU: ~8.3с до изменения -> 2.740с после, прежние decode masks=3/3.
|
||||
Qt video encoder/GPU/clock/camera 4/4 PASS вне sandbox; sandbox запрещал локальные camera IPC сокеты.
|
||||
Дополнительный test_call_video_clock прерывает подготовку посреди encoder, затем проверяет
|
||||
полный прогрев без повторной decoder matrix, работающий GUI timer и три cache hit без codec opens.
|
||||
Все сценарии RX/ACK/60fps/stop прошли; /tmp/video-warmup-clock-verified-test.log.
|
||||
|
||||
Аппаратная проба второго Android отдельным app_process: RX 10799мс, encode 9992мс, всего 20792мс
|
||||
вместо прежних 23811мс. Три повторных обращения — суммарно 309мкс, режимы неизменны: decoder=12,
|
||||
encoder=10. Во время обычного старта основного приложения время зависит от планирования Android:
|
||||
Samsung 18759мс (decoder=12, encoder=18), второй телефон 47770мс (decoder=12, encoder=10).
|
||||
Оба установленных приложения завершили подготовку до следующего звонка. При немедленном звонке
|
||||
после старта процесса сохраняется ожидание оставшейся проверки; обещания нулевого cold-start нет.
|
||||
|
||||
APK/118 unit и C build PASS. check.sh: 162/164, прежний encrypted_attachment phase=5/heartbeats=12001
|
||||
(артефакт /tmp/utun_encrypted_attachment_YrZw7E), новый зафиксированный flaky local_transport_packets
|
||||
line=198 invitations-before==8; отдельный повтор PASS. Код транспорта/вложений здесь не менялся.
|
||||
Логи: /tmp/video-warmup-android-build.log, /tmp/video-warmup-qt-tests.log,
|
||||
/tmp/video-warmup-cold-linux.log, /tmp/video-warmup-full-check.log,
|
||||
/tmp/video-warmup-local-packets-retry.log, /tmp/video-warmup-sm-startup.log,
|
||||
/tmp/video-warmup-q8-full.log. Оба телефона обновлены; временные аппаратные пробы удалены с телефона.
|
||||
|
||||
Локальный desktop штатно перезапущен, новый pid=243509: GUI startup 01:28:04.487,
|
||||
decoder matrix завершена через 2717644мкс, общая подготовка через 4697835мкс (encode=2/1, decode=3/3).
|
||||
Самостоятельный сетевой звонок не инициировался; первый кадр нового живого звонка ещё не измерен.
|
||||
+19
-5
@@ -4,14 +4,28 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **Desktop: подготовка собственных decoder блокирует первую отправку камеры** — 20.10.2026:
|
||||
[+] **Desktop/Android: codec probes при запуске вместо задержки каждого звонка** — 20.10.2026:
|
||||
Звонок e55c56204f7bf159, локальный Linux: ACTIVE 01:01:17.892, decoder probes до 01:01:26.255,
|
||||
encoder probes до 01:01:28.284. Samsung уже опубликовал RX CAPS за 4мс; первый input через 10459мс,
|
||||
фактический показ через 10648мс. Источник задержки — последовательная матрица TX worker Linux.
|
||||
Нельзя просто публиковать decode=0: текущий отправитель второго устройства принимает это за
|
||||
окончательную недоступность режима и выключает камеру. Нужен согласованный контракт подготовки
|
||||
возможностей/проверки выбранного режима. Логи: /tmp/call-startup-sm-first-call.log,
|
||||
tools/chatgui/build/vibechat.log (живой файл). Подробности: doc/call_video.txt.
|
||||
Проверки обоих направлений перенесены в фоновую подготовку при старте приложения, результаты
|
||||
сохраняются до завершения процесса. Desktop теперь кэширует и encoder, Android прогревает прежний кэш.
|
||||
Все режимы/профили/ориентации и восемь кадров сохраняются; pacing нужен только до первого выхода,
|
||||
после измерения pipeline хвост проверяется без искусственных пауз. GPU/CPU fallback не менялся.
|
||||
Decoder Linux: 8.3 -> 2.7с; настоящий запуск обновлённого GUI: вся подготовка 4.7с, без камеры/сети.
|
||||
Samsung: фоновая подготовка 18.8с, второй телефон 47.8с; оба завершили её до следующего звонка.
|
||||
До завершения прогрева ранний звонок ждёт оставшуюся подготовку, частичные CAPS не публикуются.
|
||||
Qt video/GPU/clock/camera 4/4 и дополнительная отмена/кэш/GUI проверка PASS; Android APK/118 unit PASS.
|
||||
check.sh 162/164: прежний encrypted_attachment и local_transport_packets (отдельный повтор PASS).
|
||||
Оба телефона обновлены, локальный GUI штатно перезапущен. Нового живого звонка ещё не было.
|
||||
Логи: /tmp/video-warmup-qt-tests.log, /tmp/video-warmup-clock-verified-test.log,
|
||||
/tmp/video-warmup-full-check.log; подробности: doc/call_video.txt.
|
||||
|
||||
[ ] **Разобрать нестабильный flood-тест test_local_transport_packets** — 20.10.2026:
|
||||
Общий check.sh при подготовке codec cache: line=198 failed: invitations - before == 8.
|
||||
Отдельный повтор PASS: миллион hostile packets, bounded flood/events/memory, discovery recovery.
|
||||
Код local transport не менялся. Логи: /tmp/video-warmup-full-check.log,
|
||||
/tmp/video-warmup-local-packets-retry.log; причина и связь с нагрузкой пока не установлены.
|
||||
|
||||
[+] **Android: fullscreen вдоль длинной стороны и повторное использование codec probes** — 20.10.2026:
|
||||
Общее вписывание со стримами поворачивает только изображение большого видео, интерфейс остаётся
|
||||
|
||||
Reference in new issue
Block a user