From 4d54173bb27ea317ac139295fdce6f6cfff8e530 Mon Sep 17 00:00:00 2001 From: Evgeny Demchenko Date: Tue, 19 May 2026 20:39:47 +0100 Subject: [PATCH] =?UTF-8?q?roadmap:=20vf=5Fcuda=5Fgrid=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=20=D0=B2=20=D0=BE=D1=82=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BA=D1=82=20gx/vf-cuda-grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ROADMAP.md | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 27fb719..5918d6c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -75,27 +75,19 @@ ETA: 1-2 недели focused работы. Open questions: какой memory-type — `memory:CUDAMemory` (mainline) vs `memory:NVMM` (NVIDIA DeepStream-specific). Возможно два варианта/build flags. -### `vf_cuda_grid` — FFmpeg filter с runtime grid composition +### `vf_cuda_grid` — **выделен в отдельный продукт `gx/vf-cuda-grid`** ([repo](https://git.goldix.org/gx/vf-cuda-grid)) -CCTV mosaic composition как FFmpeg filter, **полностью на GPU**. Заменяет custom C++ GridComposer (см. [gx/cctv#22](https://git.goldix.org/gx/cctv/issues/22) — performance investigation cctv-processor: CPU round-trip pipeline). +FFmpeg filter для GPU-native video grid composition + control-plane sidecar +(ZeroMQ/MQTT/HTTP/HA Discovery). Дизайн зафиксирован, см. +[`gx/vf-cuda-grid` docs/design.md](https://git.goldix.org/gx/vf-cuda-grid/src/branch/main/docs/design.md) +и [epic issue #1](https://git.goldix.org/gx/vf-cuda-grid/issues/1). -| Capability | Зачем | -|---|---| -| Filter принимает N cuda-frames (через `[in0][in1][in2]...` filter inputs) | Композиция в одном filter graph без custom code | -| Output — один cuda-frame с N cells в layout | Прямой вход в `hwdownload` или `h264_nvenc` | -| Layout templates (`single`, `quad`, `main_plus_preview`, `nine_grid`, ...) | Конфигурируемые из CLI или filter command'ом | -| `sendcmd` / API для runtime smena layout'а | Не нужно teardown filter graph для переключения сетки | -| Per-cell overlays (text, bbox) через side data в AVFrame | Frigate detection/LPR/face — overlay внутри pipeline | -| Полностью CUDA-side: scale/composition/text rendering | Zero CPU round-trip, frame не покидает VRAM | +Cuframes остаётся frame source provider для vf-cuda-grid в нашей экосистеме +(но vf-cuda-grid работает и с любым другим CUDA frame source — стандартный FFmpeg). -Это превращает cuframes из IPC-библиотеки в полноценную **GPU-native video routing platform**. Эстетически близко к NVIDIA DeepStream `nvstreammux` + `nvmultistreamtiler`, но open-source и с conventional FFmpeg-stack. - -Open questions: -- Filter input mode: pull-based (filter pull'ает N inputs) или push-based (через external lock-step). FFmpeg filter API больше pull-friendly. -- Text rendering в CUDA — `vf_drawtext` имеет CPU path; нужен либо GPU font-renderer (Pango/freetype + texture upload), либо CPU-precomputed glyph atlases. -- Runtime layout commands через filter `process_command` API. - -Это **большой scope** — отдельная major version (v0.5+) или standalone проект. +Закрывает [`gx/cctv#22`](https://git.goldix.org/gx/cctv/issues/22) Phase 4 +(end-to-end GPU pipeline для cctv-processor mosaic composer) после Phase 4 vf-cuda-grid + +миграция cctv-processor GridComposer → vf_cuda_grid filter. ## v1.0 — Stable ABI 📋