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>
This commit is contained in:
2026-05-18 21:11:37 +01:00
parent 601806a5f8
commit a3ba3a95b2
3 changed files with 242 additions and 10 deletions
+46 -10
View File
@@ -5,16 +5,52 @@
Формат основан на [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
проект следует [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.1.0] — 2026-05-17
Первый функциональный release с production deployment.
### Added
- **`libcuframes.so`** — main shared library:
- Producer/consumer ring buffer в CUDA-памяти (через `cudaIpcGetMemHandle`)
- Cross-process sync через `cudaIpcEventHandle_t` (NVIDIA Programming Guide §3.2.8)
- Handshake protocol по Unix domain socket (`/run/cuframes/<key>.sock`)
- Shared metadata в POSIX SHM (`/dev/shm/cuframes-<key>`)
- Поддержка `EXTERNAL` ownership (publisher передаёт свои pre-allocated CUDA pointers)
- 32 одновременных subscriber'а на publisher (configurable bit-mask)
- **`cuframes.hpp`** — header-only C++17 RAII обёртка над C API
- **`cuframes-rtsp-source`** — standalone tool: RTSP → libavformat decode (hwaccel CUDA) → cuframes IPC
- **FFmpeg input demuxer `cuframes://`** (out-of-tree patch для n7.1):
- `--enable-libcuframes` configure option
- URL form `cuframes://<key>`, опция `-cuda_device` и `-connect_timeout`
- NV12 frame output через `cudaMemcpy2DAsync` GPU→host (v1 path, zero-copy в v2)
- **CMake install rules** для downstream проектов
- **Docker runtime image** (`gx/cuframes:0.1`) — publisher + sub_count + libs
- **Integration guides**:
- `docs/integration.md` — общая интеграция с cctv-стeком
- `filter/README.md` — FFmpeg patch + smoke test
- **Reference deployments**:
- cctv-processor C++ через `CuframesSource` (см. [gx/cctv](https://git.goldix.org/gx/cctv) PR #19, #20)
- Frigate 0.17.1 через patched FFmpeg (Frigate image rebuild — см. `gx/frigate:cuframes`)
### Tested
- Stress: 1 publisher × 4 consumer × 2000 frames @ 120 fps — **0 torn frames, 0 gaps**
- E2E: реальная камера Dahua 192.168.88.98 (1920×1080 HEVC 25 fps) — 100/100 frames, 0 drops, avg_fps=25.03
- **Production**: 1 publisher обслуживает одновременно Frigate (detect) + cctv-backend (motion+grid+encode→RTSP→TV) на одном NVDEC, ~24h uptime
### Limitations (документировано — см. docs/integration.md)
- Только NV12 frame format (v1)
- GPU→CPU copy в FFmpeg demuxer (zero-copy через `AVHWFramesContext` — v0.2)
- Cross-container CUDA IPC требует `ipc + pid` namespace share. Если consumer
использует s6-overlay (как Frigate) — pid не shareable, нужны альтернативы.
- Только Linux + NVIDIA GPU compute capability ≥ 7.5
## [0.0.1] — 2026-05-14
### Added
- Initial repository, LICENSE (LGPL-2.1+), README.md, CONTRIBUTING.md
- Design specification (docs/architecture.md)
- Prior art analysis — подтверждено что ниша свободна
- Roadmap v0.1 — 6 phases, ~6-8 недель работы
## [0.0.1] - 2026-05-14
### Added
- Initial repository
- LICENSE (LGPL-2.1+)
- README.md, CONTRIBUTING.md
- Prior art analysis