Files
cuframes/CONTRIBUTING.md
T
gx c8ab4522f2 initial commit: design specification + repo scaffolding
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)
2026-05-14 21:17:34 +01:00

2.8 KiB
Raw Permalink Blame History

Contributing to cuframes

Спасибо за интерес. Проект на ранней стадии — каждый вклад ценен.

Перед началом

  1. Прочитайте docs/architecture.md — там подробный design document с обоснованием решений
  2. Проверьте open issues — возможно ваша идея уже обсуждается
  3. Большие изменения — сначала 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 через cudaStreamSynchronize vs CUDA IPC events
  • Memory leak detection при random producer/consumer kill

License

Contributions accepted under LGPL-2.1+ (см. LICENSE).