Files
cuframes/CHANGELOG.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

3.0 KiB
Raw Blame History

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>)
    • Поддержка 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 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