feat(codec): implement software H.264 encode/decode round-trip

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.
This commit is contained in:
2026-09-07 10:07:50 +02:00
parent 50369995c7
commit 71218b1b1f
12 changed files with 946 additions and 32 deletions
+5 -3
View File
@@ -7,7 +7,8 @@ A native Linux peer-to-peer screencast application.
- Built with **C++20**, **Meson**, **PipeWire**, **FFmpeg**, **RTP/UDP**, and
**SDL**.
> This project is in early development. Only the skeleton exists so far.
> This project is in early development. The H.264 codec path is implemented;
> capture, transport, and rendering are still in progress.
## Quick start
@@ -16,7 +17,8 @@ Requirements:
- C++20 compiler (GCC 12+, Clang 16+)
- Meson >= 0.63
- Ninja
- (later phases) FFmpeg dev packages, PipeWire dev, SDL2/3 dev
- FFmpeg development packages (`libavcodec`, `libavutil`, `libswscale`)
- (later phases) PipeWire dev, SDL2/3 dev
Build and run tests:
@@ -40,7 +42,7 @@ See `docs/ARCHITECTURE.md` for module boundaries and design rules.
Development is split into phases in `docs/PHASES.md`.
Current phase: **Phase 2software H.264 encode / decode**.
Current phase: **Phase 3PipeWire screen capture**.
## License