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:
+46
-10
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user