You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
12 KiB

<?xml version="1.0" encoding="utf-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="1443" height="782" xmlns:xlink="http://www.w3.org/1999/xlink"><source><![CDATA[title: RS4xx - Metadata attributes propagation and query flow
Participant User Code
Participant rs2_device
Participant rs2_frame_callback
Participant rs2_frame
Participant rs2_backend
Participant Kernel/OS Driver
User Code->User Code: Initialize librealsense
Note over User Code,rs2_device: Acquire Device handle
User Code->rs2_device: Start Stream (user-defined callback)
Note over rs2_device,rs2_frame_callback: Store callback handle
rs2_device->rs2_backend: Start Polling frames
Note over rs2_backend,Kernel/OS Driver: Polling frame
rs2_backend->rs2_frame: unpack and store frame pixels
rs2_backend->rs2_frame: check and store metadata payload
rs2_frame-->rs2_backend: frame is ready for dispatch
rs2_backend->rs2_frame_callback: invoke user-defined callback(rs2_frame)
rs2_frame_callback->rs2_frame_callback: User code is invoked
rs2_frame_callback->rs2_frame: Check metadata attribute support
rs2_frame-->rs2_frame_callback: result (true/false)
rs2_frame_callback->rs2_frame: query metadata attribute value
rs2_frame-->rs2_frame_callback: value(/exception)]]></source><desc>RS4xx - Metadata attributes propagation and query flow</desc><defs><marker viewBox="0 0 5 5" markerWidth="5" markerHeight="5" orient="auto" refX="5" refY="2.5" id="markerArrowBlock"><path d="M 0 0 L 5 2.5 L 0 5 z"></path></marker><marker viewBox="0 0 9.6 16" markerWidth="4" markerHeight="16" orient="auto" refX="9.6" refY="8" id="markerArrowOpen"><path d="M 9.6,8 1.92,16 0,13.7 5.76,8 0,2.286 1.92,0 9.6,8 z"></path></marker></defs><g class="title"><rect x="10" y="10" width="485.234375" height="29" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="15" y="30" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="15">RS4xx - Metadata attributes propagation and query flow</tspan></text></g><g class="actor"><rect x="10" y="49" width="99.375" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="20" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="20">User Code</tspan></text></g><g class="actor"><rect x="10" y="723" width="99.375" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="20" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="20">User Code</tspan></text></g><line x1="59.6875" x2="59.6875" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="actor"><rect x="342.2890625" y="49" width="108.171875" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="352.2890625" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="352.2890625">rs2_device</tspan></text></g><g class="actor"><rect x="342.2890625" y="723" width="108.171875" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="352.2890625" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="352.2890625">rs2_device</tspan></text></g><line x1="396.375" x2="396.375" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="actor"><rect x="482.0390625" y="49" width="178.546875" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="492.0390625" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="492.0390625">rs2_frame_callback</tspan></text></g><g class="actor"><rect x="482.0390625" y="723" width="178.546875" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="492.0390625" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="492.0390625">rs2_frame_callback</tspan></text></g><line x1="571.3125" x2="571.3125" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="actor"><rect x="823.125" y="49" width="99.375" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="833.125" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="833.125">rs2_frame</tspan></text></g><g class="actor"><rect x="823.125" y="723" width="99.375" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="833.125" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="833.125">rs2_frame</tspan></text></g><line x1="872.8125" x2="872.8125" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="actor"><rect x="1115.9296875" y="49" width="116.765625" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="1125.9296875" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="1125.9296875">rs2_backend</tspan></text></g><g class="actor"><rect x="1115.9296875" y="723" width="116.765625" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="1125.9296875" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="1125.9296875">rs2_backend</tspan></text></g><line x1="1174.3125" x2="1174.3125" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="actor"><rect x="1252.6953125" y="49" width="160.953125" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="1262.6953125" y="74" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="1262.6953125">Kernel/OS Driver</tspan></text></g><g class="actor"><rect x="1252.6953125" y="723" width="160.953125" height="39" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="1262.6953125" y="748" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="1262.6953125">Kernel/OS Driver</tspan></text></g><line x1="1333.171875" x2="1333.171875" y1="88" y2="723" stroke="#000000" fill="none" style="stroke-width: 2;"></line><g class="signal"><text x="84.6875" y="122.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="84.6875">Initialize librealsense</tspan></text><line x1="59.6875" x2="79.6875" y1="108" y2="108" stroke="#000000" fill="none" style="stroke-width: 2;"></line><line x1="79.6875" x2="79.6875" y1="108" y2="132" stroke="#000000" fill="none" style="stroke-width: 2;"></line><line x1="79.6875" x2="59.6875" y1="132" y2="132" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="note"><rect x="49.6875" y="147" width="356.6875" height="29" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="55.6875" y="167" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="54.6875">Acquire Device handle</tspan></text></g><g class="signal"><text x="69.6875" y="206.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="69.6875">Start Stream (user-defined callback)</tspan></text><line x1="59.6875" x2="396.375" y1="215" y2="215" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="note"><rect x="386.375" y="235" width="194.9375" height="29" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="391.375" y="255" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="391.375">Store callback handle</tspan></text></g><g class="signal"><text x="697.375" y="294.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="697.375">Start Polling frames</tspan></text><line x1="396.375" x2="1174.3125" y1="303" y2="303" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="note"><rect x="1164.3125" y="323" width="178.859375" height="29" stroke="#000000" fill="#ffffff" style="stroke-width: 2;"></rect><text x="1169.3125" y="343" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="1169.3125">Polling frame</tspan></text></g><g class="signal"><text x="896.0078125" y="382.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="896.0078125">unpack and store frame pixels</tspan></text><line x1="1174.3125" x2="872.8125" y1="391" y2="391" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="882.8125" y="421.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="882.8125">check and store metadata payload</tspan></text><line x1="1174.3125" x2="872.8125" y1="430" y2="430" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="904.8046875" y="460.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="904.8046875">frame is ready for dispatch</tspan></text><line x1="872.8125" x2="1174.3125" y1="469" y2="469" stroke="#000000" fill="none" style="stroke-width: 2; stroke-dasharray: 6, 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="701.2734375" y="499.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="701.2734375">invoke user-defined callback(rs2_frame)</tspan></text><line x1="1174.3125" x2="571.3125" y1="508" y2="508" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="596.3125" y="542.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="596.3125">User code is invoked</tspan></text><line x1="571.3125" x2="591.3125" y1="528" y2="528" stroke="#000000" fill="none" style="stroke-width: 2;"></line><line x1="591.3125" x2="591.3125" y1="528" y2="552" stroke="#000000" fill="none" style="stroke-width: 2;"></line><line x1="591.3125" x2="571.3125" y1="552" y2="552" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="581.3125" y="577.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="581.3125">Check metadata attribute support</tspan></text><line x1="571.3125" x2="872.8125" y1="586" y2="586" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="638.4921875" y="616.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="638.4921875">result (true/false)</tspan></text><line x1="872.8125" x2="571.3125" y1="625" y2="625" stroke="#000000" fill="none" style="stroke-width: 2; stroke-dasharray: 6, 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="590.0078125" y="655.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="590.0078125">query metadata attribute value</tspan></text><line x1="571.3125" x2="872.8125" y1="664" y2="664" stroke="#000000" fill="none" style="stroke-width: 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g><g class="signal"><text x="647.2890625" y="694.5" style="font-size: 16px; font-family: &quot;Andale Mono&quot;, monospace;"><tspan x="647.2890625">value(/exception)</tspan></text><line x1="872.8125" x2="571.3125" y1="703" y2="703" stroke="#000000" fill="none" style="stroke-width: 2; stroke-dasharray: 6, 2; marker-end: url(&quot;#markerArrowBlock&quot;);"></line></g></svg>