c8ab4522f2
cuframes — open-source FFmpeg-плагин и runtime library для zero-copy sharing декодированных видеокадров между процессами через CUDA IPC. Содержимое initial commit: - docs/architecture.md — полная design-spec (418 строк) с prior art, protocol design, API draft, phase plan, acceptance criteria - README.md — landing с описанием идеи, состава, quickstart-tease, roadmap, ссылки на community-discussions подтверждающие спрос - CONTRIBUTING.md — guidelines, code style, commit message convention - CHANGELOG.md — Keep a Changelog format, Unreleased / 0.0.1 - LICENSE — LGPL-2.1+ (compatibility с FFmpeg) - .gitignore — build/CMake/Docker/Python/CUDA-specific Следующие шаги (отдельные коммиты): - docker/Dockerfile.dev (CUDA 12.x dev environment) - tools/spike/ (Phase 0 PoC код для measurement CUDA IPC latency)
2.8 KiB
2.8 KiB
Contributing to cuframes
Спасибо за интерес. Проект на ранней стадии — каждый вклад ценен.
Перед началом
- Прочитайте docs/architecture.md — там подробный design document с обоснованием решений
- Проверьте open issues — возможно ваша идея уже обсуждается
- Большие изменения — сначала RFC-issue, чтобы синхронизировать с design
Структура репо
cuframes/
├── docs/ архитектура, протокол, benchmarks
├── filter/ FFmpeg filter (vf_cuda_ipc_export.c)
├── libcuframes/ producer/consumer core (C)
├── bindings/ C++ и Python wrappers
├── examples/ working examples (CV, PyTorch, Frigate)
├── docker/ Dockerfile'ы для dev и distribution
├── scripts/ build, patch, packaging
├── tools/spike/ PoC код для Phase 0
└── tests/ integration + stress
Development setup
Всё собирается в Docker, чтобы не зависеть от системного CUDA toolkit.
# Dev-контейнер с CUDA 12.x + build tools
docker compose -f docker/docker-compose.dev.yml up -d
docker exec -it cuframes-dev bash
# Внутри контейнера
cmake -B build -S . -G Ninja
cmake --build build
ctest --test-dir build --output-on-failure
См. docker/README.md для деталей.
Code style
- C — стиль FFmpeg (для filter), K&R + 4 spaces
- C++ — C++17, Google C++ style (clang-format с проектным
.clang-format) - Python — PEP 8, black + ruff
CI прогоняет formatter checks автоматически.
Commit messages
Conventional Commits:
feat(filter): add cuda_ipc_export FFmpeg filter
fix(consumer): handle producer reconnect race
docs(arch): clarify backpressure semantics
test: add 24-hour stress test
chore: bump CMake to 3.25
Phase 0 contributors
Если хотите помочь с самым ранним этапом (PoC spike) — см. tools/spike/README.md (когда появится).
Главные вопросы Phase 0:
- Latency producer→consumer на разных GPU (Ampere/Ada/Blackwell)
- CUDA IPC behavior cross-container (docker → docker, host → docker)
- Sync через
cudaStreamSynchronizevs CUDA IPC events - Memory leak detection при random producer/consumer kill
License
Contributions accepted under LGPL-2.1+ (см. LICENSE).