feat(capture): add Phase 3 PipeWire capture stub and config string safety
Add a linkable CaptureFactory stub so the capture API can be consumed without unresolved symbols. Change remaining config string_view fields to std::string to prevent dangling references. Update handoff memory.
This commit is contained in:
+12
-4
@@ -4,10 +4,16 @@ Last updated: initial scaffold.
|
||||
|
||||
## Project state
|
||||
|
||||
- Phase 1 complete: Meson build, C++20 module headers, agent workflow, clock
|
||||
utility, and a passing unit test.
|
||||
- Active phase is now Phase 2 (software H.264 encode/decode).
|
||||
- No implementation yet for capture/codec/network/render.
|
||||
- Phase 2 follow-up review items addressed: encoder rate control is now
|
||||
bitrate-only (removed CRF), encoder/decoder cache their SwsContext, configs
|
||||
own their strings, bitstream helper is internal to the encoder with a NAL
|
||||
length guard, FFmpeg open errors are reported, and the round-trip test
|
||||
verifies Annex-B prefix and keyframes.
|
||||
- `.clang-format` added at repo root and clang-format enforcement added to
|
||||
`AGENTS.md` and `cpp-meson-build/SKILL.md`.
|
||||
- Phase 3 capture now has a linkable stub (`src/capture/pipewire_capture.cpp`)
|
||||
so the API can be consumed without an unresolved symbol.
|
||||
- Remaining implementation: capture, transport, rendering, and CLI/pipeline glue.
|
||||
|
||||
## Decisions
|
||||
|
||||
@@ -16,6 +22,8 @@ Last updated: initial scaffold.
|
||||
- Build system: Meson.
|
||||
- Capture: PipeWire + xdg-desktop-portal.
|
||||
- Encode/Decode: FFmpeg (libavcodec, libavutil, libswscale).
|
||||
- H.264 encoder path: software `libx264`, low-latency settings, Annex-B output.
|
||||
- Decoder receives SPS/PPS through `DecoderConfig.extradata`.
|
||||
- Transport: RTP over UDP; signaling via WebSocket/JSON.
|
||||
- Discovery: mDNS/Avahi.
|
||||
- Rendering: SDL2 or SDL3 + OpenGL.
|
||||
|
||||
Reference in New Issue
Block a user