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:
@@ -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 2 — software H.264 encode / decode**.
|
||||
Current phase: **Phase 3 — PipeWire screen capture**.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Reference in New Issue
Block a user