diff --git a/doc/call_video.txt b/doc/call_video.txt index a48c51b8..be34591f 100644 --- a/doc/call_video.txt +++ b/doc/call_video.txt @@ -67,6 +67,7 @@ Desktop готовит кандидата в отдельном потоке, п Готовый кандидат применяется только на IDR; при незавершённой подготовке текущий GOP продолжается. Android сначала меняет bitrate через MediaCodec.setParameters без остановки; подтверждает только проверенный KEY с PTS не раньше команды. +Уже закодированные P-кадры перед этим KEY сохраняются: runtime bitrate не разрушает references. При отказе runtime API Android переоткрывает encoder последовательно (аппаратный ресурс может быть единственным), при ошибке восстанавливает прежнюю конфигурацию и подтверждает фактически восстановленный bitrate. В этой резервной ветке возможна @@ -556,3 +557,17 @@ H.264 commit 5–7мс; H.265 51–76мс включая кодирование Измерение /tmp/call-video-background-test.log; для H.265 стоимость кодирования остаётся существенной. Android assembleDebug и 81 unit-тест проходят. Полный звонок с камерами после этих правок требует ручной приёмки; автоматические проверки не подтверждают его целиком. + +Аппаратная смена bitrate без перезапуска подтверждена на шумовом YUV с ограниченным контрастом: +Samsung AVC: 3.985M -> 306.8k -> 3.990M; Unisoc HEVC: 4.031M -> 291.9k -> 4.042M; +Unisoc AVC: 3.993M -> 29.3k -> 3.994M бит/с. В каждой пробе получены все 360 кадров +с точными PTS и проверенными KEY. При сильной квантизации шум пропадает; фактический +выход ниже target допустим. Проверяются верхняя граница low-rate и восстановление high-rate, +а не наличие filler до target. Полностью случайный 8-bit шум в первой пробе Samsung +превысил 4M: аппаратный CBR не является жёстким ограничителем выходного потока. +Сетевой admission/ограничитель очереди остаётся необходимым. +Логи: /tmp/call-video-dynamic-sm-detail2.log, /tmp/call-video-dynamic-sp-final.log, +/tmp/call-video-sp-rates-final.log. CallVideoProbe принимает -e codec 1/2 для отдельной пробы. +Итоговый APK установлен на оба телефона. check.sh: 154/154, proxy 9/9, burst/load PASS (119с), +/tmp/call-video-core-final-check-unsandboxed.log. Первый запуск в sandbox не мог открыть сокеты; +успешный полный прогон выполнен с разрешённым сетевым доступом. diff --git a/doc/tasks.md b/doc/tasks.md index 7620f525..a951e099 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -60,6 +60,9 @@ Фризы: обе платформы сохраняют decoder при коррекции audio epoch; production RX 90/90 кадров, 32 коррекции часов, 0 KEY requests/rejections. Android Camera2 больше не теряет кадры на пороге 33333мкс. Desktop готовит encoder при смене bitrate в фоне, применяет на IDR; Qt codecs 10/10 PASS. + Runtime bitrate проверен на Samsung AVC и Unisoc HEVC/AVC: все 360 кадров каждого потока, + ограничение low-rate и возврат к 4M. Android сохраняет P-кадры, ожидающие нового KEY. + Итог: Android 81/81, check.sh 154/154 + proxy 9/9 + burst/load PASS; APK обновлён на обоих телефонах. Осталась ручная приёмка полного звонка с камерами, Surface, A/V и переключениями после исправления. Аппаратные probes используют синтетические кадры. Контракты, этапы и проверки: `doc/call_video.txt`.