|
|
|
|
@ -62,7 +62,8 @@ producer запрашивает следующий IDR по существующ
|
|
|
|
|
[+] История первых ACK 500мс/50мс и снимок payload send_q/inflight отдельного сервиса. |
|
|
|
|
[+] Unit счётчиков: повторные ACK, reset, отдельные сервисы; UDP/STCP регрессии пройдены. |
|
|
|
|
[+] Дрейф feed/tempo устранён картой фактических участков SoundTouch; см. ниже. |
|
|
|
|
[ ] H.265 bitrate: замена encoder перед ближайшим плановым IDR, с непрерывными PTS. |
|
|
|
|
[+] ChatGUI codec component: замена H.264/H.265 encoder на IDR, с непрерывными PTS; ещё без camera/bridge. |
|
|
|
|
[ ] Android MediaCodec: применение bitrate на ближайшем IDR и проверка фактического выхода. |
|
|
|
|
[+] Общий регулятор с детерминированными сценариями и подключением к router/encoder-командам. |
|
|
|
|
[+] Видеофрагменты, ограниченная сборка, обмен возможностями с подтверждением. |
|
|
|
|
[ ] Дополнить возможности ограничениями profile/level/tier и диапазоном битрейта. |
|
|
|
|
@ -318,3 +319,47 @@ ffprobe подтверждает Main/level 3.1, B=0 и 360 кадров.
|
|
|
|
|
Это проверка 640x360@30 на синтетической сложной сцене, не готовый тракт звонка: |
|
|
|
|
worker/camera/decoder UI и Android MediaCodec ещё предстоит подключить и проверить. |
|
|
|
|
Патч x265 остаётся диагностическим материалом и не требуется выбранному способу. |
|
|
|
|
|
|
|
|
|
Компонент кодирования ChatGUI, 14.10.2026 |
|
|
|
|
StreamVideoEncoder переименован в LiveVideoEncoder и выделен в chatgui_live_video; |
|
|
|
|
трансляции используют тот же код, без дублирования захвата/конвертации/FFmpeg. |
|
|
|
|
Явный профиль H.264 Constrained Baseline / H.265 Main задаёт level, reference=1, |
|
|
|
|
VBV и 8-bit 4:2:0. Для этого режима пока проверены software libx264/libx265. |
|
|
|
|
Открытие проверяет независимый IDR настоящим decoder: profile, level, Main tier, |
|
|
|
|
pixel format, отсутствие B-кадров и размер. Проверка принятого option не заменяет |
|
|
|
|
эту проверку bitstream. Automatic-профили трансляций сохраняют прежний выбор GPU/SW. |
|
|
|
|
Опции encoder сверены с https://ffmpeg.org/ffmpeg-codecs.html#libx265 и разделом libx264. |
|
|
|
|
|
|
|
|
|
CallVideoEncoder принадлежит будущему video worker. Он хранит единственную pending |
|
|
|
|
команду generation/request/bitrate, отклоняет replay, чужой generation и выход за |
|
|
|
|
согласованный maximumBitrate. На ближайшем IDR по capture PTS создаётся кандидат; |
|
|
|
|
старый encoder сохраняется до получения полного KEY с точным исходным PTS. |
|
|
|
|
При отказе кандидата возвращается completion с bitrate=0 и используется прежний |
|
|
|
|
контекст. Неизменный target также подтверждается на KEY без пересоздания. |
|
|
|
|
Completion отделён от отправки кадра: даже при закрытом admission его нужно |
|
|
|
|
передать в call_video_rate_applied. Периодический IDR задаётся по capture PTS, |
|
|
|
|
поэтому пропуски кадров/закрытая сеть не сдвигают применение на дополнительные GOP. |
|
|
|
|
Физический захват камеры, audio origin и сетевые frame_id компонентом не меняются. |
|
|
|
|
|
|
|
|
|
test_call_video_encoder прошёл: 5 QtTest cases (включая init/cleanup), без skip. |
|
|
|
|
Для обоих codecs: 640x360@30, level 3.1, VBV 1 Мбит, шумовая сцена; |
|
|
|
|
запрос на кадре 7, переход на кадре 30, один decoder на все 360 кадров. |
|
|
|
|
Проверены PTS каждого decoded frame, профиль/level/размер/B=0 и средний bitrate: |
|
|
|
|
H.264: 3996916 / 296904 / 3989748 бит/с; |
|
|
|
|
H.265: 3993720 / 302956 / 3999788 бит/с. |
|
|
|
|
Отдельно проверены отказ новой конфигурации с сохранением старого encoder, |
|
|
|
|
предел bitrate, pending/replay/generation, force-key и разрыв capture PTS вперёд. |
|
|
|
|
Логи: /tmp/call-live-video-test-final.log, /tmp/call-live-video-build-final.log. |
|
|
|
|
test_stream_publish: 11 passed, 1 skip (capture под Xvfb), 0 failed; |
|
|
|
|
/tmp/call-live-stream-regression.log. После уточнения VBV профильная проверка |
|
|
|
|
liveSoftwareBitrateKeepsDecoder повторена успешно, /tmp/call-live-stream-bitrate-final.log. |
|
|
|
|
ChatGUI собран; ./check.sh: 154/154, proxy 9/9, burst/load PASS за 118с; |
|
|
|
|
/tmp/call-live-core-check.log. Android в этом этапе не менялся. |
|
|
|
|
|
|
|
|
|
Граница готовности: это рабочий codec component, ещё не камера/worker/видеозвонок. |
|
|
|
|
В CAPS пока нет согласования level/tier/bitrate/VBV: до его реализации компонент |
|
|
|
|
не объявляется доступным в реальном звонке. Владелец обязан проверять соответствие |
|
|
|
|
размера/FPS согласованному envelope, а не считать маркировку level доказательством |
|
|
|
|
всех ограничений стандарта. Другие режимы, hardware codecs и Android требуют |
|
|
|
|
отдельных проверок. Следующий этап — CAPS envelope и подключение capture/bridge, |
|
|
|
|
затем decoder/render по audio clock и UI на обеих платформах. |
|
|
|
|
|