71218b1b1f
Add FFmpeg-based encoder/decoder with SPS/PPS extradata, Annex-B output normalization, low-latency libx264 settings, and a round-trip unit test. Includes review hardening: cached SwsContext, bitrate-only rate control, std::byte/uin8_t cast helpers, and richer test assertions.
50 lines
1.0 KiB
Markdown
50 lines
1.0 KiB
Markdown
# screen_cast
|
|
|
|
A native Linux peer-to-peer screencast application.
|
|
|
|
- **Send** your desktop or a window to another Linux machine.
|
|
- **Receive** a stream and render it in a window.
|
|
- Built with **C++20**, **Meson**, **PipeWire**, **FFmpeg**, **RTP/UDP**, and
|
|
**SDL**.
|
|
|
|
> This project is in early development. The H.264 codec path is implemented;
|
|
> capture, transport, and rendering are still in progress.
|
|
|
|
## Quick start
|
|
|
|
Requirements:
|
|
|
|
- C++20 compiler (GCC 12+, Clang 16+)
|
|
- Meson >= 0.63
|
|
- Ninja
|
|
- FFmpeg development packages (`libavcodec`, `libavutil`, `libswscale`)
|
|
- (later phases) PipeWire dev, SDL2/3 dev
|
|
|
|
Build and run tests:
|
|
|
|
```sh
|
|
meson setup build
|
|
meson compile -C build
|
|
meson test -C build --print-errorlogs
|
|
```
|
|
|
|
Run with verbose test output:
|
|
|
|
```sh
|
|
meson test -C build -v
|
|
```
|
|
|
|
## Architecture
|
|
|
|
See `docs/ARCHITECTURE.md` for module boundaries and design rules.
|
|
|
|
## Roadmap
|
|
|
|
Development is split into phases in `docs/PHASES.md`.
|
|
|
|
Current phase: **Phase 3 — PipeWire screen capture**.
|
|
|
|
## License
|
|
|
|
MIT — see `LICENSE` (to be added).
|