Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 19 additions & 20 deletions docs/design/arch_overview.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en">
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AudioReach Architecture Overview &mdash; AudioReach Documentation 1.0 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../_static/audioreach.css" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../_static/audioreach.css?v=cd7bb9cf" />


<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->

<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=f2a433a1"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
Expand Down Expand Up @@ -59,6 +56,7 @@
<li class="toctree-l2"><a class="reference internal" href="args_design.html">AudioReach Graph Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="arc_design.html">AudioReach Creator Design</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">AudioReach APIs</a></li>
Expand Down Expand Up @@ -92,9 +90,9 @@
<div itemprop="articleBody">

<section id="audioreach-architecture-overview">
<span id="arch-overview"></span><h1>AudioReach Architecture Overview<a class="headerlink" href="#audioreach-architecture-overview" title="Permalink to this heading"></a></h1>
<span id="arch-overview"></span><h1>AudioReach Architecture Overview<a class="headerlink" href="#audioreach-architecture-overview" title="Link to this heading"></a></h1>
<section id="guiding-principles">
<h2>Guiding Principles<a class="headerlink" href="#guiding-principles" title="Permalink to this heading"></a></h2>
<h2>Guiding Principles<a class="headerlink" href="#guiding-principles" title="Link to this heading"></a></h2>
<p>Before drilling down into architecture overview, it is important to know the guiding principles which help shape AudioReach design and implementation</p>
<ul class="simple">
<li><p>Unified software and software interface leveraged across wide range of hardware and software platforms</p></li>
Expand All @@ -105,16 +103,17 @@ <h2>Guiding Principles<a class="headerlink" href="#guiding-principles" title="Pe
</ul>
</section>
<section id="architecture-walkthrough">
<h2>Architecture Walkthrough<a class="headerlink" href="#architecture-walkthrough" title="Permalink to this heading"></a></h2>
<h2>Architecture Walkthrough<a class="headerlink" href="#architecture-walkthrough" title="Link to this heading"></a></h2>
<p>AudioReach is comprised of platform independent and platform adaptation software spanning across host PC and embedded device. AudioReach Creator(ARC), also known as Qualcomm Audio Calibration Tool (QACT), is PC-based software providing GUI to audio system designer for composing, configuring, and storing audio graphs into audio calibration database(ACDB) for intended use cases. In addition to use cases design, tuning engineer can tune the audio processing blocks through ARC and store the calibration into the same ACDB on the embedded device.</p>
<p>On the embedded device, AudioReach offers audio platform software and AudioReach Engine (ARE). ARE comprises Signal Processing Framework (SPF) along with reference algorithms as depicted in the diagram below. Depending on the SoC design, audio platform software usually resides on application subsystem running high-level operating system such as Linux and ARE resides in audio DSP subsystem running RTOS. Audio platform software is consisted of a set of libraries referred as AudioReach graph services(ARGS) and platform adaptation layer.</p>
<p>On many OS platforms, there are already application ecosystem built up based on well-established APIs and audio/multimedia frameworks. In order to meet the ecosystem need, platform adaptation layer is made available to translates platform specific APIs and constructs then calls into graph service.</p>
<p>Graph service provides the service to establish/tear down/operate/exchange audio samples &amp; calibration data with the audio graphs running on ARE. As previously described, ACDB contains the audio graph definition and calibration data. Graph service, upon receiving graph open request from the client, retrieves audio graph and calibration data with use case handle and calibration handle from ACDB and downloads the graph definition and corresponding calibration data to ARE via generic packet router(GPR) protocol over physical or soft data link. On the receiving end, ARE forms audio graph with processing modules according to the graph definition and processes audio data piped from source endpoint to sink endpoint of audio graph.</p>
<p>Note that graph service and ARE are designed to be cross-platform software, platform/OS abstraction layer for different OS platforms would have to be developed in order to provide execution environment for graph service and ARE to run on.</p>
<figure class="fig-center align-default" id="id1">
<a class="reference internal image-reference" href="../_images/audioreach-architecture.png"><img alt="../_images/audioreach-architecture.png" src="../_images/audioreach-architecture.png" style="width: 1285.3500000000001px; height: 861.85px;" /></a>
<a class="reference internal image-reference" href="../_images/audioreach-architecture.png"><img alt="../_images/audioreach-architecture.png" src="../_images/audioreach-architecture.png" style="width: 1285.3500000000001px; height: 861.85px;" />
</a>
<figcaption>
<p><span class="caption-text">AudioReach High-Level Software Component View</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
<p><span class="caption-text">AudioReach High-Level Software Component View</span><a class="headerlink" href="#id1" title="Link to this image"></a></p>
</figcaption>
</figure>
</section>
Expand Down
55 changes: 27 additions & 28 deletions docs/design/args_design.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@


