diff --git a/ROADMAP.md b/ROADMAP.md index 63f9df7..27fb719 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -59,6 +59,44 @@ ETA: 1-2 недели focused работы. | Frigate plugin POC (Python side, не FFmpeg) | Альтернативный путь для users которые не хотят патчить FFmpeg | | Docker images в public registry | Snapshot CI-built tarballs + multi-arch | +## Future ideas 💡 (не запланированы, без ETA) + +Идеи которые не привязаны к конкретной версии и ждут планирования. + +### `gst-cuframes-src` — GStreamer source-element + +Аналог FFmpeg-демуксера для GStreamer-стэка. Один publisher cuframes-side → potreбители-pipeline'ы в GStreamer (DeepStream, обычный GStreamer-приложения). + +| Зачем | Что | +|---|---| +| NVIDIA DeepStream — это GStreamer-native, FFmpeg-демуксер там не работает | `gst-cuframes-src` как `GstBaseSrc`-derived element, выдаёт `GstBuffer` с `GstCudaMemory` (NVMM в Jetson вариант) | +| GStreamer-приложения (обычный software) | Drop-in source для любой GStreamer pipeline | +| GStreamer plugin registry | `gst-inspect-1.0 cuframessrc` discoverable | + +Open questions: какой memory-type — `memory:CUDAMemory` (mainline) vs `memory:NVMM` (NVIDIA DeepStream-specific). Возможно два варианта/build flags. + +### `vf_cuda_grid` — FFmpeg filter с runtime grid composition + +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). + +| 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 из 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 проект. + ## v1.0 — Stable ABI 📋 - Стабильный wire-protocol (minor versions add fields в reserved space)