Files
cuframes/ROADMAP.md
T
gx a3ba3a95b2 docs: ROADMAP + CHANGELOG v0.1.0 + BENCHMARKS
- 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>
2026-05-18 21:11:37 +01:00

78 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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