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>
3.0 KiB
3.0 KiB
Changelog
Все заметные изменения в этом проекте документируются в этом файле.
Формат основан на Keep a Changelog, проект следует Semantic Versioning.
[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>) - Поддержка
EXTERNALownership (publisher передаёт свои pre-allocated CUDA pointers) - 32 одновременных subscriber'а на publisher (configurable bit-mask)
- Producer/consumer ring buffer в CUDA-памяти (через
cuframes.hpp— header-only C++17 RAII обёртка над C APIcuframes-rtsp-source— standalone tool: RTSP → libavformat decode (hwaccel CUDA) → cuframes IPC- FFmpeg input demuxer
cuframes://(out-of-tree patch для n7.1):--enable-libcuframesconfigure option- URL form
cuframes://<key>, опция-cuda_deviceи-connect_timeout - NV12 frame output через
cudaMemcpy2DAsyncGPU→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 PR #19, #20) - Frigate 0.17.1 через patched FFmpeg (Frigate image rebuild — см.
gx/frigate:cuframes)
- cctv-processor C++ через
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 + pidnamespace 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