Driver: Implement audio scheduler (#179)
This PR implements a custom scheduler for audio threads, which reduces thread use and (often) memory consumption. To save threads and memory (e.g., packet buffer allocations), Songbird parks Mixer tasks which do not have any live Tracks. These are now all co-located on a single async 'Idle' task. This task is responsible for managing UDP keepalive messages for each task, maintaining event state, and executing any Mixer task messages. Whenever any message arrives which adds a `Track`, the mixer task is moved to a live thread. The Idle task inspects task counts and execution time on each thread, choosing the first live thread with room, and creating a new one if needed. Each live thread is responsible for running as many live mixers as it can in a single tick every 20ms: this currently defaults to 16 mixers per thread, but is user-configurable. A live thread also stores RTP packet blocks to be written into by each sub-task. Each live thread has a conservative limit of 18ms that it will aim to stay under: if all work takes longer than this, it will offload the task with the highest mixing cost once per tick onto another (possibly new) live worker thread.
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 113 KiB |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1525 1071" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1525 1096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
||||
<g transform="matrix(1,0,0,1,-31,-921)">
|
||||
<g transform="matrix(1,0,0,1,0,900)">
|
||||
<g transform="matrix(1,0,0,1,299,-52.947)">
|
||||
@@ -32,15 +32,6 @@
|
||||
<g transform="matrix(1,0,0,1,-326.049,1208.17)">
|
||||
<text x="503.152px" y="302.395px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;fill:white;">Driv<tspan x="592.852px " y="302.395px ">e</tspan>r</text>
|
||||
</g>
|
||||
<g transform="matrix(0.960543,0,0,1,84.2035,0)">
|
||||
<path d="M89.27,1672.76L1407.47,1672.76" style="fill:none;stroke:rgb(62,62,62);stroke-width:3.97px;stroke-dasharray:39.71,39.71,0,0;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-260,37)">
|
||||
<text x="409.473px" y="1589.56px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">As<tspan x="460.973px " y="1589.56px ">y</tspan>nc</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-260,153.713)">
|
||||
<text x="409.473px" y="1589.56px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">S<tspan x="435.723px " y="1589.56px ">y</tspan>nc</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-257.171,22.6916)">
|
||||
<g transform="matrix(0.724138,0,0,0.724138,223.721,413.46)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:5.38px;"/>
|
||||
@@ -49,37 +40,25 @@
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">C<tspan x="789.953px 819.153px 837.953px " y="1473.58px 1473.58px 1473.58px ">ore</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,53.0449,-6.9189)">
|
||||
<g transform="matrix(1,0,0,1,-380.468,23.7117)">
|
||||
<g transform="matrix(1.75342,0,0,1.61288,854.748,-134.087)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:2.31px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<text x="126.789px" y="1193.29px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Thr<tspan x="200.739px " y="1193.29px ">e</tspan>ad P<tspan x="326.639px " y="1193.29px ">o</tspan>ol</text>
|
||||
<g transform="matrix(1,0,0,1,931.504,756.618)">
|
||||
<text x="149.289px" y="1193.29px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Schedul<tspan x="330.389px " y="1193.29px ">e</tspan>r</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-31.0449,9.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="770.503px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Seek</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-15.1891,-18.5496)">
|
||||
<g transform="matrix(0.821616,0,0,0.821616,525.276,598.978)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:4.74px;stroke-dasharray:23.7,23.7,0,0;"/>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,804.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="719.778px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">C<tspan x="747.278px " y="1473.58px ">o</tspan>mpose</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,427.729,-183.18)">
|
||||
<path d="M858.852,1972.01C877.965,1982.81 889.714,1997.46 889.714,2013.59C889.714,2046.75 840.054,2073.66 778.887,2073.66C746.089,2073.66 716.6,2065.92 696.296,2053.63L858.852,1972.01Z" style="fill:rgb(255,221,157);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,864.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
<g transform="matrix(0.821616,0,0,0.821616,525.276,598.978)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:none;stroke:rgb(62,62,62);stroke-width:4.74px;stroke-dasharray:23.7,23.7,0,0;"/>
|
||||
</g>
|
||||
<g transform="matrix(0.806811,0,0,0.806811,542.204,653.353)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
@@ -91,22 +70,6 @@
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Ev<tspan x="813.303px " y="1473.58px ">e</tspan>nts</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,0,264.735)">
|
||||
<g transform="matrix(0.724138,0,0,0.724138,223.721,413.46)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:5.38px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,4.54747e-13,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-320.203,332.81)">
|
||||
<g transform="matrix(0.924892,0,0,0.924892,52.9138,113.02)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:4.21px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-3,40.3406)">
|
||||
<text x="725.078px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Disposer</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.234011,0.0406263,-0.10801,0.622149,635.72,1439.47)">
|
||||
<path d="M212.72,146.182L212.72,132.063L489.811,132.063L489.811,103.825L540.487,139.123L489.811,174.421L489.811,146.182L212.72,146.182Z" style="fill:rgb(255,77,74);"/>
|
||||
</g>
|
||||
@@ -130,14 +93,8 @@
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g transform="matrix(-0.266822,0.110146,-0.240947,-0.583678,811.395,1831.03)">
|
||||
<path d="M212.72,146.182L212.72,132.063L498.791,132.063L498.791,103.825L540.487,139.123L498.791,174.421L498.791,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.494195,0.135428,-0.12143,0.443115,829.694,1701.34)">
|
||||
<path d="M230.444,146.182L230.444,174.421L212.72,139.123L230.444,103.825L230.444,132.063L523.396,132.063L523.396,103.825L540.487,139.123L523.396,174.421L523.396,146.182L230.444,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.0764172,-0.232117,0.599787,0.197461,745.524,1728.62)">
|
||||
<path d="M212.72,146.182L212.72,132.063L491.234,132.063L491.234,103.825L540.487,139.123L491.234,174.421L491.234,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
<g transform="matrix(0.106551,-0.446033,0.614174,0.146717,753.629,1845.98)">
|
||||
<path d="M212.72,146.182L212.72,132.063L514.241,132.063L514.241,103.825L540.487,139.123L514.241,174.421L514.241,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.09184,-0.226458,0.585165,-0.237313,776.07,1552.03)">
|
||||
<path d="M212.72,146.182L212.72,132.063L491.234,132.063L491.234,103.825L540.487,139.123L491.234,174.421L491.234,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
@@ -145,8 +102,8 @@
|
||||
<g transform="matrix(-0.242347,-0.0314007,0.0811391,-0.62622,1007.44,1453.94)">
|
||||
<path d="M212.72,146.182L212.72,132.063L491.234,132.063L491.234,103.825L540.487,139.123L491.234,174.421L491.234,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.331589,0.464216,-0.513833,0.36703,645.231,1416.91)">
|
||||
<path d="M251.791,146.182L251.791,174.421L212.72,139.123L251.791,103.825L251.791,132.063L519.389,132.063L519.389,103.825L540.487,139.123L519.389,174.421L519.389,146.182L251.791,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
<g transform="matrix(0.425191,0.595256,-0.513833,0.36703,610.905,1394.44)">
|
||||
<path d="M243.19,146.182L243.19,174.421L212.72,139.123L243.19,103.825L243.19,132.063L524.033,132.063L524.033,103.825L540.487,139.123L524.033,174.421L524.033,146.182L243.19,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.238092,0.276193,-0.478275,-0.412296,812.148,1376.42)">
|
||||
<path d="M246.95,146.182L246.95,174.421L212.72,139.123L246.95,103.825L246.95,132.063L507.48,132.063L507.48,103.825L540.487,139.123L507.48,174.421L507.48,146.182L246.95,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 129 KiB |
BIN
images/scheduler.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
329
images/scheduler.svg
Normal file
@@ -0,0 +1,329 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1375 1307" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
||||
<g transform="matrix(1,0,0,1,-2132,-380)">
|
||||
<g transform="matrix(0.960543,0,0,1,2128.12,-622.183)">
|
||||
<path d="M89.27,1672.76L1407.47,1672.76" style="fill:none;stroke:rgb(186,186,186);stroke-width:3.97px;stroke-dasharray:39.71,39.71,0,0;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1783.91,-585.183)">
|
||||
<text x="409.473px" y="1589.56px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">As<tspan x="460.973px " y="1589.56px ">y</tspan>nc</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1783.91,-468.47)">
|
||||
<text x="409.473px" y="1589.56px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">S<tspan x="435.723px " y="1589.56px ">y</tspan>nc</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1536.27,-1077.6)">
|
||||
<g transform="matrix(1.75342,0,0,1.61288,854.748,-134.087)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:2.31px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<text x="140.064px" y="1193.29px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Idl<tspan x="198.864px " y="1193.29px ">e</tspan> Mix<tspan x="316.764px 344.264px 363.064px " y="1193.29px 1193.29px 1193.29px ">ers</tspan></text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,91.9551,9.9189)">
|
||||
<g opacity="0.5">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:black;stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;stroke:black;stroke-opacity:0;stroke-width:1.98px;stroke-linecap:butt;stroke-miterlimit:2;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:black;stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;stroke:black;stroke-opacity:0;stroke-width:1.98px;stroke-linecap:butt;stroke-miterlimit:2;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:black;stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;stroke:black;stroke-opacity:0;stroke-width:1.98px;stroke-linecap:butt;stroke-miterlimit:2;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,31.9551,9.9189)">
|
||||
<g opacity="0.69">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-28.0449,9.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1289.87,-560.521)">
|
||||
<g transform="matrix(2.86943,0,0,1.72283,741.053,-259.784)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(234,234,234);stroke:rgb(62,62,62);stroke-width:1.65px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,193.864,60.8467)">
|
||||
<g transform="matrix(1.75342,0,0,1.27206,854.748,255.576)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(219,219,219);stroke:rgb(62,62,62);stroke-width:2.54px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<text x="160.901px" y="1183.91px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:37.5px;">Thr<tspan x="216.364px " y="1183.91px ">e</tspan>ad P<tspan x="310.789px " y="1183.91px ">o</tspan>ol</text>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,767.748,1105.66)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-31.0449,9.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="770.503px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Seek</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,854.011,1048.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="719.778px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">C<tspan x="747.278px " y="1473.58px ">o</tspan>mpose</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<g id="Live">
|
||||
<text x="140.085px" y="1190.16px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:45.833px;">Liv<tspan x="197.926px " y="1190.16px ">e</tspan> Mix<tspan x="306.001px 331.21px 348.443px " y="1190.16px 1190.16px 1190.16px ">ers</tspan> Thr<tspan x="449.78px " y="1190.16px ">e</tspan>ad #</text>
|
||||
<text x="563.218px" y="1190.16px" style="font-family:'FiraSans-Italic', 'Fira Sans', sans-serif;font-style:italic;font-size:45.833px;">1</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-28.0449,19.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1929.87,-560.521)">
|
||||
<g transform="matrix(2.86943,0,0,1.72283,741.053,-259.784)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(234,234,234);stroke:rgb(62,62,62);stroke-width:1.65px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,193.864,60.8467)">
|
||||
<g transform="matrix(1.75342,0,0,1.27206,854.748,255.576)">
|
||||
<rect x="101.876" y="1143.29" width="184.054" height="163.884" style="fill:rgb(219,219,219);stroke:rgb(62,62,62);stroke-width:2.54px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<text x="160.901px" y="1183.91px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:37.5px;">Thr<tspan x="216.364px " y="1183.91px ">e</tspan>ad P<tspan x="310.789px " y="1183.91px ">o</tspan>ol</text>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,767.748,1105.66)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-31.0449,9.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="770.503px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Seek</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,854.011,1048.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="719.778px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">C<tspan x="747.278px " y="1473.58px ">o</tspan>mpose</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,931.504,566.618)">
|
||||
<g id="Live1" serif:id="Live">
|
||||
<text x="136.578px" y="1190.16px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:45.833px;">Liv<tspan x="194.42px " y="1190.16px ">e</tspan> Mix<tspan x="302.495px 327.703px 344.937px " y="1190.16px 1190.16px 1190.16px ">ers</tspan> Thr<tspan x="446.274px " y="1190.16px ">e</tspan>ad #</text>
|
||||
<text x="559.712px" y="1190.16px" style="font-family:'FiraSans-Italic', 'Fira Sans', sans-serif;font-style:italic;font-size:45.833px;">n</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-28.0449,19.9189)">
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.793,1148.74)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="806.428px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">...</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.011,1098.98)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.506003,0,0,0.506003,744.047,1049.39)">
|
||||
<g transform="matrix(1.01835,0,0,1.01835,-11.9813,-27.0542)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:white;stroke:rgb(62,62,62);stroke-width:7.56px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9,40.3406)">
|
||||
<text x="762.453px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Mix<tspan x="839.603px " y="1473.58px ">e</tspan>r</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,1738.24,98.1256)">
|
||||
<g transform="matrix(0.924892,0,0,0.924892,52.9138,113.02)">
|
||||
<ellipse cx="829.267" cy="1498.79" rx="134.889" ry="73.117" style="fill:rgb(255,193,74);stroke:rgb(62,62,62);stroke-width:4.21px;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-3,40.3406)">
|
||||
<text x="725.078px" y="1473.58px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:50px;">Disposer</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,197.756,-121.243)">
|
||||
<text x="2142px" y="812.69px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:45.833px;">New</text>
|
||||
<text x="2056.32px" y="858.523px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:45.833px;">Mix<tspan x="2127.04px 2152.24px 2168.1px " y="858.523px 858.523px 858.523px ">er/</tspan>Driv<tspan x="2274.16px " y="858.523px ">e</tspan>r</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-54,0)">
|
||||
<g transform="matrix(0.595906,-0.803054,0.803054,0.595906,473.641,2339.83)">
|
||||
<text x="2195.9px" y="837.915px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:41.667px;">Cr<tspan x="2234.9px " y="837.915px ">e</tspan>at<tspan x="2295.11px " y="837.915px ">e</tspan></text>
|
||||
</g>
|
||||
<g transform="matrix(-0.39895,0.55751,-0.616407,-0.441096,2749.77,876.339)">
|
||||
<path d="M212.72,146.182L212.72,132.063L519.412,132.063L519.412,103.825L540.487,139.123L519.412,174.421L519.412,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,30,0)">
|
||||
<g transform="matrix(0.597416,-0.801932,0.801932,0.597416,474.195,2407.65)">
|
||||
<text x="2237.19px" y="855.933px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:37.5px;">Schedul<tspan x="2373.02px " y="855.933px ">e</tspan> Mix<tspan x="2461.44px " y="855.933px ">e</tspan>r</text>
|
||||
</g>
|
||||
<g transform="matrix(-0.39895,0.55751,-0.616407,-0.441096,2839.77,876.339)">
|
||||
<path d="M212.72,146.182L212.72,132.063L519.412,132.063L519.412,103.825L540.487,139.123L519.412,174.421L519.412,146.182L212.72,146.182Z" style="fill:rgb(0,145,255);"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(-0.204144,0.285279,-0.616407,-0.441096,2849.16,1445.1)">
|
||||
<path d="M212.72,146.182L212.72,132.063L499.302,132.063L499.302,103.825L540.487,139.123L499.302,174.421L499.302,146.182L212.72,146.182Z" style="fill:rgb(0,145,255);"/>
|
||||
</g>
|
||||
<g transform="matrix(-0.757756,0.466024,-0.397074,-0.645643,3152.8,1402.47)">
|
||||
<path d="M212.72,146.182L212.72,132.063L524.246,132.063L524.246,103.825L540.487,139.123L524.246,174.421L524.246,146.182L212.72,146.182Z" style="fill:rgb(0,145,255);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,30,0)">
|
||||
<g transform="matrix(0.592937,-0.805249,0.805249,0.592937,936.176,2440.92)">
|
||||
<text x="2058.5px" y="551.43px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:41.667px;">Deschedul<tspan x="2255.92px " y="551.43px ">e</tspan></text>
|
||||
</g>
|
||||
<g transform="matrix(-0.39895,0.55751,-0.616407,-0.441096,2929.77,876.339)">
|
||||
<path d="M251.747,146.182L251.747,174.421L212.72,139.123L251.747,103.825L251.747,132.063L540.487,132.063L540.487,146.182L251.747,146.182Z" style="fill:rgb(0,145,255);"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,554.954,389.188)">
|
||||
<text x="2256.37px" y="574.853px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:41.667px;">M<tspan x="2289.33px 2312.83px 2332.91px " y="574.853px 574.853px 574.853px ">ove</tspan> Mix<tspan x="2431.16px " y="574.853px ">e</tspan>r</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,37.8377,-12.6126)">
|
||||
<text x="2840.19px" y="1319.22px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:64.865px;">...</text>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,2011.31,633.864)">
|
||||
<path d="M212.72,146.182L212.72,132.063L521.426,132.063L521.426,103.825L540.487,139.123L521.426,174.421L521.426,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,530,0)">
|
||||
<g transform="matrix(-0.39895,0.55751,-0.616407,-0.441096,2249.77,876.339)">
|
||||
<path d="M212.72,146.182L212.72,132.063L519.412,132.063L519.412,103.825L540.487,139.123L519.412,174.421L519.412,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.595906,-0.803054,0.803054,0.595906,-21.9714,2325.42)">
|
||||
<text x="2184.79px" y="837.915px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:41.667px;">Destr<tspan x="2284.71px 2308.63px " y="837.915px 837.915px ">oy</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,-0,-0,1,2132,380)">
|
||||
<path d="M926.251,688.123L929.33,726.605L896.697,705.978L926.251,688.123Z" style="fill:rgb(0,145,255);"/>
|
||||
<path d="M612.214,726.605C612.214,726.605 754.971,452.986 915.045,702.961" style="fill:none;stroke:rgb(0,145,255);stroke-width:11.51px;stroke-linecap:butt;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,2112.36,364.866)">
|
||||
<g transform="matrix(1,0,0,1,299,-52.947)">
|
||||
<path d="M212.72,146.182L212.72,132.063L521.426,132.063L521.426,103.825L540.487,139.123L521.426,174.421L521.426,146.182L212.72,146.182Z" style="fill:rgb(62,62,62);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-168.926,12.6064)">
|
||||
<text x="235.411px" y="98.782px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:75px;">Int<tspan x="327.811px 369.061px 396.511px " y="98.782px 98.782px 98.782px ">era</tspan>ction</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,2112.36,443.866)">
|
||||
<g transform="matrix(1,0,0,1,299,-52.947)">
|
||||
<path d="M212.72,146.182L212.72,132.063L521.426,132.063L521.426,103.825L540.487,139.123L521.426,174.421L521.426,146.182L212.72,146.182Z" style="fill:rgb(0,145,255);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-168.926,12.6064)">
|
||||
<text x="235.411px" y="98.782px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:75px;">M<tspan x="294.736px " y="98.782px ">e</tspan>ssag<tspan x="485.086px " y="98.782px ">e</tspan>s</text>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.849915,-0.52692,0.52692,0.849915,-377.877,1731.84)">
|
||||
<text x="2720.74px" y="1522.82px" style="font-family:'FiraSans-Regular', 'Fira Sans', sans-serif;font-size:41.667px;">T<tspan x="2738.95px 2754.2px " y="1522.82px 1522.82px ">ra</tspan>ck cl<tspan x="2860.87px " y="1522.82px ">e</tspan>anup</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 26 KiB |