Files

716 lines
60 KiB
XML
Raw Permalink Normal View History

2025-09-10 13:40:11 +08:00
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="C:\github\dataflowg\g-audio\images\playback.png"
sodipodi:docname="playback.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 211.66666 230.1875"
height="870"
width="800">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="marker1081"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path1079"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart"
inkscape:collect="always">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Sstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Sstart">
<path
transform="matrix(0.3,0,0,0.3,-0.69,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path948" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lstart">
<path
transform="matrix(1.1,0,0,1.1,1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path936" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mstart">
<path
transform="matrix(0.4,0,0,0.4,4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path924" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Lstart"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path918" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart-6"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path942-2"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart-6-5"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942-2-7" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart-9"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path942-4"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart-9-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942-4-8" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart-9-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942-4-5" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart-6-5-0"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path942-2-7-7"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart-9-1"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942-4-85" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart-90"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path942-1"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="scale(0.6)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow2Mstart-90-1"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mstart">
<path
transform="scale(0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path942-1-5" />
</marker>
</defs>
<sodipodi:namedview
inkscape:snap-center="true"
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:window-height="1017"
inkscape:window-width="1920"
inkscape:snap-global="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-intersection-paths="false"
inkscape:object-paths="false"
inkscape:snap-bbox="true"
units="px"
showgrid="true"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="369.88459"
inkscape:cx="440.29346"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base">
<inkscape:grid
id="grid1389"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<image
style="stroke-width:2"
id="image3521"
xlink:href="data:image/png;base64,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
preserveAspectRatio="none"
height="25.929169"
width="33.866669"
x="87.841667"
y="11.112497" />
<rect
y="55.5625"
x="2.6458333"
height="87.3125"
width="206.375"
id="rect4507"
style="fill:#f9f9f9;fill-opacity:1;stroke:#999999;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:3.175, 0.529167;stroke-dashoffset:0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
x="206.0321"
y="130.73517"
id="text835-3-8-9"><tspan
sodipodi:role="line"
x="206.0321"
y="130.73517"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
id="tspan1054">The ring buffer size (2048 in this example) is</tspan><tspan
id="tspan1157"
sodipodi:role="line"
x="206.0321"
y="136.02684"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583">set when calling <tspan
id="tspan3213"
style="font-weight:bold;font-size:4.23333px;text-align:end;text-anchor:end">Configure Audio Device.vi</tspan>.</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
x="204.78285"
y="64.729233"
id="text835-5"><tspan
id="tspan1482"
sodipodi:role="line"
x="204.78285"
y="64.729233"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583">Ring Buffer</tspan></text>
<text
id="text835-5-3"
y="192.09875"
x="130.95499"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan3428"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
y="192.09875"
x="130.95499"
sodipodi:role="line">Backend Callback</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;stroke-width:0.264583"
x="154.24408"
y="172.3923"
id="text835-5-3-9"><tspan
sodipodi:role="line"
id="tspan833-3-4-4"
x="154.24408"
y="172.3923"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">Audio Device</tspan><tspan
id="tspan5026"
sodipodi:role="line"
x="154.24408"
y="181.21175"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">Hardware</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round"
id="rect899-8"
width="63.499996"
height="15.87501"
x="74.083336"
y="166.6875" />
<rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round"
id="rect899-8-9-4"
width="21.166679"
height="15.87501"
x="74.083321"
y="166.68748" />
<text
id="text835-3-8"
y="198.73892"
x="105.80233"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan5030"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="198.73892"
x="105.80233"
sodipodi:role="line">The backend buffer is made up of 1 or more (usually 3) periods.</tspan><tspan
id="tspan4689"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="204.03058"
x="105.80233"
sodipodi:role="line">The callback requests enough data to fill one or more periods,</tspan><tspan
id="tspan3270"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="209.32225"
x="105.80233"
sodipodi:role="line">depending on what the backend driver requests. If there is</tspan><tspan
id="tspan1111"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="214.61391"
x="105.80233"
sodipodi:role="line">insufficient data in the ring buffer, the callback will poll it for</tspan><tspan
id="tspan4691"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="219.90558"
x="105.80233"
sodipodi:role="line">more data. If not enough data arrives for that period, playback</tspan><tspan
id="tspan1149"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
y="225.19724"
x="105.80233"
sodipodi:role="line">will be interrupted.</tspan></text>
<path
id="path916-9-2"
d="M 105.83333,164.04167 V 145.52083"
style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart-6-5)" />
<circle
transform="scale(-1)"
r="26.458334"
cy="-92.604156"
cx="-105.8366"
id="path3774"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="scale(-1)"
sodipodi:arc-type="slice"
sodipodi:end="1.2217305"
sodipodi:start="5.9341195"
sodipodi:ry="26.458334"
sodipodi:rx="26.458334"
sodipodi:cy="-92.604156"
sodipodi:cx="-105.8366"
sodipodi:type="arc"
style="fill:#993300;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3774-23"
d="m -80.9739,-101.65344 a 26.458334,26.458334 0 0 1 -15.813419,33.911985 l -9.049281,-24.862701 z" />
<path
transform="scale(-1)"
id="path3774-23-6"
style="fill:#80e5ff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc"
sodipodi:cx="-105.8366"
sodipodi:cy="-92.604156"
sodipodi:rx="26.458334"
sodipodi:ry="26.458334"
sodipodi:start="4.712389"
sodipodi:end="5.9341195"
sodipodi:arc-type="slice"
d="m -105.8366,-119.06249 a 26.458334,26.458334 0 0 1 24.8627,17.40905 l -24.8627,9.049284 z" />
<circle
transform="scale(-1)"
style="fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path3774-2"
cx="-105.8366"
cy="-92.604156"
r="15.874999" />
<text
id="text835-3-8-3-0"
y="131.20035"
x="105.88462"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan3618-2-9"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
y="131.20035"
x="105.88462"
sodipodi:role="line">Read</tspan><tspan
id="tspan3954"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
y="136.492"
x="105.88462"
sodipodi:role="line">Pointer</tspan></text>
<path
style="fill:none;stroke:#4d4d4d;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart-9)"
d="m 105.83333,121.70835 v 5.29166"
id="path916-0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
x="66.669594"
y="103.6081"
id="text835-3-8-3-0-2"><tspan
sodipodi:role="line"
x="66.669594"
y="103.6081"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
id="tspan3618-2-9-4">Write</tspan><tspan
sodipodi:role="line"
x="66.669594"
y="108.89977"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;fill:#4d4d4d;stroke:none;stroke-width:0.264583"
id="tspan3954-1">Pointer</tspan></text>
<path
id="path916-0-8"
d="m 78.64387,102.594 -5.046103,1.59327"
style="fill:none;stroke:#4d4d4d;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart-9-9)" />
<text
id="text835-3-8-3-0-2-5"
y="72.010689"
x="64.872368"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan4279"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
y="72.010689"
x="64.872368"
sodipodi:role="line">Next block to be written</tspan><tspan
id="tspan4397"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
y="79.066238"
x="64.872368"
sodipodi:role="line">(512 Frames)</tspan></text>
<path
sodipodi:nodetypes="ccc"
id="path4281"
d="m 66.14583,74.08333 h 7.937503 L 87.3125,84.666665"
style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5875, 0.264583;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
x="68.627571"
y="120.43754"
id="text835-3-8-3-0-2-5-6"><tspan
sodipodi:role="line"
x="68.627571"
y="120.43754"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
id="tspan4279-0">Next block to be read</tspan><tspan
id="tspan4309"
sodipodi:role="line"
x="68.627571"
y="127.49309"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583">(<tspan
style="font-style:italic"
id="tspan1041">Period</tspan> Frames, typically</tspan><tspan
sodipodi:role="line"
x="68.627571"
y="134.54865"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
id="tspan1043">sample rate / 100)</tspan></text>
<path
sodipodi:nodetypes="ccc"
style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5875, 0.264583;stroke-dashoffset:0;stroke-opacity:1"
d="m 71.4375,121.70835 h 7.937501 l 13.229166,-10.58333"
id="path4281-9" />
<path
sodipodi:nodetypes="cc"
id="path4281-9-2"
d="M 145.52084,92.604165 H 127"
style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5875, 0.264583;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
x="146.61359"
y="90.304573"
id="text835-3-8-3-0-2-5-0"><tspan
sodipodi:role="line"
x="146.61359"
y="90.304573"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
id="tspan4397-1">Spare capacity</tspan><tspan
id="tspan4509"
sodipodi:role="line"
x="146.61359"
y="97.360123"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">(already read / written)</tspan></text>
<rect
y="166.68747"
x="95.25"
height="15.87501"
width="21.166679"
id="rect899-8-9-4-6"
style="fill:#80e5ff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round" />
<rect
style="fill:#dd55ff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round"
id="rect899-8-9-4-6-4"
width="21.166679"
height="15.87501"
x="116.41666"
y="166.68747" />
<text
id="text835"
y="11.253897"
x="134.50716"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
xml:space="preserve"><tspan
id="tspan1490"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
y="11.253897"
x="134.50716"
sodipodi:role="line">Playback Audio.vim</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
x="125.30067"
y="19.506834"
id="text835-3"><tspan
id="tspan1127"
sodipodi:role="line"
x="125.30067"
y="19.506834"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">This call will block until there is</tspan><tspan
id="tspan3564"
sodipodi:role="line"
x="125.30067"
y="25.680447"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">sufficient space in the ring buffer</tspan><tspan
id="tspan1135"
sodipodi:role="line"
x="125.30067"
y="31.854059"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583">for the audio block.</tspan></text>
<path
id="path916"
d="M 105.83333,52.916665 V 34.395832"
style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
x="72.545753"
y="18.62532"
id="text835-3-8-3-0-2-5-07"><tspan
sodipodi:role="line"
x="72.545753"
y="18.62532"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583"
id="tspan4397-0">Audio data</tspan><tspan
id="tspan5188"
sodipodi:role="line"
x="72.545753"
y="25.68087"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583">(2 channels of 512 Samples,</tspan><tspan
id="tspan3166"
sodipodi:role="line"
x="72.545753"
y="32.73642"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:end;text-anchor:end;stroke-width:0.264583">or 512 Frames)</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart-90)"
d="M 84.666667,21.166665 H 74.083334"
id="path916-5" />
<text
id="text5368"
y="31.22084"
x="13.229166"
style="font-size:10.5833px;line-height:1.25;font-family:'Agency FB';-inkscape-font-specification:'Agency FB';stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="31.22084"
x="13.229166"
id="tspan5366"
sodipodi:role="line" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="105.71258"
y="90.859566"
id="text835-3-8-3-0-2-5-8"><tspan
sodipodi:role="line"
x="105.71258"
y="90.859566"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583"
id="tspan4397-7">2048</tspan><tspan
id="tspan3197"
sodipodi:role="line"
x="105.71258"
y="97.915115"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:center;text-anchor:middle;stroke-width:0.264583">Frames</tspan></text>
<text
id="text835-3-8-3-0-2-5-07-3-8-3"
y="29.700407"
x="234.88477"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
y="29.700407"
x="234.88477"
sodipodi:role="line"
id="tspan3164-1">Definitions</tspan><tspan
id="tspan3272"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
y="34.992069"
x="234.88477"
sodipodi:role="line"><tspan
id="tspan3274"
style="font-style:italic">Sample</tspan> = Single unit of audio data, typically an I16 or SGL</tspan><tspan
id="tspan3252"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
y="40.28373"
x="234.88477"
sodipodi:role="line"><tspan
id="tspan3256"
style="font-style:italic">Frame</tspan> = Group of samples equal to number of channels</tspan><tspan
id="tspan3250"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
y="45.575394"
x="234.88477"
sodipodi:role="line"><tspan
id="tspan3258"
style="font-style:italic">Period</tspan> = 10ms of frames (sample rate / 100).</tspan><tspan
id="tspan3248"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Calibri;-inkscape-font-specification:Calibri;text-align:start;text-anchor:start;stroke-width:0.264583"
y="50.867058"
x="234.88477"
sodipodi:role="line"> Typically 441 or 480 frames.</tspan></text>
<path
id="path916-5-7"
d="M 150.81251,174.62499 H 140.22917"
style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart-90-1)" />
<path
style="fill:none;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.529;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.529, 1.587;stroke-dashoffset:0;marker-start:url(#marker1081)"
id="path3774-0"
transform="scale(1,-1)"
sodipodi:type="arc"
sodipodi:cx="105.83709"
sodipodi:cy="-92.546562"
sodipodi:rx="12.731668"
sodipodi:ry="12.731668"
sodipodi:start="5.0614548"
sodipodi:end="4.3633231"
sodipodi:arc-type="arc"
d="m 110.19158,-104.51042 a 12.731668,12.731668 0 0 1 8.18376,14.174688 12.731668,12.731668 0 0 1 -12.53825,10.520838 12.731668,12.731668 0 0 1 -12.538246,-10.520837 12.731668,12.731668 0 0 1 8.183756,-14.174689"
sodipodi:open="true" />
</g>
</svg>