perf(capture): add SceneLens GPU streams and retained scene reuse
Use persistent privacy-filtered capture targets and client-owned GPU buffers with fence completion, backpressure, negotiated frame rates and shared-memory fallback. Invalidate output views on scene changes while preserving inactive-window callbacks and capture revocation. Include OBS memory-mask negotiation and native pixel, transport and recording regressions.
This commit is contained in:
1 parent
f49f62583d
commit
533cd74c94
40 files changed
+4704
-704
No files matched your search
@@ -7,7 +7,7 @@
|
||||
requires session opt-in and fails while locked. Window IDs are compositor
|
||||
lifetime IDs and never resolve to replacement windows.
|
||||
</description>
|
||||
<interface name="ferese_window_capture_manager_v1" version="1">
|
||||
<interface name="ferese_window_capture_manager_v1" version="2">
|
||||
<request name="destroy" type="destructor"/>
|
||||
<request name="capture_window">
|
||||
<description summary="snapshot a managed window">
|
||||
@@ -39,5 +39,34 @@
|
||||
<arg name="width" type="uint"/>
|
||||
<arg name="height" type="uint"/>
|
||||
</event>
|
||||
<request name="create_source" since="2">
|
||||
<description summary="create a persistent window capture source">
|
||||
Creates a source for ext-image-copy-capture-v1. Unlike a snapshot,
|
||||
a session waits for content damage and negotiates reusable buffers.
|
||||
Invalid, closed or protected windows produce a stopped session.
|
||||
</description>
|
||||
<arg name="window_hi" type="uint"/>
|
||||
<arg name="window_lo" type="uint"/>
|
||||
<arg name="source" type="new_id" interface="ext_image_capture_source_v1"/>
|
||||
</request>
|
||||
<request name="refresh_source" since="2">
|
||||
<description summary="request an initial image after a consumer resumes">
|
||||
Invalidates the last delivered image for this source's sessions, so
|
||||
a resumed PipeWire consumer receives an initial image even when the
|
||||
source is unchanged. Outstanding buffers keep their ownership and GPU
|
||||
synchronization; this request never cancels a capture in flight.
|
||||
Subsequent frames continue to wait for source damage.
|
||||
</description>
|
||||
<arg name="source" type="object" interface="ext_image_capture_source_v1"/>
|
||||
</request>
|
||||
<event name="source_geometry" since="2">
|
||||
<description summary="logical dimensions of the capture source">
|
||||
The current logical window size, sent when the source is created.
|
||||
Subsequent pixel-size changes are announced by the capture session.
|
||||
</description>
|
||||
<arg name="source" type="object" interface="ext_image_capture_source_v1"/>
|
||||
<arg name="width" type="uint"/>
|
||||
<arg name="height" type="uint"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
Reference in new issue
Block a user