a3ba3a95b2
- ROADMAP.md: structured v0.1✅ / v0.2📋 (encoded packet sharing + FFmpeg upstream PR + scale-cuda alt) / v0.3 (Python bindings, Jetson, multi-GPU) / v1.0 (stable ABI) - CHANGELOG.md: full v0.1.0 release notes — features, tested config, production deployment, known limitations - BENCHMARKS.md: measurements (stress 1×pub×4×sub, E2E real camera, prod multi-consumer 24h, VRAM cost per resolution, cuframes vs N×NVDEC) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
78 lines
4.6 KiB
Markdown
78 lines
4.6 KiB
Markdown
# Roadmap
|
||
|
||
cuframes — zero-copy sharing декодированных видеокадров между процессами через
|
||
CUDA IPC. Текущая публичная версия: **v0.1.0** (см. [CHANGELOG.md](CHANGELOG.md)).
|
||
|
||
## Принцип релизов
|
||
|
||
Семвер: MAJOR.MINOR.PATCH.
|
||
|
||
- `0.x.y` — pre-1.0: API может меняться между minor-релизами. Patch только
|
||
для bugfixes без ABI-breaking.
|
||
- `1.0+` — стабильный ABI в пределах major. Минорные релизы добавляют функции
|
||
без ломки существующего кода.
|
||
|
||
Проверять текущий протокол: `cuframes_protocol_version()` (см. C API). Subscriber
|
||
с несовместимым protocol отказывается подключаться (`CUFRAMES_ERR_PROTOCOL`).
|
||
|
||
## v0.1 — Foundation ✅ (released 2026-05-17)
|
||
|
||
| Компонент | Статус |
|
||
|---|---|
|
||
| `libcuframes.so` — producer/consumer ring + CUDA IPC handshake | ✅ |
|
||
| C++ RAII wrapper `cuframes.hpp` | ✅ |
|
||
| `cuframes-rtsp-source` standalone publisher (RTSP → NVDEC → IPC) | ✅ |
|
||
| FFmpeg input demuxer `cuframes://` (out-of-tree patch для n7.1) | ✅ |
|
||
| Docker runtime image | ✅ |
|
||
| CMake install rules | ✅ |
|
||
| Integration guide для cctv-processor (C++) | ✅ |
|
||
| Stress test 1×pub × 4×sub × 2000 frames @ 120 fps (0 torn) | ✅ |
|
||
| **Production deployment** на multi-camera CCTV-стeке (Frigate + custom processor) | ✅ |
|
||
|
||
## v0.2 — Encoded packet sharing 📋 (planned)
|
||
|
||
Главное расширение: publisher отдаёт не только decoded NV12 frames, но и
|
||
**encoded packets** (H.264/H.265 NAL units) через отдельный shared ring.
|
||
Use case: Frigate `record` role (mux в mp4 без re-encode), AI-pipeline которому
|
||
не нужен decode — фильтруют по metadata + сохраняют encoded clip.
|
||
|
||
| Feature | Зачем |
|
||
|---|---|
|
||
| `cuframes_publisher_publish_packet()` C API | Publisher шлёт AVPacket-эквивалент в shared ring |
|
||
| `cuframes_subscriber_next_packet()` C API | Consumer читает encoded packets |
|
||
| Variable-length ring buffer для packets | Encoded size variable (≠ fixed NV12) |
|
||
| FFmpeg `cuframes_packets://` demuxer | Тhe complement to existing `cuframes://` |
|
||
| Sub-stream selection (для multi-resolution streams) | Один camera RTSP даёт 2-3 substreams |
|
||
| **Scale-cuda alternative**: software bilinear resize фильтр для FFmpeg сборок без cuda-llvm | Patched ffmpeg на glibc-2.36 платформах (Debian 12 Frigate base) не имеет cuda-llvm → scale_cuda недоступен. Workaround = CPU scale, регресс. Alt: cuframes-side resize в publisher'е (publish pre-scaled frames). |
|
||
| **FFmpeg upstream PR**: submit `cuframesdec.c` в FFmpeg mainline | Снижает trеnding overhead для adoption; патчить FFmpeg не надо будет. |
|
||
|
||
ETA: 1-2 недели focused работы.
|
||
|
||
## v0.3 — Bindings & Platforms 📋 (planned)
|
||
|
||
| Feature | Зачем |
|
||
|---|---|
|
||
| Python bindings (pybind11) | AI/ML-скрипты сейчас вынуждены ctypes-обёртку писать |
|
||
| Jetson (Tegra arm64) support | Edge-deployment — Frigate тоже популярен на Jetson |
|
||
| Multi-GPU producer/consumer | NVIDIA IPC поддерживает только same-GPU; нужен fallback через encoded path |
|
||
| `pkg-config` `.pc` файл | Downstream cmake/meson — drop `--extra-cflags/-ldflags` ad-hoc |
|
||
| Frigate plugin POC (Python side, не FFmpeg) | Альтернативный путь для users которые не хотят патчить FFmpeg |
|
||
| Docker images в public registry | Snapshot CI-built tarballs + multi-arch |
|
||
|
||
## v1.0 — Stable ABI 📋
|
||
|
||
- Стабильный wire-protocol (minor versions add fields в reserved space)
|
||
- Multi-GPU официально supported
|
||
- Credentials/config через env / Docker secrets (не в config.json)
|
||
- Comprehensive test suite (unit + integration + soak)
|
||
- FFmpeg upstream merge accomplished
|
||
- 2+ независимых production deployments документированы
|
||
|
||
## Связанные документы
|
||
|
||
- [docs/architecture.md](docs/architecture.md) — внутренности cuframes IPC
|
||
- [docs/integration.md](docs/integration.md) — guide для downstream проектов
|
||
- [BENCHMARKS.md](BENCHMARKS.md) — измерения латентности и throughput
|
||
- [CHANGELOG.md](CHANGELOG.md) — release notes
|
||
- [filter/README.md](filter/README.md) — FFmpeg demuxer
|