diff options
-rw-r--r-- | figures/txchain-with-encoders.pdf | bin | 0 -> 20003 bytes | |||
-rw-r--r-- | figures/txchain-with-encoders.svg | 659 | ||||
-rw-r--r-- | interfaces.tex | 1 | ||||
-rw-r--r-- | scenarios.tex | 62 |
4 files changed, 711 insertions, 11 deletions
diff --git a/figures/txchain-with-encoders.pdf b/figures/txchain-with-encoders.pdf Binary files differnew file mode 100644 index 0000000..c8a611e --- /dev/null +++ b/figures/txchain-with-encoders.pdf diff --git a/figures/txchain-with-encoders.svg b/figures/txchain-with-encoders.svg new file mode 100644 index 0000000..b1242d0 --- /dev/null +++ b/figures/txchain-with-encoders.svg @@ -0,0 +1,659 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="560" + height="300" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="txchain-with-encoders.svg" + inkscape:export-filename="/home/bram/dab/mmbtools-doc/figures/txchain-with-encoders.png" + inkscape:export-xdpi="130" + inkscape:export-ydpi="130"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + id="path4039" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.4,0,0,0.4,4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend" + style="overflow:visible"> + <path + id="path4042" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0" + refX="0" + id="Arrow1Send" + style="overflow:visible"> + <path + id="path4048" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path4033" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible"> + <path + id="path4036" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.6464286" + inkscape:cx="281.21475" + inkscape:cy="151.21475" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1549" + inkscape:window-height="880" + inkscape:window-x="49" + inkscape:window-y="-3" + inkscape:window-maximized="1" + fit-margin-top="5" + fit-margin-left="5" + fit-margin-bottom="5" + fit-margin-right="5" + inkscape:object-paths="true" + inkscape:object-nodes="true" + inkscape:snap-intersection-paths="true" + inkscape:snap-smooth-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3753" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <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 + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-1.0898437,-747.8614)"> + <rect + y="967.86139" + x="71.089844" + height="69.999199" + width="200" + id="rect3806" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text3840" + y="997.86139" + x="141.08984" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="997.86139" + x="141.08984" + id="tspan3842" + sodipodi:role="line">Multiplexer</tspan><tspan + y="1012.8614" + x="141.08984" + sodipodi:role="line" + id="tspan3851">ODR-DabMux</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:italic;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic" + x="21.089844" + y="892.86218" + id="text3984" + sodipodi:linespacing="125%"><tspan + id="tspan3988" + sodipodi:role="line" + x="21.089844" + y="892.86218" /></text> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 271.08984,1002.8614 23.02039,-9e-4" + id="path6370" + inkscape:connector-curvature="0" /> + <g + id="g3925" + transform="translate(-13.910156,70.499278)"> + <rect + y="912.36218" + x="310" + height="39.999939" + width="90" + id="rect3855" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text3857" + y="927.36212" + x="315" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="927.36212" + x="315" + id="tspan3859" + sodipodi:role="line">Modulator</tspan><tspan + y="942.36212" + x="315" + sodipodi:role="line" + id="tspan3861">ODR-DabMod</tspan></text> + </g> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect3881" + width="45" + height="40" + x="401.08984" + y="982.86139" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="406.08984" + y="997.86139" + id="text3883" + sodipodi:linespacing="125%"><tspan + id="tspan3885" + sodipodi:role="line" + x="406.08984" + y="997.86139">USRP</tspan></text> + <g + id="g3143" + transform="translate(-2.2097086,0)"> + <path + sodipodi:nodetypes="ccc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 548.62673,972.8614 0,30 -30,0" + id="path3901" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3903" + d="m 557.06438,975.45954 -8.43765,12.40186" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 540.18908,975.45954 8.43765,12.40186" + id="path3905" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 386.08984,1002.8614 15,0" + id="path3907" + inkscape:connector-curvature="0" /> + <text + sodipodi:linespacing="125%" + id="text3995" + y="877.86139" + x="391.08984" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="877.86139" + x="391.08984" + sodipodi:role="line" + id="tspan3997" /></text> + <rect + y="982.86139" + x="461.08984" + height="40.000011" + width="55" + id="rect3129" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text3131" + y="997.86139" + x="466.08984" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="997.86139" + x="466.08984" + sodipodi:role="line" + id="tspan3133">Analog</tspan><tspan + y="1012.8614" + x="466.08984" + sodipodi:role="line" + id="tspan3141">stuff</tspan></text> + <path + inkscape:connector-curvature="0" + id="path3135" + d="m 446.08984,1002.8614 15,0" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="451.08984" + y="877.86139" + id="text3137" + sodipodi:linespacing="125%"><tspan + id="tspan3139" + sodipodi:role="line" + x="451.08984" + y="877.86139" /></text> + <g + transform="translate(-83.910156,-114.50078)" + id="g3148"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect3150" + width="85" + height="24.999939" + x="310" + y="912.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="315" + y="927.36212" + id="text3152" + sodipodi:linespacing="125%"><tspan + id="tspan3156" + sodipodi:role="line" + x="315" + y="927.36212">dabplus-enc</tspan></text> + </g> + <g + transform="translate(-178.91016,10.499217)" + id="g4242"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect4244" + width="85" + height="24.999939" + x="310" + y="912.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="315" + y="927.36212" + id="text4246" + sodipodi:linespacing="125%"><tspan + id="tspan4248" + sodipodi:role="line" + x="315" + y="927.36212">dabplus-enc</tspan></text> + </g> + <g + id="g3160" + transform="translate(-274.91016,10.499217)"> + <rect + y="882.36218" + x="311" + height="54.999943" + width="84" + id="rect3162" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text3164" + y="927.36212" + x="315" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + y="927.36212" + x="315" + sodipodi:role="line" + id="tspan3166">dabplus-enc</tspan></text> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect4286" + width="65" + height="20.000002" + x="321" + y="882.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="331.29214" + y="895.36212" + id="text4288" + sodipodi:linespacing="125%"><tspan + id="tspan4290" + sodipodi:role="line" + x="331.29214" + y="895.36212">libVLC</tspan></text> + </g> + <g + transform="translate(-178.91016,-19.500783)" + id="g4250"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect4252" + width="85" + height="24.999939" + x="310" + y="912.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="315" + y="927.36212" + id="text4254" + sodipodi:linespacing="125%"><tspan + id="tspan4256" + sodipodi:role="line" + x="315" + y="927.36212">stream dec</tspan></text> + </g> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 171.08984,947.86134 0,15" + id="path4258" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3195" + d="m 76.089848,947.86134 0,15" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none;marker-end:url(#Arrow1Mend)" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 171.08984,822.86135 0,64.99999" + id="path4260" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3197" + d="m 76.089848,822.86135 0,64.99999" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none;marker-end:url(#Arrow1Mend)" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 171.08984,917.86134 0,5" + id="path4262" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 267.08984,822.86134 0,140" + id="path3201" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:14px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="272.08984" + y="862.86133" + id="text3203" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3205" + x="272.08984" + y="862.86133">ZMQ</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4264" + y="862.86133" + x="176.08984" + style="font-style:normal;font-weight:normal;font-size:14px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + y="862.86133" + x="176.08984" + id="tspan4266" + sodipodi:role="line">HTTP</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:14px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="81.089851" + y="862.86133" + id="text3207" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3209" + x="81.089851" + y="862.86133">HTTP</tspan></text> + <g + id="g3211" + transform="translate(-83.910156,-149.50078)"> + <rect + y="912.36218" + x="310" + height="24.999939" + width="85" + id="rect3213" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text3215" + y="927.36212" + x="315" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + y="927.36212" + x="315" + sodipodi:role="line" + id="tspan3217">Studio C</tspan></text> + </g> + <g + id="g4268" + transform="translate(-178.91016,-149.50078)"> + <rect + y="912.36218" + x="310" + height="24.999939" + width="85" + id="rect4270" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4272" + y="927.36212" + x="315" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + y="927.36212" + x="315" + sodipodi:role="line" + id="tspan4274">Studio B</tspan></text> + </g> + <g + transform="translate(-273.91016,-149.50078)" + id="g3219"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect3221" + width="85" + height="24.999939" + x="310" + y="912.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="315" + y="927.36212" + id="text3223" + sodipodi:linespacing="125%"><tspan + id="tspan3225" + sodipodi:role="line" + x="315" + y="927.36212">Studio A</tspan></text> + </g> + <path + inkscape:connector-curvature="0" + id="path3227" + d="m 267.08984,787.86134 0,10" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:nodetypes="cc" /> + <g + id="g4276" + transform="translate(-178.91016,-114.50077)"> + <rect + y="912.36218" + x="310" + height="24.999939" + width="85" + id="rect4278" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4280" + y="927.36212" + x="315" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + y="927.36212" + x="315" + sodipodi:role="line" + id="tspan4282">stream enc</tspan></text> + </g> + <g + transform="translate(-273.91016,-114.50077)" + id="g3229"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" + id="rect3231" + width="85" + height="24.999939" + x="310" + y="912.36218" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + x="315" + y="927.36212" + id="text3233" + sodipodi:linespacing="125%"><tspan + id="tspan3235" + sodipodi:role="line" + x="315" + y="927.36212">stream enc</tspan></text> + </g> + <path + inkscape:connector-curvature="0" + id="path4284" + d="m 171.08984,787.86134 0,10" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 76.089848,787.86134 0,10" + id="path3237" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#5f5f5f;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0" + d="m 15,130 c 520,0 520,0 520,0" + id="path3239" + inkscape:connector-curvature="0" + transform="translate(1.0898437,747.8614)" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:italic;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic" + x="531.08984" + y="897.86139" + id="text4039" + sodipodi:linespacing="125%"><tspan + id="tspan4043" + sodipodi:role="line" + x="531.08984" + y="897.86139">Multiplex operator</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4047" + y="867.86139" + x="531.08984" + style="font-size:12px;font-style:italic;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic" + xml:space="preserve"><tspan + y="867.86139" + x="531.08984" + sodipodi:role="line" + id="tspan4049">Programme originators</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" + id="rect4292" + width="95" + height="65.000008" + x="126.08984" + y="887.86139" /> + <text + sodipodi:linespacing="125%" + id="text4294" + y="232.78664" + x="-950.54004" + style="font-style:italic;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Italic';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve" + transform="matrix(0,-1,1,0,0,0)" + inkscape:transform-center-y="1.5730333"><tspan + y="232.78664" + x="-950.54004" + sodipodi:role="line" + id="tspan4296" + style="font-size:11.25px">dab-script</tspan></text> + </g> +</svg> diff --git a/interfaces.tex b/interfaces.tex index 1c7512e..41bf72d 100644 --- a/interfaces.tex +++ b/interfaces.tex @@ -122,6 +122,7 @@ computers, but it is not necessary. It is also possible, and even encouraged to use this interconnection locally on the same machine. \subsubsection{Between Encoder and Multiplexer} +\label{sec:between_encoder_and_multiplexer} Between FDK-AAC-DABplus and ODR-DabMux, the ZeroMQ connection transmits AAC superframes, with additional metadata that contains the audio level indication diff --git a/scenarios.tex b/scenarios.tex index d452f99..46fba1a 100644 --- a/scenarios.tex +++ b/scenarios.tex @@ -221,8 +221,29 @@ hackrf_transfer -t /tmp/ofdm.fifo -f 216928000 -x 47 \ \subsection{Audio Sources} Preparing a DAB multiplex with different programmes requires that we are able to -read and encode several audio sources. This audio data can reach the multiplexer -in different ways. We will go over different possibilities in this part. +read and encode several audio sources. We have seen in +section~\ref{sec:between_encoder_and_multiplexer} how the encoders can be +interfaced to the modulator. In this section we'll go through the different ways +to carry the audio data to the encoder. + +\subsubsection{Local Audio Card} +It is possible to use an audio card connected to the computer as source. For +very simple scenarios, the ALSA input for FDK-AAC-DABplus is easiest to set up. +This however limits the usage of a single encoder per sound-card, and will not +scale well if more than one programme has to be encoded on the machine. It is +however ideal for dedicated encoding machines that can contribute the encoded +audio over an IP network. + +An alternative to using ALSA is JACK\footnote{The JACK Audio Connection Kit is a + virtual audio patch, \url{http://www.jack-audio.org}} +that can be used with a multi-channel sound card. JACK will expose every audio +input channel, and several encoders can be launched that also connect to JACK. +The input channels can be freely connected to the encoders thanks to the virtual +JACK patch panel. + +\sidenote{It might be possible to use the libVLC input too, to be defined.} +FDK-AAC-DABplus supports JACK and ALSA input, but Toolame-dab supports only the +JACK input. \subsubsection{Using Existing Web-Streams} One common scenario is to transmit radio stations that already are available as @@ -240,18 +261,37 @@ is most often $48000\Hz$ or sometimes $32000\Hz$. A sample-rate conversion is necessary in the stream decoder. There are many different stream decoders, and gstreamer, mpg123 and mplayer have -been tested. We have achieved good results with mplayer, and the dab-scripts +been tested. By far the easiest way is to use the libVLC binding that can be +compiled for Toolame-dab and FDK-AAC-DABplus. This library has +the same features as the VLC audio player, but the audio data is directly passed +to the encoding routines. This allows the encoder to receive all network +sources VLC supports, not only HTTP web-streams but also less common setups +e.g.\ encoded audio inside multicast UDP MPEG-TS. +This is illustrated in ``Studio A'' in figure~\ref{fig:txchain-with-encoders}. + +We have also achieved good results with mplayer, and the dab-scripts repository\footnote{\url{http://github.com/Opendigitalradio/dab-scripts}} -contain the script \texttt{encode-jack.sh} that uses mplayer, and illustrates -how it is possible to encode a web-stream to \dabplus. JACK\footnote{The JACK - Audio Connection Kit is a virtual audio patch, -\url{http://www.jack-audio.org}} is used to interconnect the stream decoder to -the \dabplus encoder. +contains the script \texttt{encode-jack.sh} that uses mplayer, and illustrates +how it is possible to encode a web-stream to \dabplus. JACK is used to +interconnect the stream decoder to the \dabplus encoder. +This is illustrated in ``Studio B''. -This script is designed for production use, and also contains automatic restart -logic in case of a failure. +\begin{figure}[h] + \includegraphics[width=\textwidth]{figures/txchain-with-encoders.pdf} + \caption{Three common ways to encode a remote audio sources.} + \label{fig:txchain-with-encoders} +\end{figure} + + +The scripts are designed for production use, and also contain automatic restart +logic in case of a failure. They send an email and write a message into the +system log. \subsubsection{Encoders at Programme Originator Studios} -\subsubsection{Multi-capture Audio Card} +In order to avoid the unavoidable encoder cascading when using mp3 web-streams, +the DAB or \dabplus encoder has to be moved to the programme originator's +premises, and should directly encode the audio signal coming from the studios. +This is illustrated in ``Studio C'' in figure~\ref{fig:txchain-with-encoders}. + \subsection{Single-Frequency Networks} |