<!DOCTYPE html>
<html class="writer-html5" lang="en">
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AudioReach Graph Services &mdash; AudioReach Documentation 1.0 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../_static/audioreach.css" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../_static/audioreach.css?v=cd7bb9cf" />


<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->

<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=f2a433a1"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
Expand Down Expand Up @@ -67,6 +64,7 @@
</li>
<li class="toctree-l2"><a class="reference internal" href="gpr_design.html">Generic Packet Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="lx_design.html">Linux Adaptation Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="arc_design.html">AudioReach Creator Design</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">AudioReach APIs</a></li>
Expand Down Expand Up @@ -100,9 +98,9 @@
<div itemprop="articleBody">

<section id="audioreach-graph-services">
<span id="args-design"></span><h1>AudioReach Graph Services<a class="headerlink" href="#audioreach-graph-services" title="Permalink to this heading"></a></h1>
<span id="args-design"></span><h1>AudioReach Graph Services<a class="headerlink" href="#audioreach-graph-services" title="Link to this heading"></a></h1>
<section id="introduction">
<span id="args-introduction"></span><h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h2>
<span id="args-introduction"></span><h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading"></a></h2>
<p>AudioReach graph services (ARGS) are a collection of cross-platform software libraries which together provide following services</p>
<p>Use Case Execution:</p>
<ul class="simple">
Expand All @@ -122,23 +120,24 @@
</ul>
</section>
<section id="architecture">
<h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this heading"></a></h2>
<h2>Architecture<a class="headerlink" href="#architecture" title="Link to this heading"></a></h2>
<section id="overview">
<h3>Overview<a class="headerlink" href="#overview" title="Permalink to this heading"></a></h3>
<h3>Overview<a class="headerlink" href="#overview" title="Link to this heading"></a></h3>
<p>AudioReach graph services, as depicted below, is consisted of four cross-platform software components: Graph Service Library(GSL), ACDB Manager Library(AML), Generic Packet Router(GPR), and Audio Tuning Service (ATS). These components invoke utilities and obtain platform specific information provided by OS abstraction layer (OSAL) and platform wrapper in order to operate on intended platform.</p>
<p>GSL serves as entry point for client to access functionalities provided by graph service and ARE. Through GSL APIs, client can initiate graph setup, exchange audio data, and operate on the audio graph running on ARE. GSL queries AML with GKV, CKV, and TKV which are passed by the client to retrieve graph definition, calibration, and tagged payload. Then, GSL packetizes retrieved data from AML and invokes GPR to send commands and receive response from ARE. If module running in DSP is capable of generating event such as key word detection, GSL would relay the detection event back to client.</p>
<p>Apart from providing service to client, ARGS also plays a critical role in audio system development workflow. Audio tuning service works as bridge between ARC on host PC and rest of audioreach software running on target. ATS dispatches commands from ARC to various service handlers which interfaces with rest of AudioReach software components to achieve development workflow use cases described in <a class="reference internal" href="#args-introduction"><span class="std std-ref">Introduction</span></a>.</p>
<figure class="fig-center align-default" id="id1">
<a class="reference internal image-reference" href="../_images/args_arch.png"><img alt="../_images/args_arch.png" src="../_images/args_arch.png" style="width: 987.0px; height: 748.0px;" /></a>
<a class="reference internal image-reference" href="../_images/args_arch.png"><img alt="../_images/args_arch.png" src="../_images/args_arch.png" style="width: 987.0px; height: 748.0px;" />
</a>
<figcaption>
<p><span class="caption-text">AudioReach Graph Services Block Diagram</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
<p><span class="caption-text">AudioReach Graph Services Block Diagram</span><a class="headerlink" href="#id1" title="Link to this image"></a></p>
</figcaption>
</figure>
</section>
<section id="graph-service-library">
<h3>Graph Service Library<a class="headerlink" href="#graph-service-library" title="Permalink to this heading"></a></h3>
<h3>Graph Service Library<a class="headerlink" href="#graph-service-library" title="Link to this heading"></a></h3>
<section id="functionalities">
<h4>Functionalities<a class="headerlink" href="#functionalities" title="Permalink to this heading"></a></h4>
<h4>Functionalities<a class="headerlink" href="#functionalities" title="Link to this heading"></a></h4>
<ol class="arabic simple">
<li><p>Loading and Initialization of Sub-Graphs and Graphs via Graph Key Vector.</p></li>
<li><p>Graph setup and Dynamic handling of the sub-graphs within the graph</p></li>
Expand All @@ -148,7 +147,7 @@ <h4>Functionalities<a class="headerlink" href="#functionalities" title="Permalin
</ol>
</section>
<section id="compositions">
<h4>Compositions<a class="headerlink" href="#compositions" title="Permalink to this heading"></a></h4>
<h4>Compositions<a class="headerlink" href="#compositions" title="Link to this heading"></a></h4>
<ul class="simple">
<li><p>API Layer: GSL API layer defines and exposes APIs to GSL Clients. It provides API’s to query graph handle from use-case key vector information and also graph management etc.
Full List of APIs are listed in <a class="reference internal" href="../api/args_gsl.html#args-gsl-api"><span class="std std-ref">Graph Service Layer</span></a>.</p></li>
Expand Down Expand Up @@ -179,17 +178,17 @@ <h4>Compositions<a class="headerlink" href="#compositions" title="Permalink to t
</section>
</section>
<section id="acdb-management-library">
<h3>ACDB Management Library<a class="headerlink" href="#acdb-management-library" title="Permalink to this heading"></a></h3>
<h3>ACDB Management Library<a class="headerlink" href="#acdb-management-library" title="Link to this heading"></a></h3>
<p>AML provides both get/set APIs to retrieve and adjust data in the ACDB DATA files. It provides data abstractions and organization for how calibration data is to be consumed by its client, GSL.
On device, there are ACDB file and ACDB delta file. ACDB file stores baseline calibration data needed by GSL and ARE in compressed binary form. Delta file contains data set by GSL and ARC during run time.
These files are managed by corresponding file managers as part of AML.</p>
</section>
<section id="generic-package-router">
<h3>Generic Package Router<a class="headerlink" href="#generic-package-router" title="Permalink to this heading"></a></h3>
<h3>Generic Package Router<a class="headerlink" href="#generic-package-router" title="Link to this heading"></a></h3>
<p>Refer to <a class="reference internal" href="gpr_design.html#gpr-overview"><span class="std std-ref">Functional Overview</span></a> for high level overview of GPR.</p>
</section>
<section id="audio-tuning-service">
<h3>Audio Tuning Service<a class="headerlink" href="#audio-tuning-service" title="Permalink to this heading"></a></h3>
<h3>Audio Tuning Service<a class="headerlink" href="#audio-tuning-service" title="Link to this heading"></a></h3>
<p>When ARC is connected to device, ARC is considered in connected mode. Communication is established with ATS via supported transport layer such as TCP/IP. Upon receiving ARC commands, ATS routes the commands to responsible service modules:</p>
<ul class="simple">
<li><p>Online Calibration Service (OCS): The Online Calibration service allows ARC to operate portions of AML</p></li>
Expand All @@ -200,7 +199,7 @@ <h3>Audio Tuning Service<a class="headerlink" href="#audio-tuning-service" title
<p>ATS, beside depending on OSAL for OS related functionalities, relies on platform wrappers to provide platform specific utilities such as TCP/IP connection, playback/recording APIs.</p>
</section>
<section id="operating-system-abstraction-layer">
<span id="args-osal"></span><h3>Operating System Abstraction Layer<a class="headerlink" href="#operating-system-abstraction-layer" title="Permalink to this heading"></a></h3>
<span id="args-osal"></span><h3>Operating System Abstraction Layer<a class="headerlink" href="#operating-system-abstraction-layer" title="Link to this heading"></a></h3>
<p>In order to run AudioReach graph services on desired OS platform, OSAL implementation shall provide the following functionalities:</p>
<ul class="simple">
<li><p>Signal, Sleep, Thread, Mutex</p></li>
Expand Down
Loading
Loading