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)
79 lines
2.8 KiB
Markdown
79 lines
2.8 KiB
Markdown
# 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)).
|