• v0.1.0 a3ba3a95b2

    gx released this 2026-05-18 21:13:06 +01:00 | 35 commits to main since this release

    Первый функциональный release. Production-deployed на multi-camera CCTV-стeке (Frigate 0.17 + custom C++ processor, оба обслуживаются одним publisher'ом на одном NVDEC).

    Что внутри

    • libcuframes.so — main shared library: CUDA IPC ring buffer + handshake protocol + cross-process sync через cudaIpcEventHandle_t
    • cuframes.hpp — header-only C++17 RAII wrapper над C API
    • cuframes-rtsp-source — standalone tool: RTSP → NVDEC → cuframes IPC
    • FFmpeg input demuxer cuframes:// — out-of-tree patch для FFmpeg n7.1 (filter/)
    • CMake install rules, Docker runtime image, integration guides

    Tested

    • Stress: 1 publisher × 4 consumer × 2000 frames @ 120 fps — 0 torn, 0 gaps
    • E2E real camera (Dahua 1920×1080 HEVC 25fps) — 100/100 frames, 0 drops
    • Production: 24h uptime, 1 NVDEC обслуживает Frigate detect + custom processor одновременно

    Известные ограничения (v0.2 решит)

    • Только NV12 frame format
    • GPU→CPU copy в FFmpeg demuxer (zero-copy через AVHWFramesContext — v0.2)
    • Только encoded path для decoded frames; для record (mux без decode) consumer открывает свой RTSP — это решает v0.2 encoded packet sharing (см. issue #2)
    • Cross-container CUDA IPC требует ipc+pid namespace share (s6-overlay не совместим — нужен workaround или Frigate-image patch)
    • Только Linux + NVIDIA GPU compute capability ≥ 7.5

    Документация

    Reference deployments

    • gx/cctv PR #20 — C++ cctv-processor через CuframesSource
    • gx/frigate:cuframes Docker image — Frigate с patched FFmpeg (instructions in filter/README.md)

    License

    LGPL-2.1+

    Downloads