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)
This commit is contained in:
2026-05-14 21:17:34 +01:00
commit c8ab4522f2
6 changed files with 1183 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# Contributing to cuframes
Спасибо за интерес. Проект на ранней стадии — каждый вклад ценен.
## Перед началом
1. Прочитайте [docs/architecture.md](docs/architecture.md) — там подробный
design document с обоснованием решений
2. Проверьте [open issues](https://git.goldix.org/gx/cuframes/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.
```bash
# 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](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](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](LICENSE)).