# cuframes-composer Стандалонный композитор-демон для multi-source видео grid через CUDA + NVENC + RTSP. Заменяет монолитный ffmpeg-конвейер (`ffmpeg + vf_cuda_grid` фильтр) для случаев, когда нужно: - Поток продолжает работать при потере любого числа источников (graceful degradation) - Композитор сам управляет частотой кадров и обработкой ошибок без зависимости от семантики ffmpeg-демухера - Минимум перемещений данных: zero-copy CUDA от источника `cuframes` напрямую в NVENC ## Статус **Phase 1 — MVP.** В разработке. Не для боевой эксплуатации. См. [дизайн-документ](https://git.goldix.org/gx/cuframes/raw/branch/main/docs/DESIGN-composer-daemon.md) для архитектурных решений и поэтапного плана. ## Зависимости - [cuframes](https://git.goldix.org/gx/cuframes) — библиотека zero-copy передачи кадров. Подключена как git submodule. - [nv-codec-headers](https://github.com/FFmpeg/nv-codec-headers) — MIT-licensed заголовки NVENC API. Подключена как git submodule. Сама библиотека `libnvidia-encode.so` грузится через `dlopen` при старте (это даёт LGPL-совместимость — см. дизайн-документ часть 1.6). - CUDA Toolkit 12.x+ (для cuda runtime и компиляции) - NVIDIA драйвер 525+ (для NVENC и `cuMemCreate` POSIX FD) - Linux 64-bit (POSIX shm, SCM_RIGHTS) Дополнительно по фазам: - Phase 3: `libfreetype` (текст), `lodepng` через submodule (PNG-декодирование) - Phase 4: `libzmq` (управление) ## Сборка ```bash git clone --recursive git@git.goldix.org:gx/cuframes-composer.git cd cuframes-composer cmake -B build -G Ninja ninja -C build ``` ## Поэтапный план | фаза | срок | результат | |---|---|---| | 1 | 1 неделя | один источник → NVENC → файл .h264 (доказательство zero-copy) | | 2 | 2 недели | четыре источника + композиция через `libcugrid` | | 3 | 2 недели | оверлеи + RTSP push к mediamtx + AAC passthrough из `/live-audio` | | 4 | 1 неделя | паритет ZMQ-управления с фильтром `vf_cuda_grid` | | 5 | 1 неделя | боевое развёртывание + MQTT health + watchdog | | 6 | 2 недели | тесты + бенчмарки + документация | Итого ~9 недель для одного разработчика. ## Лицензия LGPL-2.1-or-later. См. файл [LICENSE](LICENSE). NVENC SDK headers (`third_party/nv-codec-headers`) — MIT license, совместима с LGPL.