Files
screen_cast/meson.build
T
fegger ce52f64e52 feat(capture): implement Phase 3 PipeWire/portal desktop capture
Implement the xdg-desktop-portal ScreenCast backend via libportal: a
blocking portal handshake (interactive source picker), a PipeWire stream
on the portal's node enumerating BGRx/BGRA/RGBx/RGBA, and a latest-frame
slot handing frames to next_frame(). stop() is thread-safe; teardown
follows the order PipeWire requires. All proxy operations run under the
thread-loop lock to satisfy the protocol extension context checks
('impl_ext_end_proxy called from wrong context' otherwise).

The encoder now accepts padded strides for packed RGB inputs (real
PipeWire row pitches) and maps the new PixelFormat::Bgrx to
AV_PIX_FMT_BGRA.

Add tools/capture_smoke: a manual smoke tool (interactive, not in
meson test) that captures N frames, encodes them, and writes a
self-contained Annex-B elementary stream with prepended SPS/PPS.

Validated manually on Wayland/Hyprland: 2256x1504 H.264 elementary
stream, ffprobe clean. Phase 3 marked complete in docs/PHASES.md.
2026-09-07 10:37:14 +02:00

26 lines
494 B
Meson

project('screen_cast', 'cpp',
version : '0.1.0',
default_options : [
'cpp_std=c++20',
'warning_level=3',
'werror=false',
'buildtype=release',
])
# Public and private include directories are declared in `src/meson.build`.
subdir('src')
# Manual smoke tools
subdir('tools')
# Tests
enable_tests = get_option('tests')
if enable_tests
subdir('tests')
endif
# Summary for the user
summary({
'tests': enable_tests,
}, section: 'Build options')