Files

1 line
85 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1542px" height="1731px" viewBox="-0.5 -0.5 1542 1731" content="&lt;mxfile&gt;&lt;diagram id=&quot;gpu-pool&quot; name=&quot;gpu_pool.py&quot;&gt;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&lt;/diagram&gt;&lt;diagram id=&quot;gpu-pool-boot&quot; name=&quot;boot &amp;amp; ws&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><g><rect x="311" y="50" width="600" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 57px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 18px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; ">gpu_pool.py — runtime architecture</div></div></div></foreignObject><text x="611" y="75" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="18px" text-anchor="middle" font-weight="bold">gpu_pool.py — runtime architecture</text></switch></g></g><g><rect x="521" y="140" width="180" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 522px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 13px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Client (WebSocket)</div></div></div></foreignObject><text x="611" y="174" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="13px" text-anchor="middle" font-weight="bold">Client (WebSocket)</text></switch></g></g><g><rect x="521" y="260" width="180" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 290px; margin-left: 522px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 13px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">GPUPool</div></div></div></foreignObject><text x="611" y="294" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="13px" text-anchor="middle" font-weight="bold">GPUPool</text></switch></g></g><g><rect x="1" y="416" width="1220" height="455" fill="#e6f2e0" stroke="#82b366" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(230, 242, 224), rgb(26, 36, 20)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1203px; height: 1px; padding-top: 431px; margin-left: 18px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 13px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">GPUSlot (one per GPU)</div></div></div></foreignObject><text x="18" y="444" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="13px" font-weight="bold">GPUSlot (one per GPU)</text></switch></g></g><g><rect x="71" y="470" width="60" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 50px; height: 1px; padding-top: 487px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">start()</div></div></div></foreignObject><text x="81" y="490" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">start()</text></switch></g></g><g><rect x="141" y="470" width="70" height="30" rx="4.5" ry="4.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 60px; height: 1px; padding-top: 487px; margin-left: 151px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">shutdown()</div></div></div></foreignObject><text x="151" y="490" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">shutdown()</text></switch></g></g><g><rect x="460" y="460" width="70" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 60px; height: 1px; padding-top: 482px; margin-left: 470px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">join_user()</div></div></div></foreignObject><text x="470" y="485" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">join_user()</text></switch></g></g><g><rect x="541" y="460" width="80" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 70px; height: 1px; padding-top: 482px; margin-left: 551px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">user_step()</div></div></div></foreignObject><text x="551" y="485" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">user_step()</text></switch></g></g><g><rect x="631" y="455" width="80" height="45" rx="6.75" ry="6.75" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 70px; height: 1px; padding-top: 480px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">leave_user()</div></div></div></foreignObject><text x="641" y="483" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">leave_user()</text></switch></g></g><g><rect x="40" y="570" width="230" height="80" rx="12" ry="12" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 220px; height: 1px; padding-top: 612px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">_send_command()<br /><br />puts on command_queue,<br />blocks on response_queue.get<div><br /></div><div><b>**for user agonistic commands</b></div></div></div></div></foreignObject><text x="50" y="615" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" font-style="italic">_send_command()...</text></switch></g></g><g><rect x="311" y="574" width="300" height="90" rx="13.5" ry="13.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 290px; height: 1px; padding-top: 621px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">_send_command_tagged()<br /><br />creates Future; registers in<br />_pending_futures[user_id];<br />ensures response reader; <b>awaits future</b><div><br /></div><div><b>**for user specific commands</b></div></div></div></div></foreignObject><text x="321" y="624" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" font-style="italic">_send_command_tagged()...</text></switch></g></g><g><rect x="761" y="560" width="340" height="110" rx="16.5" ry="16.5" fill="#d5e8d4" stroke="#82b366" pointer-events="all" style="fill: light-dark(rgb(213, 232, 212), rgb(31, 47, 30)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 330px; height: 1px; padding-top: 617px; margin-left: 771px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">_response_reader()<br /><br />a while loop that reads response_queue;<br />dispatch WorkerEvent:<br />• media → _stream_queues<br />• acks/errors → _pending_futures</div></div></div></foreignObject><text x="771" y="620" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" font-style="italic">_response_reader()...</text></switch></g></g><g><rect x="261" y="724" width="340" height="110" rx="16.5" ry="16.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 330px; height: 1px; padding-top: 781px; margin-left: 271px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">«dict» _pending_futures<br /><br />{user_id → asyncio.Future}<br /><br />created by _send_command_tagged;<br />resolved + popped by _response_reader;<br />cleared on model reload or leave</div></div></div></foreignObject><text x="271" y="784" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">«dict» _pending_futures...</text></switch></g></g><g><rect x="681" y="724" width="460" height="126" rx="18.9" ry="18.9" fill="#fff2cc" stroke="#d6b656" pointer-events="all" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 450px; height: 1px; padding-top: 789px; margin-left: 691px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">«dict» _stream_queues: <div><span style="color: light-dark(rgb(63, 63, 63), rgb(183, 183, 183)); background-color: transparent;">each is a queue of metadata that tell the consumer which part of the shared </span></div><div><div><font color="#000000" style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));">stream buffer to read next.<br /></font><br />{user_id → asyncio.Queue}<br /><br />created by register_stream_queue()<br />written by _response_reader (MediaInit / Chunk / Complete);<br />consumed by  AV loop → ws.send_bytes / send_json;<br />popped by leave_user(); cleared on reload</div></div></div></div></div></foreignObject><text x="691" y="792" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px">«dict» _stream_queues:...</text></switch></g></g><g><path d="M 1 895 L 1221 895" fill="none" stroke="#888888" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(136, 136, 136), rgb(120, 120, 120));"/></g><g><rect x="411" y="888" width="400" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 895px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #666666; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#666666, #959595); line-height: 1.2; pointer-events: all; font-style: italic; white-space: nowrap; ">── process boundary (mp.Queue + mp.RawArray) ──</div></div></div></foreignObject><text x="611" y="906" fill="#666666" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle" font-style="italic">── process boundary (mp.Queue + mp.RawArray) ──</text></switch></g></g><g><path d="M 40 935 C 40 926.72 84.77 920 140 920 C 166.52 920 191.96 921.58 210.71 924.39 C 229.46 927.21 240 931.02 240 935 L 240 1005 C 240 1013.28 195.23 1020 140 1020 C 84.77 1020 40 1013.28 40 1005 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 240 935 C 240 943.28 195.23 950 140 950 C 84.77 950 40 943.28 40 935" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 984px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">command_queue</div></div></div></foreignObject><text x="140" y="987" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">command_queue</text></switch></g></g><g><path d="M 481 935 C 481 926.72 525.77 920 581 920 C 607.52 920 632.96 921.58 651.71 924.39 C 670.46 927.21 681 931.02 681 935 L 681 1005 C 681 1013.28 636.23 1020 581 1020 C 525.77 1020 481 1013.28 481 1005 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 681 935 C 681 943.28 636.23 950 581 950 C 525.77 950 481 943.28 481 935" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 984px; margin-left: 482px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">response_queue</div></div></div></foreignObject><text x="581" y="987" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle" font-weight="bold">response_queue</text></switch></g></g><g><path d="M 861 935 C 861 926.72 923.68 920 1001 920 C 1038.13 920 1073.74 921.58 1099.99 924.39 C 1126.25 927.21 1141 931.02 1141 935 L 1141 1005 C 1141 1013.28 1078.32 1020 1001 1020 C 923.68 1020 861 1013.28 861 1005 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 1141 935 C 1141 943.28 1078.32 950 1001 950 C 923.68 950 861 943.28 861 935" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 984px; margin-left: 862px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">shared_stream_buffer<br />(mp.RawArray, 256 MiB)<br /><br />zero-copy mp4 bytes</div></div></div></foreignObject><text x="1001" y="987" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">shared_stream_buffer...</text></switch></g></g><g><rect x="41" y="1060" width="1140" height="80" rx="12" ry="12" fill="#e0e0e0" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(224, 224, 224), rgb(45, 45, 45)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1128px; height: 1px; padding-top: 1103px; margin-left: 53px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 10px; font-family: &quot;monospace&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">worker_ipc.py — shared types (imported on both sides of the process boundary)<br /><br />Command(type: CommandType, payload: CommandPayload | None, user_id: str | None)<br />CommandPayload = UserStepPayload | WarmupPayload | ReloadModelPayload<br />WorkerEvent = StepComplete | WorkerError | JoinAck | LeaveAck | ReloadAck | WarmupComplete | MediaInit | MediaChunk | MediaComplete | InitAck | ShutdownAck</div></div></div></foreignObject><text x="53" y="1106" fill="light-dark(#000000, #ffffff)" font-family="&quot;monospace&quot;" font-size="10px" font-weight="bold">worker_ipc.py — shared types (imported on both sides of the process boundary)...</text></switch></g></g><g><rect x="34" y="1271" width="1140" height="360" fill="#fef1e0" stroke="#d79b00" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(254, 241, 224), rgb(38, 27, 12)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1123px; height: 1px; padding-top: 1286px; margin-left: 51px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 13px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Worker Subprocess - in each GPUSlot</div></div></div></foreignObject><text x="51" y="1299" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="13px" font-weight="bold">Worker Subprocess - in each GPUSlot</text></switch></g></g><g><rect x="81" y="1320" width="240" height="120" rx="18" ry="18" fill="#ffe6cc" stroke="#d79b00" pointer-events="all" style="fill: light-dark(rgb(255, 230, 204), rgb(54, 33, 10)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 228px; height: 1px; padding-top: 1384px; margin-left: 93px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">command dispatcher<br /><br />gpu_worker_process() branches on<br />CommandType; asserts payload type<br /><br />INIT / WARMUP / RELOAD_MODEL<br />USER_JOIN / USER_STEP / USER_LEAVE<br />SHUTDOWN</div></div></div></foreignObject><text x="93" y="1387" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" font-weight="bold">command dispatcher...</text></switch></g></g><g><rect x="421" y="1320" width="240" height="120" rx="18" ry="18" fill="#e1d5e7" stroke="#9673a6" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 228px; height: 1px; padding-top: 1384px; margin-left: 433px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">VideoGenerationWorker.generate_step()<br />video_generation.py:380<br /><br />reads + updates ContinuationState,<br />calls generator</div></div></div></foreignObject><text x="433" y="1387" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" font-weight="bold">VideoGenerationWorker.generate_step()...</text></switch></g></g><g><rect x="761" y="1320" width="260" height="120" rx="18" ry="18" fill="#b1d8d7" stroke="#23445d" pointer-events="all" style="fill: light-dark(rgb(177, 216, 215), rgb(32, 66, 65)); stroke: light-dark(rgb(35, 68, 93), rgb(160, 188, 210));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 1384px; margin-left: 773px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">stream_fmp4()<br />av_streaming.py:121<br /><br />trims overlap, pipes to ffmpeg,<br />publishes StreamInit / StreamChunk /<br />StreamComplete via callback</div></div></div></foreignObject><text x="773" y="1387" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" font-weight="bold">stream_fmp4()...</text></switch></g></g><g><path d="M 541 1600 L 541 1663.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 541 1668.88 L 537.5 1661.88 L 541 1663.63 L 544.5 1661.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="421" y="1500" width="240" height="100" rx="15" ry="15" fill="#e1d5e7" stroke="#9673a6" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 1550px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">VideoGenerator (fastvideo)<br /><br />LTX2 DiT + refine upsampler<br />FP4 quant, torch.compile<br /><br />owned by VideoGenerationWorker<br />video_generation.py:211</div></div></div></foreignObject><text x="541" y="1553" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">VideoGenerator (fastvideo)...</text></switch></g></g><g><rect x="761" y="1500" width="260" height="100" rx="15" ry="15" fill="#ffffff" stroke="#d79b00" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 1550px; margin-left: 762px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ffmpeg subprocess<br /><br />libx264 / *_nvenc<br />fragmented mp4</div></div></div></foreignObject><text x="891" y="1553" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">ffmpeg subprocess...</text></switch></g></g><g><rect x="81" y="1500" width="240" height="100" rx="15" ry="15" fill="#e1d5e7" stroke="#9673a6" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 228px; height: 1px; padding-top: 1554px; margin-left: 93px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">ContinuationState<br />video_generation.py:89<br /><br />• video_images: list[PIL.Image]<br />• audio_latents: torch.Tensor (CPU)<br /><br />carried across segments</div></div></div></foreignObject><text x="93" y="1557" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px">ContinuationState...</text></switch></g></g><g><path d="M 611 200 L 611 253.63" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/><path d="M 611 258.88 L 607.5 251.88 L 611 253.63 L 614.5 251.88 Z" fill="#6c8ebf" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(108, 142, 191), rgb(92, 121, 163)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 231px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">acquire</div></div></div></foreignObject><text x="611" y="234" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">acquire</text></switch></g></g><g><path d="M 611 320 L 611 409.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 611 414.88 L 607.5 407.88 L 611 409.63 L 614.5 407.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 367px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">assigns slot</div></div></div></foreignObject><text x="611" y="371" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">assigns slot</text></switch></g></g><g><path d="M 99 500 L 99 563.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 99 568.88 L 95.5 561.88 L 99 563.63 L 102.5 561.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><path d="M 495 500 L 493.09 500 L 493.09 567.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 493.09 572.88 L 489.59 565.88 L 493.09 567.63 L 496.59 565.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><path d="M 549 500 L 549.09 537.09 L 551.09 537.09 L 551.09 567.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 551.09 572.88 L 547.59 565.88 L 551.09 567.63 L 554.59 565.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><path d="M 639 500 L 641.09 500 L 641.09 530 L 573.27 530 L 573.21 567.45" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 573.2 572.7 L 569.71 565.7 L 573.21 567.45 L 576.71 565.71 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><path d="M 430.1 663.01 L 430.18 694 L 430.83 717.63" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/><path d="M 430.97 722.88 L 427.28 715.98 L 430.83 717.63 L 434.28 715.79 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(214, 182, 86), rgb(109, 81, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 694px; margin-left: 430px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">register future</div></div></div></foreignObject><text x="430" y="697" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">register future</text></switch></g></g><g><path d="M 763.72 659.88 L 763.64 670 L 631.09 670 L 631.09 757.09 L 607.37 757.02" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/><path d="M 602.12 757 L 609.13 753.52 L 607.37 757.02 L 609.11 760.52 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(214, 182, 86), rgb(109, 81, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 670px; margin-left: 686px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; "><b>set future result</b></div></div></div></foreignObject><text x="686" y="673" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">set future result</text></switch></g></g><g><path d="M 810.64 670.88 L 810.55 697.09 L 810.68 720.28" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/><path d="M 810.71 725.53 L 807.17 718.55 L 810.68 720.28 L 814.17 718.51 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(214, 182, 86), rgb(109, 81, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 698px; margin-left: 811px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">put(MediaEvent)</div></div></div></foreignObject><text x="811" y="701" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">put(MediaEvent)</text></switch></g></g><g><path d="M 111.09 650 L 111.09 785.09 L 110.05 913.63" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 110.01 918.88 L 106.57 911.85 L 110.05 913.63 L 113.57 911.91 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 785px; margin-left: 111px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">put Command</div></div></div></foreignObject><text x="111" y="788" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">put Command</text></switch></g></g><g><path d="M 317.6 661.3 L 317.64 690 L 211.09 690 L 211.09 792 L 210.05 913.63" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 210.01 918.88 L 206.57 911.85 L 210.05 913.63 L 213.57 911.91 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 769px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">put Command</div></div></div></foreignObject><text x="211" y="773" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">put Command</text></switch></g></g><g><path d="M 631.6 925.6 L 631.64 920 L 631.09 615.09 L 754.63 615" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 759.88 615 L 752.88 618.51 L 754.63 615 L 752.88 611.51 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 615px; margin-left: 697px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">WorkerEvent</div></div></div></foreignObject><text x="697" y="618" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">WorkerEvent</text></switch></g></g><g><path d="M 481 970 L 481.09 880 L 161.09 880 L 161.09 656.37" fill="none" stroke="#b85450" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 161.09 651.12 L 164.59 658.12 L 161.09 656.37 L 157.59 658.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 880px; margin-left: 320px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">blocking .get</div></div></div></foreignObject><text x="320" y="883" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">blocking .get</text></switch></g></g><g><path d="M 140 1020 L 140 1170 L 140.96 1313.63" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 140.99 1318.88 L 137.45 1311.91 L 140.96 1313.63 L 144.45 1311.86 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><path d="M 321 1380 L 414.63 1380" fill="none" stroke="#d79b00" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/><path d="M 419.88 1380 L 412.88 1383.5 L 414.63 1380 L 412.88 1376.5 Z" fill="#d79b00" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(215, 155, 0), rgb(153, 101, 0)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1380px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">USER_STEP</div></div></div></foreignObject><text x="372" y="1383" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">USER_STEP</text></switch></g></g><g><path d="M 201 1320 L 201.09 1200 L 511.09 1200 L 511 1026.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 511 1021.12 L 514.5 1028.12 L 511 1026.37 L 507.5 1028.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1200px; margin-left: 387px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">StepComplete / ack types</div></div></div></foreignObject><text x="387" y="1203" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">StepComplete / ack types</text></switch></g></g><g><path d="M 541 1440 L 541 1493.63" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/><path d="M 541 1498.88 L 537.5 1491.88 L 541 1493.63 L 544.5 1491.88 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(150, 115, 166), rgb(149, 119, 163)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1471px; margin-left: 541px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">generator.generate_video()</div></div></div></foreignObject><text x="541" y="1474" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">generator.generate_video()</text></switch></g></g><g><path d="M 414.63 1416 L 371.09 1416 L 371.09 1520 L 327.37 1520" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/><path d="M 419.88 1416 L 412.88 1419.5 L 414.63 1416 L 412.88 1412.5 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(214, 182, 86), rgb(109, 81, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/><path d="M 322.12 1520 L 329.12 1516.5 L 327.37 1520 L 329.12 1523.5 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(214, 182, 86), rgb(109, 81, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1468px; margin-left: 371px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">read / write</div></div></div></foreignObject><text x="371" y="1471" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">read / write</text></switch></g></g><g><path d="M 661 1380 L 754.63 1380" fill="none" stroke="#d79b00" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/><path d="M 759.88 1380 L 752.88 1383.5 L 754.63 1380 L 752.88 1376.5 Z" fill="#d79b00" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(215, 155, 0), rgb(153, 101, 0)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1380px; margin-left: 712px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">frames + audio</div></div></div></foreignObject><text x="712" y="1383" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">frames + audio</text></switch></g></g><g><path d="M 891 1440 L 891 1493.63" fill="none" stroke="#d79b00" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/><path d="M 891 1498.88 L 887.5 1491.88 L 891 1493.63 L 894.5 1491.88 Z" fill="#d79b00" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(215, 155, 0), rgb(153, 101, 0)); stroke: light-dark(rgb(215, 155, 0), rgb(153, 101, 0));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1471px; margin-left: 891px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">rawvideo + wav</div></div></div></foreignObject><text x="891" y="1474" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">rawvideo + wav</text></switch></g></g><g><path d="M 956 1320 L 956 1170 L 1001.09 1170 L 1001 1026.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 1001 1021.12 L 1004.5 1028.12 L 1001 1026.37 L 997.5 1028.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1170px; margin-left: 979px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">write mp4 bytes<br />at shared_write_offset</div></div></div></foreignObject><text x="979" y="1173" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">write mp4 bytes...</text></switch></g></g><g><path d="M 1026.48 922.7 L 1026.55 920 L 1026.05 856.37" fill="none" stroke="#b85450" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 1026.01 851.12 L 1029.56 858.09 L 1026.05 856.37 L 1022.56 858.15 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 886px; margin-left: 1026px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">bytes from the buffer are sent through websocket <div>based on info from the stream queue</div></div></div></div></foreignObject><text x="1026" y="889" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">bytes from the buffer are sent through websocket...</text></switch></g></g><g><path d="M 1141 787 L 1141.09 777.09 L 1271.09 777.09 L 1271.09 170 L 707.37 170" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/><path d="M 702.12 170 L 709.12 166.5 L 707.37 170 L 709.12 173.5 Z" fill="#6c8ebf" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(108, 142, 191), rgb(92, 121, 163)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 259px; margin-left: 1271px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">session AV loop (main.py:2124):<br />ws.send_bytes(chunk) — binary mp4 frames<br />ws.send_json({type: media_init | media_segment_complete | ...})</div></div></div></foreignObject><text x="1271" y="262" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">session AV loop (main.py:2124):...</text></switch></g></g><g><path d="M 787 1320 L 787.09 1170 L 651.09 1170 L 651 1026.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 651 1021.12 L 654.5 1028.12 L 651 1026.37 L 647.5 1028.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(184, 84, 80), rgb(215, 129, 126)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1170px; margin-left: 719px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 10px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">MediaChunk (offset, len)</div></div></div></foreignObject><text x="719" y="1173" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="10px" text-anchor="middle">MediaChunk (offset, len)</text></switch></g></g><g><rect x="0" y="0" width="270" height="380" rx="40.5" ry="40.5" fill="#f5f5f5" stroke="#999999" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(153, 153, 153), rgb(106, 106, 106));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 258px; height: 1px; padding-top: 194px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Legend<br /><br />■ blue client / external<br />■ green main-process pool/slot<br /> (methods — italic label)<br />■ yellow containers (routing state)<br />■ red IPC primitives (mp.Queue, mp.RawArray)<br /><br />Worker subprocess modules:<br />■ orange gpu_pool.py (dispatcher)<br />■ lavender video_generation.py<br />■ teal av_streaming.py<br />■ gray worker_ipc.py (shared types)<br /><br />Flow:<br /> client → pool → slot<br /> → _send_command(_tagged) → command_queue<br /> → dispatcher → generate_step()<br /> → stream_fmp4() → ffmpeg<br /> → shared_buf + response_queue<br /> → _response_reader → futures / stream_queues<br /> → client awaits (via main.py AV loop)</div></div></div></foreignObject><text x="12" y="197" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px">Legend...</text></switch></g></g><g><rect x="481" y="1670" width="120" height="60" rx="9" ry="9" fill="#e1d5e7" stroke="#9673a6" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1700px; margin-left: 482px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">FastVideo video_generator</div></div></div></foreignObject><text x="541" y="1703" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">FastVideo video_genera...</text></switch></g></g><g><path d="M 170.47 500.3 L 170.55 535.09 L 170.81 565.23" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/><path d="M 170.86 570.48 L 167.3 563.51 L 170.81 565.23 L 174.3 563.45 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(130, 179, 102), rgb(68, 110, 44)); stroke: light-dark(rgb(130, 179, 102), rgb(68, 110, 44));"/></g><g><path d="M 495.09 500 L 495.09 510 Q 495.09 520 485.09 520 L 276.18 520 Q 266.18 520 266.16 530 L 266.1 565.31" fill="none" stroke="#61a25d" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(97, 162, 93), rgb(74, 130, 71));"/><path d="M 266.09 570.56 L 262.6 563.56 L 266.1 565.31 L 269.6 563.57 Z" fill="#61a25d" stroke="#61a25d" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(97, 162, 93), rgb(74, 130, 71)); stroke: light-dark(rgb(97, 162, 93), rgb(74, 130, 71));"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 521px; margin-left: 336px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">reload model</div></div></div></foreignObject><text x="336" y="524" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">reload model</text></switch></g></g><g/><g><path d="M 1301 960.35 C 1301 956.84 1305.79 954 1311.69 954 C 1314.53 954 1317.25 954.67 1319.26 955.86 C 1321.26 957.05 1322.39 958.67 1322.39 960.35 L 1322.39 969.65 C 1322.39 973.16 1317.6 976 1311.69 976 C 1305.79 976 1301 973.16 1301 969.65 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/><path d="M 1322.39 960.35 C 1322.39 963.86 1317.6 966.71 1311.69 966.71 C 1305.79 966.71 1301 963.86 1301 960.35" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));"/></g><g><rect x="1322.39" y="950" width="218.61" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 217px; height: 1px; padding-top: 970px; margin-left: 1323px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Queue: owned by GPUSlot, passed to worker process as argument.</div></div></div></foreignObject><text x="1432" y="974" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Queue: owned by GPUSlot, passed to w...</text></switch></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>