dailz
833cbdfed3
chore(avhw): clean up debug tracing in VA-API pipeline
2026-04-15 14:01:22 +08:00
dailz
c77838235a
fix(avhw): derive encoder hw_frames_ctx from filter graph buffersink
2026-04-15 13:57:34 +08:00
dailz
10ee190fd2
fix(state): do not destroy screencopy proxy on SHM buffer event
2026-04-15 07:15:46 +08:00
dailz
68514bd3f6
fix(state): do not set errored on SHM buffer event
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-15 07:12:33 +08:00
dailz
506e5ea30e
fix(state,avhw): bind initial globals manually + fix filter graph crash on niri
...
- registry_queue_init consumes registry events during its internal
roundtrip without forwarding them to Dispatch<WlRegistry>. Added
bind_initial_globals() to manually iterate GlobalList and bind all
initial globals (wl_output, xdg_output_manager, dmabuf, screencopy,
wlr_output_manager) at State::new time.
- Fix av_freep segfault in build_filter_graph: av_buffersrc_parameters_alloc
returns a plain pointer, use av_free instead of av_freep (which expects
pointer-to-pointer).
- Fix filter graph format negotiation: remove software format filter that
broke scale_vaapi hardware pipeline. Chain is now src -> scale -> sink.
- Downgrade repeat_pps error to warning (not available in FFmpeg 6.x).
2026-04-14 20:42:05 +08:00
dailz
b2e5f37cf6
feat(state): support compositors without xdg-output via wlr-output-management
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-14 17:52:59 +08:00
dailz
ecd78492ee
feat(avhw): integrate transform into VA-API filter graph
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-14 17:02:54 +08:00
dailz
e89689634d
fix(state): handle BufferParamsEvent::Failed to prevent silent hang
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-14 16:50:48 +08:00
dailz
6835f1f6cd
fix(main): call fps_limit.flush() before encoder flush on shutdown
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-04-14 16:45:47 +08:00
dailz
3a954dae1a
fix: resolve 4 audit bugs (PTS, WlOutput, first_frame, DRM minor)
2026-04-06 16:25:02 +08:00
dailz
27aa8d2c65
fix: convert PTS from from frame号单位转换
2026-04-06 16:23:59 +08:00
dailz
1e8d00126b
fix(bsf): remove non-functional BSF pipeline, use encoder repeat_pps option
2026-04-06 09:35:37 +08:00
dailz
6d49222de8
feat: Phase 1 MVP with audit fixes — Wayland screen capture + VAAPI encoding
...
Phase 1 MVP implementation of wl-webrtc: Wayland screen capture tool
with hardware-accelerated VAAPI H.264 encoding and WebTransport output.
Includes all 9 runtime bug fixes from code audit (fix-audit-issues plan):
CRITICAL:
- C2: h264_metadata BSF with repeat_sps/repeat_pps in encode pipeline
- C4: FpsLimit wired as timing gate in on_copy_complete
HIGH:
- C3+A2: DRM device discovery via dmabuf feedback MainDevice event,
unified resolve_drm_path() helper (CLI > compositor > auto > fallback)
- H2: Separate physical_size (mm) from mode_size (pixels) in wl_output
- H1+A3: Multi-output warning + named-output-not-found error
MEDIUM:
- M5: tv_sec u32->u64 to avoid Y2106 timestamp truncation
- M4: Guard against SHM Buffer event (DMA-BUF only)
Key components:
- src/avhw.rs: FFmpeg VAAPI encoder + filter graph + BSF pipeline
- src/state.rs: Wayland event loop + output negotiation + screencopy
- src/cap_wlr_screencopy.rs: wlr-screencopy capture source
- src/fps_limit.rs: Frame rate limiting with configurable target
- src/transform.rs: Frame format conversion utilities
2026-04-05 23:35:00 +08:00