Описать GPU-путь звонка, границы буферизации и проверку задержки
This commit is contained in:
1 parent
5e672f01d9
commit
0730fb6bdd
1 file changed
+24
@@ -831,3 +831,27 @@ CallTimeline::clock имеет несколько причин отказа (в
|
||||
гонка времени снимка с progress, ещё не доказанная причина текущих переходов.
|
||||
Следующий шаг: агрегировать причины invalid и длительность получения снимка/возраст anchor,
|
||||
с контекстом максимального gap; не ослаблять valid и не менять часы без подтверждающих измерений.
|
||||
|
||||
GPU-кодирование desktop-звонка, 18.10.2026
|
||||
В основном пути CallVideoEncoder выбирает только hardware: NVENC, QSV, AMF, VAAPI.
|
||||
Software доступен только при явно указанном backend в проверках; автоматического CPU fallback нет.
|
||||
Общий LiveVideoEncoder задаёт минимальный настроенный конвейер, без B-кадров/lookahead,
|
||||
проверяет профиль/level/первый IDR. QSV работает внутри в 90kHz, capture PTS восстанавливается
|
||||
по точному соответствию codec PTS; порядок выходов проверяется. До восьми входов, без неограниченной очереди.
|
||||
NVENC использует delay=0, QSV/VAAPI async_depth=1, AMF ultralowlatency и async_depth=1 при наличии опции.
|
||||
В старом FFmpeg AMF не поддерживает forced_idr; общий путь сохраняет периодические IDR,
|
||||
как в трансляции экрана. Это видно в forced_keys/forced_idr и не выдаётся за поддержку принудительного IDR.
|
||||
|
||||
Worker сразу отдаёт все готовые кадры. Видеопорт атомарно копирует готовую пачку до восьми кадров
|
||||
с общим пределом 2MiB в один mailbox и ставит один post; ожидания накопления пачки нет.
|
||||
Busy возвращается до принятия любого кадра. После отказа транспорта зависимый хвост освобождается,
|
||||
запрашивается KEY. Stop/detach освобождают всю ожидающую пачку. Android передаёт count=1.
|
||||
При смене bitrate новый GPU готовится в фоне; до его первого проверенного IDR продолжают выходить
|
||||
старые кадры с PTS раньше границы замены. Applied выдаётся после IDR, при отказе сохраняется старый GPU.
|
||||
|
||||
Диагностика: debug=trace,video=trace,call=debug. call GPU probe показывает pipeline_frames,
|
||||
video encoder flow — pending, bitrate committed — pipeline_frames/pipeline_pts_us/retire_us.
|
||||
test_call_video_gpu проверяет шесть Windows backend/codec сочетаний на настоящих bitstream и decoder,
|
||||
с подменой GPU-границы: задержка, пачка из трёх кадров, точные PTS и отказ замены; это не тест драйвера.
|
||||
Сетевой test_call проверяет атомарную пачку, busy, неверную пачку и teardown.
|
||||
Фактическую глубину, время GPU и задержку показа необходимо подтвердить живым звонком на Windows.
|
||||
Reference in new issue
Block a user