aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Doxyfile2
-rw-r--r--docs/.nojekyll0
-rw-r--r--docs/reference/a00002_source.html105
-rw-r--r--docs/reference/a00005_source.html98
-rw-r--r--docs/reference/a00008_source.html111
-rw-r--r--docs/reference/a00011_source.html88
-rw-r--r--docs/reference/a00014_source.html121
-rw-r--r--docs/reference/a00017_source.html87
-rw-r--r--docs/reference/a00020_source.html82
-rw-r--r--docs/reference/a00023_source.html87
-rw-r--r--docs/reference/a00026_source.html86
-rw-r--r--docs/reference/a00029_source.html89
-rw-r--r--docs/reference/a00032.html572
-rw-r--r--docs/reference/a00033.html160
-rw-r--r--docs/reference/a00036.html843
-rw-r--r--docs/reference/a00036.pngbin0 -> 629 bytes
-rw-r--r--docs/reference/a00037.html120
-rw-r--r--docs/reference/a00040.html388
-rw-r--r--docs/reference/a00040.pngbin0 -> 892 bytes
-rw-r--r--docs/reference/a00041.html140
-rw-r--r--docs/reference/a00044.html842
-rw-r--r--docs/reference/a00044.pngbin0 -> 673 bytes
-rw-r--r--docs/reference/a00045.html89
-rw-r--r--docs/reference/a00048.html240
-rw-r--r--docs/reference/a00049.html88
-rw-r--r--docs/reference/a00052.html133
-rw-r--r--docs/reference/a00053.html88
-rw-r--r--docs/reference/a00056.html146
-rw-r--r--docs/reference/a00057.html93
-rw-r--r--docs/reference/a00060.html233
-rw-r--r--docs/reference/a00061.html90
-rw-r--r--docs/reference/a00064.html218
-rw-r--r--docs/reference/annotated.html18
-rw-r--r--docs/reference/classes.html14
-rw-r--r--docs/reference/files.html20
-rw-r--r--docs/reference/functions.html112
-rw-r--r--docs/reference/functions_func.html100
-rw-r--r--docs/reference/functions_vars.html12
-rw-r--r--docs/reference/hierarchy.html16
-rw-r--r--docs/reference/namespacemembers.html48
-rw-r--r--docs/reference/namespacemembers_enum.html14
-rw-r--r--docs/reference/namespacemembers_eval.html28
-rw-r--r--docs/reference/namespacemembers_func.html6
-rw-r--r--docs/reference/namespaces.html2
-rw-r--r--docs/reference/search/all_0.js24
-rw-r--r--docs/reference/search/all_1.js16
-rw-r--r--docs/reference/search/all_10.js6
-rw-r--r--docs/reference/search/all_2.js2
-rw-r--r--docs/reference/search/all_3.js2
-rw-r--r--docs/reference/search/all_4.js32
-rw-r--r--docs/reference/search/all_5.js8
-rw-r--r--docs/reference/search/all_6.js2
-rw-r--r--docs/reference/search/all_7.js12
-rw-r--r--docs/reference/search/all_8.js10
-rw-r--r--docs/reference/search/all_9.js22
-rw-r--r--docs/reference/search/all_a.js2
-rw-r--r--docs/reference/search/all_b.js4
-rw-r--r--docs/reference/search/all_c.js46
-rw-r--r--docs/reference/search/all_d.js4
-rw-r--r--docs/reference/search/all_e.js8
-rw-r--r--docs/reference/search/all_f.js8
-rw-r--r--docs/reference/search/classes_0.js8
-rw-r--r--docs/reference/search/classes_1.js2
-rw-r--r--docs/reference/search/classes_2.js2
-rw-r--r--docs/reference/search/classes_3.js2
-rw-r--r--docs/reference/search/classes_4.js2
-rw-r--r--docs/reference/search/enums_0.js2
-rw-r--r--docs/reference/search/enums_1.js4
-rw-r--r--docs/reference/search/enums_2.js2
-rw-r--r--docs/reference/search/enums_3.js4
-rw-r--r--docs/reference/search/enums_4.js2
-rw-r--r--docs/reference/search/enumvalues_0.js14
-rw-r--r--docs/reference/search/enumvalues_1.js2
-rw-r--r--docs/reference/search/enumvalues_2.js2
-rw-r--r--docs/reference/search/enumvalues_3.js4
-rw-r--r--docs/reference/search/enumvalues_4.js8
-rw-r--r--docs/reference/search/enumvalues_5.js8
-rw-r--r--docs/reference/search/enumvalues_6.js2
-rw-r--r--docs/reference/search/enumvalues_7.js8
-rw-r--r--docs/reference/search/enumvalues_8.js4
-rw-r--r--docs/reference/search/enumvalues_9.js6
-rw-r--r--docs/reference/search/functions_0.js10
-rw-r--r--docs/reference/search/functions_1.js28
-rw-r--r--docs/reference/search/functions_2.js6
-rw-r--r--docs/reference/search/functions_3.js18
-rw-r--r--docs/reference/search/functions_4.js2
-rw-r--r--docs/reference/search/functions_5.js32
-rw-r--r--docs/reference/search/functions_6.js2
-rw-r--r--docs/reference/search/functions_7.js2
-rw-r--r--docs/reference/search/functions_8.js6
-rw-r--r--docs/reference/search/namespaces_0.js2
-rw-r--r--docs/reference/search/variables_0.js4
-rw-r--r--docs/reference/search/variables_1.js2
-rw-r--r--docs/reference/search/variables_2.js2
-rw-r--r--docs/reference/search/variables_3.js2
-rw-r--r--docs/reference/search/variables_4.js2
96 files changed, 5841 insertions, 404 deletions
diff --git a/Doxyfile b/Doxyfile
index 5a271666..94fe610e 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -178,7 +178,7 @@ STRIP_FROM_INC_PATH =
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
-SHORT_NAMES = NO
+SHORT_NAMES = YES
# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
diff --git a/docs/.nojekyll b/docs/.nojekyll
deleted file mode 100644
index e69de29b..00000000
--- a/docs/.nojekyll
+++ /dev/null
diff --git a/docs/reference/a00002_source.html b/docs/reference/a00002_source.html
new file mode 100644
index 00000000..c9ff42a2
--- /dev/null
+++ b/docs/reference/a00002_source.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/AudioStream.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AudioStream.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2016 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_STREAM_H_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_STREAM_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;ctime&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;oboe/ResultWithValue.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamBuilder.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamBase.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="a00032.html"> 29</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;constexpr int64_t kDefaultTimeoutNanos = (2000 * kNanosPerMillisecond);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="a00036.html"> 36</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00036.html">AudioStream</a> : <span class="keyword">public</span> <a class="code" href="a00040.html">AudioStreamBase</a> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="a00036.html">AudioStream</a>() {}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">explicit</span> <a class="code" href="a00036.html">AudioStream</a>(<span class="keyword">const</span> <a class="code" href="a00044.html">AudioStreamBuilder</a> &amp;builder);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="a00036.html">AudioStream</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">virtual</span> Result <a class="code" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">open</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">virtual</span> Result <a class="code" href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">close</a>() = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * These are synchronous and will block until the operation is complete.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">virtual</span> Result start(int64_t timeoutNanoseconds = kDefaultTimeoutNanos);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">virtual</span> Result pause(int64_t timeoutNanoseconds = kDefaultTimeoutNanos);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">virtual</span> Result flush(int64_t timeoutNanoseconds = kDefaultTimeoutNanos);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">virtual</span> Result stop(int64_t timeoutNanoseconds = kDefaultTimeoutNanos);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">/* Asynchronous requests.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * Use waitForStateChange() if you need to wait for completion.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">virtual</span> Result requestStart() = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">virtual</span> Result requestPause() = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">virtual</span> Result requestFlush() = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">virtual</span> Result requestStop() = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">virtual</span> StreamState <a class="code" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">getState</a>() = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">virtual</span> Result <a class="code" href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">waitForStateChange</a>(StreamState inputState,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; StreamState *nextState,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; int64_t timeoutNanoseconds) = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb"> 122</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a> <a class="code" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">setBufferSizeInFrames</a>(int32_t requestedFrames) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> Result::ErrorUnimplemented;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261"> 138</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a> <a class="code" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">getXRunCount</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a>(Result::ErrorUnimplemented);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">isXRunCountSupported</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">virtual</span> int32_t <a class="code" href="a00036.html#ac160acb656515814fa6fdd157c131a0a">getFramesPerBurst</a>() = 0;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> isPlaying();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; int32_t getBytesPerFrame()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mChannelCount * getBytesPerSample(); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; int32_t getBytesPerSample() <span class="keyword">const</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341"> 164</a></span>&#160; <span class="keyword">virtual</span> int64_t <a class="code" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">getFramesWritten</a>() { <span class="keywordflow">return</span> mFramesWritten; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">virtual</span> int64_t getFramesRead() { <span class="keywordflow">return</span> mFramesRead; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="a00036.html#ae023cb001f3261d064f423101798d6be"> 191</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="a00060.html">ResultWithValue&lt;double&gt;</a> <a class="code" href="a00036.html#ae023cb001f3261d064f423101798d6be">calculateLatencyMillis</a>() {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;double&gt;</a>(Result::ErrorUnimplemented);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">virtual</span> Result getTimestamp(clockid_t clockId,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; int64_t *framePosition,</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; int64_t *timeNanoseconds) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> Result::ErrorUnimplemented;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// ============== I/O ===========================</span></div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670"> 213</a></span>&#160;<span class="comment"></span> <span class="keyword">virtual</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a> <a class="code" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">write</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *buffer,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; int32_t numFrames,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; int64_t timeoutNanoseconds) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a>(Result::ErrorUnimplemented);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">virtual</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a> read(<span class="keywordtype">void</span> *buffer,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; int32_t numFrames,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; int64_t timeoutNanoseconds) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;int32_t&gt;</a>(Result::ErrorUnimplemented);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">virtual</span> <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> <a class="code" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">getAudioApi</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147"> 234</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">usesAAudio</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">getAudioApi</a>() == <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">AudioApi::AAudio</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f"> 246</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> *<a class="code" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">getUnderlyingStream</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">virtual</span> int64_t incrementFramesWritten(int32_t frames) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> mFramesWritten += frames;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">virtual</span> int64_t incrementFramesRead(int32_t frames) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> mFramesRead += frames;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">virtual</span> Result <a class="code" href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">waitForStateTransition</a>(StreamState startingState,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; StreamState endingState,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; int64_t timeoutNanoseconds);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="a00036.html#abda7ae8e6832030572785de3964ed848"> 276</a></span>&#160; <span class="keyword">virtual</span> DataCallbackResult <a class="code" href="a00036.html#abda7ae8e6832030572785de3964ed848">onDefaultCallback</a>(<span class="keywordtype">void</span> *audioData, <span class="keywordtype">int</span> numFrames) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> DataCallbackResult::Stop;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; DataCallbackResult fireCallback(<span class="keywordtype">void</span> *audioData, <span class="keywordtype">int</span> numFrames);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> setNativeFormat(AudioFormat format) {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; mNativeFormat = format;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// TODO: make private</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// These do not change after open.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; AudioFormat mNativeFormat = AudioFormat::Invalid;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// TODO these should be atomic like in AAudio</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; int64_t mFramesWritten = 0;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; int64_t mFramesRead = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// TODO these should be atomic like in AAudio</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">int</span> mPreviousScheduler = -1;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;};</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* OBOE_STREAM_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="a00036_html_a47bb5798275f14d76444283a6b6f35eb"><div class="ttname"><a href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">oboe::AudioStream::getState</a></div><div class="ttdeci">virtual StreamState getState()=0</div></div>
+<div class="ttc" id="a00044_html"><div class="ttname"><a href="a00044.html">oboe::AudioStreamBuilder</a></div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:28</div></div>
+<div class="ttc" id="a00036_html_ad33a20f0d6792e322b9d8a2bcf14fcf8"><div class="ttname"><a href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">oboe::AudioStream::close</a></div><div class="ttdeci">virtual Result close()=0</div></div>
+<div class="ttc" id="a00036_html_a8adbacd6a55a94a532916ab037fba1d6"><div class="ttname"><a href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">oboe::AudioStream::waitForStateTransition</a></div><div class="ttdeci">virtual Result waitForStateTransition(StreamState startingState, StreamState endingState, int64_t timeoutNanoseconds)</div></div>
+<div class="ttc" id="a00036_html_ac160acb656515814fa6fdd157c131a0a"><div class="ttname"><a href="a00036.html#ac160acb656515814fa6fdd157c131a0a">oboe::AudioStream::getFramesPerBurst</a></div><div class="ttdeci">virtual int32_t getFramesPerBurst()=0</div></div>
+<div class="ttc" id="a00036_html_a5458d7130415eb4defe3dbc11d479e2f"><div class="ttname"><a href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">oboe::AudioStream::getUnderlyingStream</a></div><div class="ttdeci">virtual void * getUnderlyingStream() const</div><div class="ttdef"><b>Definition:</b> AudioStream.h:246</div></div>
+<div class="ttc" id="a00036_html_a43d8a098440cde28f4ee8bedd6d107c4"><div class="ttname"><a href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">oboe::AudioStream::isXRunCountSupported</a></div><div class="ttdeci">virtual bool isXRunCountSupported() const =0</div></div>
+<div class="ttc" id="a00036_html_ab3f6bf8abed87f3804ac4df3472c3670"><div class="ttname"><a href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">oboe::AudioStream::write</a></div><div class="ttdeci">virtual ResultWithValue&lt; int32_t &gt; write(const void *buffer, int32_t numFrames, int64_t timeoutNanoseconds)</div><div class="ttdef"><b>Definition:</b> AudioStream.h:213</div></div>
+<div class="ttc" id="a00036_html_ad1a1d3bbf3b348ed92b7ed18ce9cc261"><div class="ttname"><a href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">oboe::AudioStream::getXRunCount</a></div><div class="ttdeci">virtual ResultWithValue&lt; int32_t &gt; getXRunCount() const</div><div class="ttdef"><b>Definition:</b> AudioStream.h:138</div></div>
+<div class="ttc" id="a00036_html_a2b7a3cee7444114843dbdd1fc705f6bb"><div class="ttname"><a href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">oboe::AudioStream::getAudioApi</a></div><div class="ttdeci">virtual AudioApi getAudioApi() const =0</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe::AudioApi</a></div><div class="ttdeci">AudioApi</div><div class="ttdef"><b>Definition:</b> Definitions.h:141</div></div>
+<div class="ttc" id="a00036_html_abda7ae8e6832030572785de3964ed848"><div class="ttname"><a href="a00036.html#abda7ae8e6832030572785de3964ed848">oboe::AudioStream::onDefaultCallback</a></div><div class="ttdeci">virtual DataCallbackResult onDefaultCallback(void *audioData, int numFrames)</div><div class="ttdef"><b>Definition:</b> AudioStream.h:276</div></div>
+<div class="ttc" id="a00036_html_ac93b18e18487e809151f63ec3c6228bb"><div class="ttname"><a href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">oboe::AudioStream::setBufferSizeInFrames</a></div><div class="ttdeci">virtual ResultWithValue&lt; int32_t &gt; setBufferSizeInFrames(int32_t requestedFrames)</div><div class="ttdef"><b>Definition:</b> AudioStream.h:122</div></div>
+<div class="ttc" id="a00036_html_ae023cb001f3261d064f423101798d6be"><div class="ttname"><a href="a00036.html#ae023cb001f3261d064f423101798d6be">oboe::AudioStream::calculateLatencyMillis</a></div><div class="ttdeci">virtual ResultWithValue&lt; double &gt; calculateLatencyMillis()</div><div class="ttdef"><b>Definition:</b> AudioStream.h:191</div></div>
+<div class="ttc" id="a00036_html_a15cdaaaa4c1e8da322d6da33334c8147"><div class="ttname"><a href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">oboe::AudioStream::usesAAudio</a></div><div class="ttdeci">bool usesAAudio() const</div><div class="ttdef"><b>Definition:</b> AudioStream.h:234</div></div>
+<div class="ttc" id="a00040_html"><div class="ttname"><a href="a00040.html">oboe::AudioStreamBase</a></div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:34</div></div>
+<div class="ttc" id="a00060_html"><div class="ttname"><a href="a00060.html">oboe::ResultWithValue</a></div><div class="ttdef"><b>Definition:</b> ResultWithValue.h:27</div></div>
+<div class="ttc" id="a00036_html_a0c865a5501f369d959c39d8ab8b46a07"><div class="ttname"><a href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">oboe::AudioStream::waitForStateChange</a></div><div class="ttdeci">virtual Result waitForStateChange(StreamState inputState, StreamState *nextState, int64_t timeoutNanoseconds)=0</div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">oboe::AudioApi::AAudio</a></div></div>
+<div class="ttc" id="a00036_html_a686c6ce8a29051c858fd1de386805dc6"><div class="ttname"><a href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">oboe::AudioStream::open</a></div><div class="ttdeci">virtual Result open()</div></div>
+<div class="ttc" id="a00036_html_ab43dd4074e1de57bac1c3fd111430341"><div class="ttname"><a href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">oboe::AudioStream::getFramesWritten</a></div><div class="ttdeci">virtual int64_t getFramesWritten()</div><div class="ttdef"><b>Definition:</b> AudioStream.h:164</div></div>
+<div class="ttc" id="a00036_html"><div class="ttname"><a href="a00036.html">oboe::AudioStream</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:36</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00005_source.html b/docs/reference/a00005_source.html
new file mode 100644
index 00000000..f2f15941
--- /dev/null
+++ b/docs/reference/a00005_source.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/AudioStreamBase.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AudioStreamBase.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2015 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_STREAM_BASE_H_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_STREAM_BASE_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamCallback.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="a00040.html"> 34</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00040.html">AudioStreamBase</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="a00040.html">AudioStreamBase</a>() {}</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="a00040.html">AudioStreamBase</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// This class only contains primitives so we can use default constructor and copy methods.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="a00040.html">AudioStreamBase</a>(<span class="keyword">const</span> <a class="code" href="a00040.html">AudioStreamBase</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="a00040.html">AudioStreamBase</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="a00040.html">AudioStreamBase</a>&amp;) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8"> 49</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mChannelCount; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1"> 54</a></span>&#160; Direction <a class="code" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mDirection; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087"> 59</a></span>&#160; int32_t <a class="code" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mSampleRate; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b"> 64</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mFramesPerCallback; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86"> 70</a></span>&#160; AudioFormat <a class="code" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mFormat; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="a00040.html#af5217ab05bfde0d7637024b599302d0b"> 78</a></span>&#160; <span class="keyword">virtual</span> int32_t <a class="code" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a>() { <span class="keywordflow">return</span> mBufferSizeInFrames; };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc"> 83</a></span>&#160; <span class="keyword">virtual</span> int32_t <a class="code" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mBufferCapacityInFrames; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> getSharingMode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mSharingMode; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; PerformanceMode getPerformanceMode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mPerformanceMode; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; int32_t getDeviceId()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mDeviceId; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; AudioStreamCallback* getCallback()<span class="keyword"> const </span>{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> mStreamCallback;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> getUsage()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mUsage; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> getContentType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mContentType; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> getInputPreset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mInputPreset; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> getSessionId()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mSessionId; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; AudioStreamCallback *mStreamCallback = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; int32_t mFramesPerCallback = kUnspecified;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; int32_t mChannelCount = kUnspecified;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; int32_t mSampleRate = kUnspecified;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; int32_t mDeviceId = kUnspecified;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; int32_t mBufferCapacityInFrames = kUnspecified;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; int32_t mBufferSizeInFrames = kUnspecified;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; int32_t mFramesPerBurst = kUnspecified;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> mSharingMode = <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; AudioFormat mFormat = AudioFormat::Unspecified;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Direction mDirection = Direction::Output;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; PerformanceMode mPerformanceMode = PerformanceMode::None;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Added in API 28</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> mUsage = <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> mContentType = ContentType::Music;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> mInputPreset = InputPreset::VoiceRecognition;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> mSessionId = SessionId::None;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;};</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* OBOE_STREAM_BASE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="a00040_html_af5217ab05bfde0d7637024b599302d0b"><div class="ttname"><a href="a00040.html#af5217ab05bfde0d7637024b599302d0b">oboe::AudioStreamBase::getBufferSizeInFrames</a></div><div class="ttdeci">virtual int32_t getBufferSizeInFrames()</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:78</div></div>
+<div class="ttc" id="a00032_html_a5752250c10e96179e3618d7f72937eaf"><div class="ttname"><a href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe::SessionId</a></div><div class="ttdeci">SessionId</div><div class="ttdef"><b>Definition:</b> Definitions.h:314</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">oboe::Usage::Media</a></div></div>
+<div class="ttc" id="a00040_html_a6f86f2233a04c5a0b056f0c1c261f1b1"><div class="ttname"><a href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">oboe::AudioStreamBase::getDirection</a></div><div class="ttdeci">Direction getDirection() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:54</div></div>
+<div class="ttc" id="a00040_html_aa0b0a068097efaf967fb235c55383dd8"><div class="ttname"><a href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">oboe::AudioStreamBase::getChannelCount</a></div><div class="ttdeci">int getChannelCount() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:49</div></div>
+<div class="ttc" id="a00040_html_ab1e640461d7bf9d596decb913da7ac86"><div class="ttname"><a href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">oboe::AudioStreamBase::getFormat</a></div><div class="ttdeci">AudioFormat getFormat() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:70</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00040_html_ab1531253e64aaebe9e9eddbafb9098fc"><div class="ttname"><a href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">oboe::AudioStreamBase::getBufferCapacityInFrames</a></div><div class="ttdeci">virtual int32_t getBufferCapacityInFrames() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:83</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406">oboe::ContentType</a></div><div class="ttdeci">ContentType</div><div class="ttdef"><b>Definition:</b> Definitions.h:252</div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdff"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe::SharingMode</a></div><div class="ttdeci">SharingMode</div><div class="ttdef"><b>Definition:</b> Definitions.h:113</div></div>
+<div class="ttc" id="a00040_html"><div class="ttname"><a href="a00040.html">oboe::AudioStreamBase</a></div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:34</div></div>
+<div class="ttc" id="a00040_html_ae9d32f3e09174bad69e74f147ee33087"><div class="ttname"><a href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">oboe::AudioStreamBase::getSampleRate</a></div><div class="ttdeci">int32_t getSampleRate() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:59</div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">oboe::SharingMode::Shared</a></div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe::InputPreset</a></div><div class="ttdeci">InputPreset</div><div class="ttdef"><b>Definition:</b> Definitions.h:285</div></div>
+<div class="ttc" id="a00040_html_a1c133e1949f0814f60bd8bb61346756b"><div class="ttname"><a href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">oboe::AudioStreamBase::getFramesPerCallback</a></div><div class="ttdeci">int getFramesPerCallback() const</div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:64</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbb"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe::Usage</a></div><div class="ttdeci">Usage</div><div class="ttdef"><b>Definition:</b> Definitions.h:174</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00008_source.html b/docs/reference/a00008_source.html
new file mode 100644
index 00000000..0ebd4b36
--- /dev/null
+++ b/docs/reference/a00008_source.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/AudioStreamBuilder.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AudioStreamBuilder.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2015 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_STREAM_BUILDER_H_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_STREAM_BUILDER_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamBase.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="a00044.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00044.html">AudioStreamBuilder</a> : <span class="keyword">public</span> <a class="code" href="a00040.html">AudioStreamBase</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a>() : <a class="code" href="a00040.html">AudioStreamBase</a>() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7"> 39</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">setChannelCount</a>(<span class="keywordtype">int</span> channelCount) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; mChannelCount = channelCount;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="a00044.html#ab3fbd47b06197619c26393637e26354c"> 49</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#ab3fbd47b06197619c26393637e26354c">setDirection</a>(Direction direction) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; mDirection = direction;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d"> 65</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">setSampleRate</a>(int32_t sampleRate) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; mSampleRate = sampleRate;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="a00044.html#a3f397821f61eabaeedaf31064c859a54"> 84</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a3f397821f61eabaeedaf31064c859a54">setFramesPerCallback</a>(<span class="keywordtype">int</span> framesPerCallback) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; mFramesPerCallback = framesPerCallback;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515"> 95</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">setFormat</a>(AudioFormat format) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; mFormat = format;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef"> 109</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">setBufferCapacityInFrames</a>(int32_t bufferCapacityInFrames) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; mBufferCapacityInFrames = bufferCapacityInFrames;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> getAudioApi()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mAudioApi; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391"> 125</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">setAudioApi</a>(<a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> audioApi) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; mAudioApi = audioApi;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">isAAudioSupported</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="a00044.html#a622732bbe5c6577356d749f7dc2108df">isAAudioRecommended</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654"> 156</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">setSharingMode</a>(<a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> sharingMode) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; mSharingMode = sharingMode;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee"> 169</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">setPerformanceMode</a>(PerformanceMode performanceMode) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; mPerformanceMode = performanceMode;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a"> 187</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">setUsage</a>(<a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> usage) {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; mUsage = usage;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468"> 204</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">setContentType</a>(<a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> contentType) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; mContentType = contentType;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0"> 224</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">setInputPreset</a>(<a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> inputPreset) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; mInputPreset = inputPreset;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d"> 253</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">setSessionId</a>(<a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> sessionId) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; mSessionId = sessionId;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e"> 270</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">setDeviceId</a>(int32_t deviceId) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; mDeviceId = deviceId;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="a00044.html#a698cefa9af73bc97c020c004821fccbd"> 293</a></span>&#160; <a class="code" href="a00044.html">AudioStreamBuilder</a> *<a class="code" href="a00044.html#a698cefa9af73bc97c020c004821fccbd">setCallback</a>(<a class="code" href="a00048.html">AudioStreamCallback</a> *streamCallback) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; mStreamCallback = streamCallback;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; Result <a class="code" href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">openStream</a>(<a class="code" href="a00036.html">AudioStream</a> **stream);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="a00036.html">oboe::AudioStream</a> *build();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> mAudioApi = AudioApi::Unspecified;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;};</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* OBOE_STREAM_BUILDER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="a00044_html"><div class="ttname"><a href="a00044.html">oboe::AudioStreamBuilder</a></div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:28</div></div>
+<div class="ttc" id="a00044_html_a622732bbe5c6577356d749f7dc2108df"><div class="ttname"><a href="a00044.html#a622732bbe5c6577356d749f7dc2108df">oboe::AudioStreamBuilder::isAAudioRecommended</a></div><div class="ttdeci">static bool isAAudioRecommended()</div></div>
+<div class="ttc" id="a00044_html_a593255a2f5eb972665775cfc5bc58f6a"><div class="ttname"><a href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">oboe::AudioStreamBuilder::setUsage</a></div><div class="ttdeci">AudioStreamBuilder * setUsage(Usage usage)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:187</div></div>
+<div class="ttc" id="a00044_html_a6a17bafc217c2b624179fbbf77fe4468"><div class="ttname"><a href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">oboe::AudioStreamBuilder::setContentType</a></div><div class="ttdeci">AudioStreamBuilder * setContentType(ContentType contentType)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:204</div></div>
+<div class="ttc" id="a00044_html_ab3fbd47b06197619c26393637e26354c"><div class="ttname"><a href="a00044.html#ab3fbd47b06197619c26393637e26354c">oboe::AudioStreamBuilder::setDirection</a></div><div class="ttdeci">AudioStreamBuilder * setDirection(Direction direction)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:49</div></div>
+<div class="ttc" id="a00044_html_af36ddcd00686a9e1de661bdac0685a8e"><div class="ttname"><a href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">oboe::AudioStreamBuilder::setDeviceId</a></div><div class="ttdeci">AudioStreamBuilder * setDeviceId(int32_t deviceId)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:270</div></div>
+<div class="ttc" id="a00044_html_a144a3d095fd668210282f1a91f23e1f0"><div class="ttname"><a href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">oboe::AudioStreamBuilder::setInputPreset</a></div><div class="ttdeci">AudioStreamBuilder * setInputPreset(InputPreset inputPreset)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:224</div></div>
+<div class="ttc" id="a00044_html_a86b94cfa47729bef2e04dce1a9086074"><div class="ttname"><a href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">oboe::AudioStreamBuilder::openStream</a></div><div class="ttdeci">Result openStream(AudioStream **stream)</div></div>
+<div class="ttc" id="a00032_html_a5752250c10e96179e3618d7f72937eaf"><div class="ttname"><a href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe::SessionId</a></div><div class="ttdeci">SessionId</div><div class="ttdef"><b>Definition:</b> Definitions.h:314</div></div>
+<div class="ttc" id="a00044_html_abaff480867af51ca0899bfa6fd7cc3ef"><div class="ttname"><a href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">oboe::AudioStreamBuilder::setBufferCapacityInFrames</a></div><div class="ttdeci">AudioStreamBuilder * setBufferCapacityInFrames(int32_t bufferCapacityInFrames)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:109</div></div>
+<div class="ttc" id="a00044_html_a38c6d6c5e718df1e3ac69daaac47c391"><div class="ttname"><a href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">oboe::AudioStreamBuilder::setAudioApi</a></div><div class="ttdeci">AudioStreamBuilder * setAudioApi(AudioApi audioApi)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:125</div></div>
+<div class="ttc" id="a00044_html_a3f397821f61eabaeedaf31064c859a54"><div class="ttname"><a href="a00044.html#a3f397821f61eabaeedaf31064c859a54">oboe::AudioStreamBuilder::setFramesPerCallback</a></div><div class="ttdeci">AudioStreamBuilder * setFramesPerCallback(int framesPerCallback)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:84</div></div>
+<div class="ttc" id="a00044_html_aa2e1d2d73cd6c2eb9f349bf2fe5f6515"><div class="ttname"><a href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">oboe::AudioStreamBuilder::setFormat</a></div><div class="ttdeci">AudioStreamBuilder * setFormat(AudioFormat format)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:95</div></div>
+<div class="ttc" id="a00044_html_a54c1651bdbe089d0d714af499e8a5f1d"><div class="ttname"><a href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">oboe::AudioStreamBuilder::setSessionId</a></div><div class="ttdeci">AudioStreamBuilder * setSessionId(SessionId sessionId)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:253</div></div>
+<div class="ttc" id="a00044_html_a698cefa9af73bc97c020c004821fccbd"><div class="ttname"><a href="a00044.html#a698cefa9af73bc97c020c004821fccbd">oboe::AudioStreamBuilder::setCallback</a></div><div class="ttdeci">AudioStreamBuilder * setCallback(AudioStreamCallback *streamCallback)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:293</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00044_html_a30ef3d5f51d56a9f980dc09600ed139d"><div class="ttname"><a href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">oboe::AudioStreamBuilder::setSampleRate</a></div><div class="ttdeci">AudioStreamBuilder * setSampleRate(int32_t sampleRate)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:65</div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe::AudioApi</a></div><div class="ttdeci">AudioApi</div><div class="ttdef"><b>Definition:</b> Definitions.h:141</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406">oboe::ContentType</a></div><div class="ttdeci">ContentType</div><div class="ttdef"><b>Definition:</b> Definitions.h:252</div></div>
+<div class="ttc" id="a00044_html_a18e7b5f7554a4c2ca763e35e8117d699"><div class="ttname"><a href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">oboe::AudioStreamBuilder::isAAudioSupported</a></div><div class="ttdeci">static bool isAAudioSupported()</div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdff"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe::SharingMode</a></div><div class="ttdeci">SharingMode</div><div class="ttdef"><b>Definition:</b> Definitions.h:113</div></div>
+<div class="ttc" id="a00040_html"><div class="ttname"><a href="a00040.html">oboe::AudioStreamBase</a></div><div class="ttdef"><b>Definition:</b> AudioStreamBase.h:34</div></div>
+<div class="ttc" id="a00044_html_a3e991742acbbfb6fe5ebcf592c478654"><div class="ttname"><a href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">oboe::AudioStreamBuilder::setSharingMode</a></div><div class="ttdeci">AudioStreamBuilder * setSharingMode(SharingMode sharingMode)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:156</div></div>
+<div class="ttc" id="a00044_html_a075d10291e1f998d90c2f73ef767b5a7"><div class="ttname"><a href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">oboe::AudioStreamBuilder::setChannelCount</a></div><div class="ttdeci">AudioStreamBuilder * setChannelCount(int channelCount)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:39</div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe::InputPreset</a></div><div class="ttdeci">InputPreset</div><div class="ttdef"><b>Definition:</b> Definitions.h:285</div></div>
+<div class="ttc" id="a00044_html_a6cd1d65612e844e59da71a68ea0ab3ee"><div class="ttname"><a href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">oboe::AudioStreamBuilder::setPerformanceMode</a></div><div class="ttdeci">AudioStreamBuilder * setPerformanceMode(PerformanceMode performanceMode)</div><div class="ttdef"><b>Definition:</b> AudioStreamBuilder.h:169</div></div>
+<div class="ttc" id="a00048_html"><div class="ttname"><a href="a00048.html">oboe::AudioStreamCallback</a></div><div class="ttdef"><b>Definition:</b> AudioStreamCallback.h:26</div></div>
+<div class="ttc" id="a00036_html"><div class="ttname"><a href="a00036.html">oboe::AudioStream</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:36</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbb"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe::Usage</a></div><div class="ttdeci">Usage</div><div class="ttdef"><b>Definition:</b> Definitions.h:174</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00011_source.html b/docs/reference/a00011_source.html
new file mode 100644
index 00000000..3c2af5c9
--- /dev/null
+++ b/docs/reference/a00011_source.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/AudioStreamCallback.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">AudioStreamCallback.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (C) 2016 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_STREAM_CALLBACK_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_STREAM_CALLBACK_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">class </span>AudioStream;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="a00048.html"> 26</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00048.html">AudioStreamCallback</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="a00048.html">AudioStreamCallback</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">virtual</span> DataCallbackResult <a class="code" href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">onAudioReady</a>(</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="a00036.html">AudioStream</a> *oboeStream,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> *audioData,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; int32_t numFrames) = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd"> 51</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">onErrorBeforeClose</a>(<a class="code" href="a00036.html">AudioStream</a> *oboeStream, Result error) {}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">onErrorAfterClose</a>(<a class="code" href="a00036.html">AudioStream</a> *oboeStream, Result error) {}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;};</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif //OBOE_STREAM_CALLBACK_H</span></div><div class="ttc" id="a00048_html_af3a7c44f0254abe6e5e5bb566e2317df"><div class="ttname"><a href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">oboe::AudioStreamCallback::onAudioReady</a></div><div class="ttdeci">virtual DataCallbackResult onAudioReady(AudioStream *oboeStream, void *audioData, int32_t numFrames)=0</div></div>
+<div class="ttc" id="a00048_html_a2407ff537a60301fd161bd2c36913bfd"><div class="ttname"><a href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">oboe::AudioStreamCallback::onErrorBeforeClose</a></div><div class="ttdeci">virtual void onErrorBeforeClose(AudioStream *oboeStream, Result error)</div><div class="ttdef"><b>Definition:</b> AudioStreamCallback.h:51</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00048_html"><div class="ttname"><a href="a00048.html">oboe::AudioStreamCallback</a></div><div class="ttdef"><b>Definition:</b> AudioStreamCallback.h:26</div></div>
+<div class="ttc" id="a00048_html_a7089c5e18a80cba89eb3f4fe2341aeba"><div class="ttname"><a href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">oboe::AudioStreamCallback::onErrorAfterClose</a></div><div class="ttdeci">virtual void onErrorAfterClose(AudioStream *oboeStream, Result error)</div><div class="ttdef"><b>Definition:</b> AudioStreamCallback.h:63</div></div>
+<div class="ttc" id="a00036_html"><div class="ttname"><a href="a00036.html">oboe::AudioStream</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:36</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00014_source.html b/docs/reference/a00014_source.html
new file mode 100644
index 00000000..c2fc1d50
--- /dev/null
+++ b/docs/reference/a00014_source.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/Definitions.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Definitions.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (C) 2016 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_DEFINITIONS_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_DEFINITIONS_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;aaudio/AAudio.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// Ensure that all AAudio primitive data types are int32_t</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define ASSERT_INT32(type) static_assert(std::is_same&lt;int32_t, type&gt;::value, \</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#type&quot; must be int32_t&quot;)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;ASSERT_INT32(aaudio_stream_state_t);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;ASSERT_INT32(aaudio_direction_t);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;ASSERT_INT32(aaudio_format_t);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;ASSERT_INT32(aaudio_data_callback_result_t);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;ASSERT_INT32(aaudio_result_t);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;ASSERT_INT32(aaudio_sharing_mode_t);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;ASSERT_INT32(aaudio_performance_mode_t);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; constexpr int32_t kUnspecified = 0;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// TODO: Investigate using std::chrono</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; constexpr int64_t kNanosPerMicrosecond = 1000;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; constexpr int64_t kNanosPerMillisecond = kNanosPerMicrosecond * 1000;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; constexpr int64_t kMillisPerSecond = 1000;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; constexpr int64_t kNanosPerSecond = kNanosPerMillisecond * kMillisPerSecond;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">enum class</span> StreamState : aaudio_stream_state_t {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Uninitialized = AAUDIO_STREAM_STATE_UNINITIALIZED,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Unknown = AAUDIO_STREAM_STATE_UNKNOWN,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Open = AAUDIO_STREAM_STATE_OPEN,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; Starting = AAUDIO_STREAM_STATE_STARTING,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; Started = AAUDIO_STREAM_STATE_STARTED,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; Pausing = AAUDIO_STREAM_STATE_PAUSING,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; Paused = AAUDIO_STREAM_STATE_PAUSED,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; Flushing = AAUDIO_STREAM_STATE_FLUSHING,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Flushed = AAUDIO_STREAM_STATE_FLUSHED,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; Stopping = AAUDIO_STREAM_STATE_STOPPING,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; Stopped = AAUDIO_STREAM_STATE_STOPPED,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; Closing = AAUDIO_STREAM_STATE_CLOSING,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; Closed = AAUDIO_STREAM_STATE_CLOSED,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Disconnected = AAUDIO_STREAM_STATE_DISCONNECTED,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">enum class</span> Direction : aaudio_direction_t {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; Output = AAUDIO_DIRECTION_OUTPUT,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; Input = AAUDIO_DIRECTION_INPUT,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">enum class</span> AudioFormat : aaudio_format_t {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Invalid = AAUDIO_FORMAT_INVALID,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">Unspecified</a> = AAUDIO_FORMAT_UNSPECIFIED,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; I16 = AAUDIO_FORMAT_PCM_I16,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; Float = AAUDIO_FORMAT_PCM_FLOAT,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">enum class</span> DataCallbackResult : aaudio_data_callback_result_t {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; Continue = AAUDIO_CALLBACK_RESULT_CONTINUE,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; Stop = AAUDIO_CALLBACK_RESULT_STOP,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">enum class</span> Result : aaudio_result_t {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; OK,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; ErrorBase = AAUDIO_ERROR_BASE,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; ErrorDisconnected = AAUDIO_ERROR_DISCONNECTED,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ErrorIllegalArgument = AAUDIO_ERROR_ILLEGAL_ARGUMENT,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; ErrorInternal = AAUDIO_ERROR_INTERNAL,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; ErrorInvalidState = AAUDIO_ERROR_INVALID_STATE,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ErrorInvalidHandle = AAUDIO_ERROR_INVALID_HANDLE,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; ErrorUnimplemented = AAUDIO_ERROR_UNIMPLEMENTED,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; ErrorUnavailable = AAUDIO_ERROR_UNAVAILABLE,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ErrorNoFreeHandles = AAUDIO_ERROR_NO_FREE_HANDLES,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; ErrorNoMemory = AAUDIO_ERROR_NO_MEMORY,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; ErrorNull = AAUDIO_ERROR_NULL,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; ErrorTimeout = AAUDIO_ERROR_TIMEOUT,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; ErrorWouldBlock = AAUDIO_ERROR_WOULD_BLOCK,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; ErrorInvalidFormat = AAUDIO_ERROR_INVALID_FORMAT,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; ErrorOutOfRange = AAUDIO_ERROR_OUT_OF_RANGE,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ErrorNoService = AAUDIO_ERROR_NO_SERVICE,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; ErrorInvalidRate = AAUDIO_ERROR_INVALID_RATE,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Reserved for future AAudio result types</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; Reserved1,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; Reserved2,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; Reserved3,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; Reserved4,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; Reserved5,</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; Reserved6,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; Reserved7,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; Reserved8,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; Reserved9,</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; Reserved10,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; ErrorClosed,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; };</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff"> 113</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> : aaudio_sharing_mode_t {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971">Exclusive</a> = AAUDIO_SHARING_MODE_EXCLUSIVE,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">Shared</a> = AAUDIO_SHARING_MODE_SHARED,</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">enum class</span> PerformanceMode : aaudio_performance_mode_t {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// No particular performance needs. Default.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">None</a> = AAUDIO_PERFORMANCE_MODE_NONE,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// Extending battery life is most important.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; PowerSaving = AAUDIO_PERFORMANCE_MODE_POWER_SAVING,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// Reducing latency is most important.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; LowLatency = AAUDIO_PERFORMANCE_MODE_LOW_LATENCY</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; };</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6"> 141</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> : int32_t {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">Unspecified</a> = kUnspecified,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b">OpenSLES</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">AAudio</a></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">// Hard code constants so they can be compiled with versions of the NDK before P.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#if __ANDROID_API_LEVEL__ &gt;= __ANDROID_API_P__</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#define CONSTANT_API_P(hard_constant, soft_constant) (soft_constant)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#define CONSTANT_API_P(hard_constant, soft_constant) (hard_constant)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb"> 174</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> : aaudio_usage_t {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Media</a> = CONSTANT_API_P(1, AAUDIO_USAGE_MEDIA),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">VoiceCommunication</a> = CONSTANT_API_P(2, AAUDIO_USAGE_VOICE_COMMUNICATION),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74">VoiceCommunicationSignalling</a> = CONSTANT_API_P(3,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; AAUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING),</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4">Alarm</a> = CONSTANT_API_P(4, AAUDIO_USAGE_ALARM),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71">Notification</a> = CONSTANT_API_P(5, AAUDIO_USAGE_NOTIFICATION),</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf">NotificationRingtone</a> = CONSTANT_API_P(6, AAUDIO_USAGE_NOTIFICATION_RINGTONE),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f">NotificationEvent</a> = CONSTANT_API_P(10, AAUDIO_USAGE_NOTIFICATION_EVENT),</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8">AssistanceAccessibility</a> = CONSTANT_API_P(11, AAUDIO_USAGE_ASSISTANCE_ACCESSIBILITY),</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e">AssistanceNavigationGuidance</a> = CONSTANT_API_P(12,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; AAUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE),</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7">AssistanceSonification</a> = CONSTANT_API_P(13, AAUDIO_USAGE_ASSISTANCE_SONIFICATION),</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb">Game</a> = CONSTANT_API_P(14, AAUDIO_USAGE_GAME),</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b">Assistant</a> = CONSTANT_API_P(16, AAUDIO_USAGE_ASSISTANT),</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; };</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="a00032.html#a07eed38097ed944422063801f8f83406"> 252</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> : aaudio_content_type_t {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1"> 257</a></span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">Speech</a> = CONSTANT_API_P(1, AAUDIO_CONTENT_TYPE_SPEECH),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517"> 262</a></span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">Music</a> = CONSTANT_API_P(2, AAUDIO_CONTENT_TYPE_MUSIC),</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1"> 267</a></span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">Movie</a> = CONSTANT_API_P(3, AAUDIO_CONTENT_TYPE_MOVIE),</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799"> 273</a></span>&#160; <a class="code" href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">Sonification</a> = CONSTANT_API_P(4, AAUDIO_CONTENT_TYPE_SONIFICATION),</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; };</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04"> 285</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> : aaudio_input_preset_t {</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544"> 289</a></span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">Generic</a> = CONSTANT_API_P(1, AAUDIO_INPUT_PRESET_GENERIC),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe"> 294</a></span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">Camcorder</a> = CONSTANT_API_P(5, AAUDIO_INPUT_PRESET_CAMCORDER),</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc"> 299</a></span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">VoiceRecognition</a> = CONSTANT_API_P(6, AAUDIO_INPUT_PRESET_VOICE_RECOGNITION),</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d"> 304</a></span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">VoiceCommunication</a> = CONSTANT_API_P(7, AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION),</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f"> 311</a></span>&#160; <a class="code" href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">Unprocessed</a> = CONSTANT_API_P(9, AAUDIO_INPUT_PRESET_UNPROCESSED),</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="a00032.html#a5752250c10e96179e3618d7f72937eaf"> 314</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> {</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f"> 322</a></span>&#160; <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">None</a> = CONSTANT_API_P(-1, AAUDIO_SESSION_ID_NONE),</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123"> 333</a></span>&#160; <a class="code" href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">Allocate</a> = CONSTANT_API_P(0, AAUDIO_SESSION_ID_ALLOCATE),</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; };</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="a00032.html#a522e6806948369987639a0d1df03c029"> 336</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029">ChannelCount</a> : int32_t {</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76"> 340</a></span>&#160; <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">Unspecified</a> = kUnspecified,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79"> 345</a></span>&#160; <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">Mono</a> = 1,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba"> 350</a></span>&#160; <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">Stereo</a> = 2,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; };</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor">#undef CONSTANT_API_P</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="a00052.html"> 355</a></span>&#160; <span class="keyword">class </span><a class="code" href="a00052.html">DefaultStreamValues</a> {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1"> 377</a></span>&#160; <span class="keyword">static</span> int32_t <a class="code" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">SampleRate</a>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">static</span> int32_t FramesPerBurst;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">static</span> int32_t <a class="code" href="a00032.html#a522e6806948369987639a0d1df03c029">ChannelCount</a>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; };</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor">#endif // OBOE_DEFINITIONS_H</span></div><div class="ttc" id="a00032_html_a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123"><div class="ttname"><a href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">oboe::Allocate</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:333</div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">oboe::VoiceRecognition</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:299</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">oboe::Speech</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:257</div></div>
+<div class="ttc" id="a00032_html_a522e6806948369987639a0d1df03c029"><div class="ttname"><a href="a00032.html#a522e6806948369987639a0d1df03c029">oboe::ChannelCount</a></div><div class="ttdeci">ChannelCount</div><div class="ttdef"><b>Definition:</b> Definitions.h:336</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf">oboe::Usage::NotificationRingtone</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e">oboe::Usage::AssistanceNavigationGuidance</a></div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">oboe::VoiceCommunication</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:304</div></div>
+<div class="ttc" id="a00032_html_a5752250c10e96179e3618d7f72937eaf"><div class="ttname"><a href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe::SessionId</a></div><div class="ttdeci">SessionId</div><div class="ttdef"><b>Definition:</b> Definitions.h:314</div></div>
+<div class="ttc" id="a00052_html_a46a5d9a653f2153f618cadcab764e1b1"><div class="ttname"><a href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">oboe::DefaultStreamValues::SampleRate</a></div><div class="ttdeci">static int32_t SampleRate</div><div class="ttdef"><b>Definition:</b> Definitions.h:377</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">oboe::Usage::Media</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74">oboe::Usage::VoiceCommunicationSignalling</a></div></div>
+<div class="ttc" id="a00032_html_a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f"><div class="ttname"><a href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">oboe::None</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:322</div></div>
+<div class="ttc" id="a00032_html_a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76"><div class="ttname"><a href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">oboe::Unspecified</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:340</div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">oboe::Unprocessed</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:311</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">oboe::Movie</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:267</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb">oboe::Usage::Game</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4">oboe::Usage::Alarm</a></div></div>
+<div class="ttc" id="a00032_html_a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba"><div class="ttname"><a href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">oboe::Stereo</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:350</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">oboe::Music</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:262</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71">oboe::Usage::Notification</a></div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">oboe::Generic</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:289</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b">oboe::AudioApi::OpenSLES</a></div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe::AudioApi</a></div><div class="ttdeci">AudioApi</div><div class="ttdef"><b>Definition:</b> Definitions.h:141</div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406">oboe::ContentType</a></div><div class="ttdeci">ContentType</div><div class="ttdef"><b>Definition:</b> Definitions.h:252</div></div>
+<div class="ttc" id="a00052_html"><div class="ttname"><a href="a00052.html">oboe::DefaultStreamValues</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:355</div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdff"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe::SharingMode</a></div><div class="ttdeci">SharingMode</div><div class="ttdef"><b>Definition:</b> Definitions.h:113</div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">oboe::Camcorder</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:294</div></div>
+<div class="ttc" id="a00032_html_a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79"><div class="ttname"><a href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">oboe::Mono</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:345</div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">oboe::SharingMode::Shared</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8">oboe::Usage::AssistanceAccessibility</a></div></div>
+<div class="ttc" id="a00032_html_ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971"><div class="ttname"><a href="a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971">oboe::SharingMode::Exclusive</a></div></div>
+<div class="ttc" id="a00032_html_a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b"><div class="ttname"><a href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">oboe::AudioApi::AAudio</a></div></div>
+<div class="ttc" id="a00032_html_a17f63a064de966efddd5d0335992bc04"><div class="ttname"><a href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe::InputPreset</a></div><div class="ttdeci">InputPreset</div><div class="ttdef"><b>Definition:</b> Definitions.h:285</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f">oboe::Usage::NotificationEvent</a></div></div>
+<div class="ttc" id="a00032_html_a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799"><div class="ttname"><a href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">oboe::Sonification</a></div><div class="ttdef"><b>Definition:</b> Definitions.h:273</div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b">oboe::Usage::Assistant</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7">oboe::Usage::AssistanceSonification</a></div></div>
+<div class="ttc" id="a00032_html_a1b2a1bdc891d640eb82724dcd9b7afbb"><div class="ttname"><a href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe::Usage</a></div><div class="ttdeci">Usage</div><div class="ttdef"><b>Definition:</b> Definitions.h:174</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00017_source.html b/docs/reference/a00017_source.html
new file mode 100644
index 00000000..e4ed0f40
--- /dev/null
+++ b/docs/reference/a00017_source.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/LatencyTuner.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">LatencyTuner.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2017 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_LATENCY_TUNER_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_LATENCY_TUNER_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;atomic&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStream.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="a00056.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00056.html">LatencyTuner</a> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">explicit</span> <a class="code" href="a00056.html">LatencyTuner</a>(<a class="code" href="a00036.html">AudioStream</a> &amp;stream);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; Result <a class="code" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="a00056.html#a6c0142e08dc65eda8f758b4794450867">requestReset</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> reset();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">enum class</span> State {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; Idle,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; Active,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; AtMax,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; Unsupported</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; } ;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// arbitrary number of calls to wait before bumping up the latency</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">static</span> constexpr int32_t kIdleCount = 8;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="a00036.html">AudioStream</a> &amp;mStream;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; State mState = State::Idle;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; int32_t mPreviousXRuns = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; int32_t mIdleCountDown = 0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; std::atomic&lt;int32_t&gt; mLatencyTriggerRequests{0}; <span class="comment">// TODO user atomic requester from AAudio</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::atomic&lt;int32_t&gt; mLatencyTriggerResponses{0};</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor">#endif // OBOE_LATENCY_TUNER_</span></div><div class="ttc" id="a00056_html"><div class="ttname"><a href="a00056.html">oboe::LatencyTuner</a></div><div class="ttdef"><b>Definition:</b> LatencyTuner.h:42</div></div>
+<div class="ttc" id="a00056_html_a6c0142e08dc65eda8f758b4794450867"><div class="ttname"><a href="a00056.html#a6c0142e08dc65eda8f758b4794450867">oboe::LatencyTuner::requestReset</a></div><div class="ttdeci">void requestReset()</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00056_html_ad2be756965e6a9af3114008eda892174"><div class="ttname"><a href="a00056.html#ad2be756965e6a9af3114008eda892174">oboe::LatencyTuner::tune</a></div><div class="ttdeci">Result tune()</div></div>
+<div class="ttc" id="a00036_html"><div class="ttname"><a href="a00036.html">oboe::AudioStream</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:36</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00020_source.html b/docs/reference/a00020_source.html
new file mode 100644
index 00000000..11346b96
--- /dev/null
+++ b/docs/reference/a00020_source.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/Oboe.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Oboe.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (C) 2016 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_OBOE_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_OBOE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;oboe/ResultWithValue.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;oboe/LatencyTuner.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStream.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamBase.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;oboe/AudioStreamBuilder.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;oboe/Utilities.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;oboe/Version.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif //OBOE_OBOE_H</span></div></div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00023_source.html b/docs/reference/a00023_source.html
new file mode 100644
index 00000000..e24f9e2a
--- /dev/null
+++ b/docs/reference/a00023_source.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/ResultWithValue.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">ResultWithValue.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (C) 2018 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_RESULT_WITH_VALUE_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_RESULT_WITH_VALUE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="a00060.html"> 27</a></span>&#160;<span class="keyword">class </span><a class="code" href="a00060.html">ResultWithValue</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="a00060.html">ResultWithValue</a>(oboe::Result error)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; : mValue{}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; , mError(error) {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">explicit</span> <a class="code" href="a00060.html">ResultWithValue</a>(T value)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; : mValue(value)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; , mError(oboe::Result::OK) {}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; oboe::Result error()<span class="keyword"> const </span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> mError;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; T value()<span class="keyword"> const </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> mValue;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="a00060.html#ae32b1953b777af7d1d0c94862ca39986"> 48</a></span>&#160; <span class="keyword">explicit</span> <span class="keyword">operator</span> bool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mError == oboe::Result::OK; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3"> 60</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">operator !</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mError != oboe::Result::OK; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="a00060.html#af62107817c0bc76047e6b655a78504ba"> 70</a></span>&#160; <span class="keyword">operator</span> Result()<span class="keyword"> const </span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> mError;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7"> 81</a></span>&#160; <span class="keyword">static</span> <a class="code" href="a00060.html">ResultWithValue&lt;T&gt;</a> <a class="code" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">createBasedOnSign</a>(T numericResult){</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// Ensure that the type is either an integer or float</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; static_assert(std::is_arithmetic&lt;T&gt;::value,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="stringliteral">&quot;createBasedOnSign can only be called for numeric types (int or float)&quot;</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (numericResult &gt;= 0){</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;T&gt;</a>(numericResult);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <a class="code" href="a00060.html">ResultWithValue&lt;T&gt;</a>(<span class="keyword">static_cast&lt;</span>Result<span class="keyword">&gt;</span>(numericResult));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> T mValue;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> oboe::Result mError;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;};</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;std::ostream&amp; operator&lt;&lt;(std::ostream &amp;strm, const ResultWithValue&lt;T&gt; &amp;result) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (!result) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; strm &lt;&lt; <a class="code" href="a00032.html#a8d1ae211254cc239019f165b607f4365">convertToText</a>(result.error());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; strm &lt;&lt; result.value();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> strm;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#endif //OBOE_RESULT_WITH_VALUE_H</span></div><div class="ttc" id="a00032_html_a8d1ae211254cc239019f165b607f4365"><div class="ttname"><a href="a00032.html#a8d1ae211254cc239019f165b607f4365">oboe::convertToText</a></div><div class="ttdeci">const char * convertToText(FromType)</div></div>
+<div class="ttc" id="a00060_html_a2304c6120e2aad8f2189383a98c7b0a7"><div class="ttname"><a href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">oboe::ResultWithValue::createBasedOnSign</a></div><div class="ttdeci">static ResultWithValue&lt; T &gt; createBasedOnSign(T numericResult)</div><div class="ttdef"><b>Definition:</b> ResultWithValue.h:81</div></div>
+<div class="ttc" id="a00060_html_a2dbc8b09ead8b073a78af95b4b0186e3"><div class="ttname"><a href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">oboe::ResultWithValue::operator!</a></div><div class="ttdeci">bool operator!() const</div><div class="ttdef"><b>Definition:</b> ResultWithValue.h:60</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00060_html"><div class="ttname"><a href="a00060.html">oboe::ResultWithValue</a></div><div class="ttdef"><b>Definition:</b> ResultWithValue.h:27</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00026_source.html b/docs/reference/a00026_source.html
new file mode 100644
index 00000000..2200dd40
--- /dev/null
+++ b/docs/reference/a00026_source.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/Utilities.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Utilities.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2016 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_UTILITIES_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_UTILITIES_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;oboe/Definitions.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keywordtype">void</span> convertFloatToPcm16(<span class="keyword">const</span> <span class="keywordtype">float</span> *source, int16_t *destination, int32_t numSamples);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keywordtype">void</span> convertPcm16ToFloat(<span class="keyword">const</span> int16_t *source, <span class="keywordtype">float</span> *destination, int32_t numSamples);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;int32_t <a class="code" href="a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca">convertFormatToSizeInBytes</a>(AudioFormat format);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> FromType&gt;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="a00032.html#a8d1ae211254cc239019f165b607f4365">convertToText</a>(FromType);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keywordtype">int</span> <a class="code" href="a00032.html#a54528938e9fccab7ad8947ccf0e409db">getSdkVersion</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif //OBOE_UTILITIES_H</span></div><div class="ttc" id="a00032_html_a8d1ae211254cc239019f165b607f4365"><div class="ttname"><a href="a00032.html#a8d1ae211254cc239019f165b607f4365">oboe::convertToText</a></div><div class="ttdeci">const char * convertToText(FromType)</div></div>
+<div class="ttc" id="a00032_html_ac67383a3df0f6e7a51f8415ffd9fdaca"><div class="ttname"><a href="a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca">oboe::convertFormatToSizeInBytes</a></div><div class="ttdeci">int32_t convertFormatToSizeInBytes(AudioFormat format)</div></div>
+<div class="ttc" id="a00032_html_a54528938e9fccab7ad8947ccf0e409db"><div class="ttname"><a href="a00032.html#a54528938e9fccab7ad8947ccf0e409db">oboe::getSdkVersion</a></div><div class="ttdeci">int getSdkVersion()</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00029_source.html b/docs/reference/a00029_source.html
new file mode 100644
index 00000000..005f00d6
--- /dev/null
+++ b/docs/reference/a00029_source.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: include/oboe/Version.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html">oboe</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Version.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright 2017 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef OBOE_VERSIONINFO_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define OBOE_VERSIONINFO_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// Type: 8-bit unsigned int. Min value: 0 Max value: 255. See below for description.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#define OBOE_VERSION_MAJOR 0</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// Type: 8-bit unsigned int. Min value: 0 Max value: 255. See below for description.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define OBOE_VERSION_MINOR 12</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// Type: 16-bit unsigned int. Min value: 0 Max value: 65535. See below for description.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define OBOE_VERSION_PATCH 0</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#define OBOE_STRINGIFY(x) #x</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#define OBOE_TOSTRING(x) OBOE_STRINGIFY(x)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// Type: String literal. See below for description.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#define OBOE_VERSION_TEXT \</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor"> OBOE_TOSTRING(OBOE_VERSION_MAJOR) &quot;.&quot; \</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"> OBOE_TOSTRING(OBOE_VERSION_MINOR) &quot;.&quot; \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"> OBOE_TOSTRING(OBOE_VERSION_PATCH)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// Type: 32-bit unsigned int. See below for description.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define OBOE_VERSION_NUMBER ((OBOE_VERSION_MAJOR &lt;&lt; 24) | (OBOE_VERSION_MINOR &lt;&lt; 16) | OBOE_VERSION_PATCH)</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00032.html">oboe</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="a00064.html"> 54</a></span>&#160;<span class="keyword">struct </span><a class="code" href="a00064.html">Version</a> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="a00064.html#a270f2e92582d5187be339eeda8e2b276"> 58</a></span>&#160; <span class="keyword">static</span> constexpr uint8_t <a class="code" href="a00064.html#a270f2e92582d5187be339eeda8e2b276">Major</a> = OBOE_VERSION_MAJOR;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="a00064.html#ae460bb95e3a9099696205a35fffb5469"> 64</a></span>&#160; <span class="keyword">static</span> constexpr uint8_t <a class="code" href="a00064.html#ae460bb95e3a9099696205a35fffb5469">Minor</a> = OBOE_VERSION_MINOR;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2"> 70</a></span>&#160; <span class="keyword">static</span> constexpr uint16_t <a class="code" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">Patch</a> = OBOE_VERSION_PATCH;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="a00064.html#a2c86e578b827fbca5f40c460a7754503"> 75</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="a00064.html#a2c86e578b827fbca5f40c460a7754503">Text</a> = OBOE_VERSION_TEXT;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="a00064.html#ac579661e79bcee45dc676d4647891de0"> 81</a></span>&#160; <span class="keyword">static</span> constexpr uint32_t <a class="code" href="a00064.html#ac579661e79bcee45dc676d4647891de0">Number</a> = OBOE_VERSION_NUMBER;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;} <span class="comment">// namespace oboe</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#endif //OBOE_VERSIONINFO_H</span></div><div class="ttc" id="a00064_html_ae460bb95e3a9099696205a35fffb5469"><div class="ttname"><a href="a00064.html#ae460bb95e3a9099696205a35fffb5469">oboe::Version::Minor</a></div><div class="ttdeci">static constexpr uint8_t Minor</div><div class="ttdef"><b>Definition:</b> Version.h:64</div></div>
+<div class="ttc" id="a00064_html"><div class="ttname"><a href="a00064.html">oboe::Version</a></div><div class="ttdef"><b>Definition:</b> Version.h:54</div></div>
+<div class="ttc" id="a00032_html"><div class="ttname"><a href="a00032.html">oboe</a></div><div class="ttdef"><b>Definition:</b> AudioStream.h:29</div></div>
+<div class="ttc" id="a00064_html_a690110f2b3e887892da8f29ab5c057b2"><div class="ttname"><a href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">oboe::Version::Patch</a></div><div class="ttdeci">static constexpr uint16_t Patch</div><div class="ttdef"><b>Definition:</b> Version.h:70</div></div>
+<div class="ttc" id="a00064_html_a2c86e578b827fbca5f40c460a7754503"><div class="ttname"><a href="a00064.html#a2c86e578b827fbca5f40c460a7754503">oboe::Version::Text</a></div><div class="ttdeci">static constexpr const char * Text</div><div class="ttdef"><b>Definition:</b> Version.h:75</div></div>
+<div class="ttc" id="a00064_html_a270f2e92582d5187be339eeda8e2b276"><div class="ttname"><a href="a00064.html#a270f2e92582d5187be339eeda8e2b276">oboe::Version::Major</a></div><div class="ttdeci">static constexpr uint8_t Major</div><div class="ttdef"><b>Definition:</b> Version.h:58</div></div>
+<div class="ttc" id="a00064_html_ac579661e79bcee45dc676d4647891de0"><div class="ttname"><a href="a00064.html#ac579661e79bcee45dc676d4647891de0">oboe::Version::Number</a></div><div class="ttdeci">static constexpr uint32_t Number</div><div class="ttdef"><b>Definition:</b> Version.h:81</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00032.html b/docs/reference/a00032.html
new file mode 100644
index 00000000..339fc68c
--- /dev/null
+++ b/docs/reference/a00032.html
@@ -0,0 +1,572 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">oboe Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html">AudioStream</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html">AudioStreamBase</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html">AudioStreamBuilder</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00048.html">AudioStreamCallback</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html">DefaultStreamValues</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html">LatencyTuner</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html">ResultWithValue</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">Version</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a7fd7bd0828b61e3b3097e33dc90ac123"><td class="memItemLeft" align="right" valign="top"><a id="a7fd7bd0828b61e3b3097e33dc90ac123"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>StreamState</b> : aaudio_stream_state_t { <br />
+&#160;&#160;<b>Uninitialized</b> = AAUDIO_STREAM_STATE_UNINITIALIZED,
+<b>Unknown</b> = AAUDIO_STREAM_STATE_UNKNOWN,
+<b>Open</b> = AAUDIO_STREAM_STATE_OPEN,
+<b>Starting</b> = AAUDIO_STREAM_STATE_STARTING,
+<br />
+&#160;&#160;<b>Started</b> = AAUDIO_STREAM_STATE_STARTED,
+<b>Pausing</b> = AAUDIO_STREAM_STATE_PAUSING,
+<b>Paused</b> = AAUDIO_STREAM_STATE_PAUSED,
+<b>Flushing</b> = AAUDIO_STREAM_STATE_FLUSHING,
+<br />
+&#160;&#160;<b>Flushed</b> = AAUDIO_STREAM_STATE_FLUSHED,
+<b>Stopping</b> = AAUDIO_STREAM_STATE_STOPPING,
+<b>Stopped</b> = AAUDIO_STREAM_STATE_STOPPED,
+<b>Closing</b> = AAUDIO_STREAM_STATE_CLOSING,
+<br />
+&#160;&#160;<b>Closed</b> = AAUDIO_STREAM_STATE_CLOSED,
+<b>Disconnected</b> = AAUDIO_STREAM_STATE_DISCONNECTED
+<br />
+ }</td></tr>
+<tr class="separator:a7fd7bd0828b61e3b3097e33dc90ac123"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aea1c5f88e3dd4144f51ed5a434fb387b"><td class="memItemLeft" align="right" valign="top"><a id="aea1c5f88e3dd4144f51ed5a434fb387b"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>Direction</b> : aaudio_direction_t { <b>Output</b> = AAUDIO_DIRECTION_OUTPUT,
+<b>Input</b> = AAUDIO_DIRECTION_INPUT
+ }</td></tr>
+<tr class="separator:aea1c5f88e3dd4144f51ed5a434fb387b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a58191d1a396041246bd4e0a87dbfdec9"><td class="memItemLeft" align="right" valign="top"><a id="a58191d1a396041246bd4e0a87dbfdec9"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>AudioFormat</b> : aaudio_format_t { <b>Invalid</b> = AAUDIO_FORMAT_INVALID,
+<b>Unspecified</b> = AAUDIO_FORMAT_UNSPECIFIED,
+<b>I16</b> = AAUDIO_FORMAT_PCM_I16,
+<b>Float</b> = AAUDIO_FORMAT_PCM_FLOAT
+ }</td></tr>
+<tr class="separator:a58191d1a396041246bd4e0a87dbfdec9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cb0d39766aa6d50132a2daa6e826457"><td class="memItemLeft" align="right" valign="top"><a id="a9cb0d39766aa6d50132a2daa6e826457"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>DataCallbackResult</b> : aaudio_data_callback_result_t { <b>Continue</b> = AAUDIO_CALLBACK_RESULT_CONTINUE,
+<b>Stop</b> = AAUDIO_CALLBACK_RESULT_STOP
+ }</td></tr>
+<tr class="separator:a9cb0d39766aa6d50132a2daa6e826457"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e32586b07bf64da91f99fc33c043cb1"><td class="memItemLeft" align="right" valign="top"><a id="a5e32586b07bf64da91f99fc33c043cb1"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>Result</b> : aaudio_result_t { <br />
+&#160;&#160;<b>OK</b>,
+<b>ErrorBase</b> = AAUDIO_ERROR_BASE,
+<b>ErrorDisconnected</b> = AAUDIO_ERROR_DISCONNECTED,
+<b>ErrorIllegalArgument</b> = AAUDIO_ERROR_ILLEGAL_ARGUMENT,
+<br />
+&#160;&#160;<b>ErrorInternal</b> = AAUDIO_ERROR_INTERNAL,
+<b>ErrorInvalidState</b> = AAUDIO_ERROR_INVALID_STATE,
+<b>ErrorInvalidHandle</b> = AAUDIO_ERROR_INVALID_HANDLE,
+<b>ErrorUnimplemented</b> = AAUDIO_ERROR_UNIMPLEMENTED,
+<br />
+&#160;&#160;<b>ErrorUnavailable</b> = AAUDIO_ERROR_UNAVAILABLE,
+<b>ErrorNoFreeHandles</b> = AAUDIO_ERROR_NO_FREE_HANDLES,
+<b>ErrorNoMemory</b> = AAUDIO_ERROR_NO_MEMORY,
+<b>ErrorNull</b> = AAUDIO_ERROR_NULL,
+<br />
+&#160;&#160;<b>ErrorTimeout</b> = AAUDIO_ERROR_TIMEOUT,
+<b>ErrorWouldBlock</b> = AAUDIO_ERROR_WOULD_BLOCK,
+<b>ErrorInvalidFormat</b> = AAUDIO_ERROR_INVALID_FORMAT,
+<b>ErrorOutOfRange</b> = AAUDIO_ERROR_OUT_OF_RANGE,
+<br />
+&#160;&#160;<b>ErrorNoService</b> = AAUDIO_ERROR_NO_SERVICE,
+<b>ErrorInvalidRate</b> = AAUDIO_ERROR_INVALID_RATE,
+<b>Reserved1</b>,
+<b>Reserved2</b>,
+<br />
+&#160;&#160;<b>Reserved3</b>,
+<b>Reserved4</b>,
+<b>Reserved5</b>,
+<b>Reserved6</b>,
+<br />
+&#160;&#160;<b>Reserved7</b>,
+<b>Reserved8</b>,
+<b>Reserved9</b>,
+<b>Reserved10</b>,
+<br />
+&#160;&#160;<b>ErrorClosed</b>
+<br />
+ }</td></tr>
+<tr class="separator:a5e32586b07bf64da91f99fc33c043cb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3a52556c58387e0cecba01f9abffdff"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> : aaudio_sharing_mode_t { <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971">SharingMode::Exclusive</a> = AAUDIO_SHARING_MODE_EXCLUSIVE,
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a> = AAUDIO_SHARING_MODE_SHARED
+ }</td></tr>
+<tr class="separator:ae3a52556c58387e0cecba01f9abffdff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd0e87a1512eca01c60eb3b7a6676fde"><td class="memItemLeft" align="right" valign="top"><a id="acd0e87a1512eca01c60eb3b7a6676fde"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>PerformanceMode</b> : aaudio_performance_mode_t { <b>None</b> = AAUDIO_PERFORMANCE_MODE_NONE,
+<b>PowerSaving</b> = AAUDIO_PERFORMANCE_MODE_POWER_SAVING,
+<b>LowLatency</b> = AAUDIO_PERFORMANCE_MODE_LOW_LATENCY
+ }</td></tr>
+<tr class="separator:acd0e87a1512eca01c60eb3b7a6676fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92972414867c81d5974cb2ed7abefbf6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> : int32_t { <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5">Unspecified</a> = kUnspecified,
+<a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b">AudioApi::OpenSLES</a>,
+<a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">AudioApi::AAudio</a>
+ }</td></tr>
+<tr class="separator:a92972414867c81d5974cb2ed7abefbf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b2a1bdc891d640eb82724dcd9b7afbb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> : aaudio_usage_t { <br />
+&#160;&#160;<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a> = CONSTANT_API_P(1, AAUDIO_USAGE_MEDIA),
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6">VoiceCommunication</a> = CONSTANT_API_P(2, AAUDIO_USAGE_VOICE_COMMUNICATION),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74">Usage::VoiceCommunicationSignalling</a>,
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4">Usage::Alarm</a> = CONSTANT_API_P(4, AAUDIO_USAGE_ALARM),
+<br />
+&#160;&#160;<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71">Usage::Notification</a> = CONSTANT_API_P(5, AAUDIO_USAGE_NOTIFICATION),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf">Usage::NotificationRingtone</a> = CONSTANT_API_P(6, AAUDIO_USAGE_NOTIFICATION_RINGTONE),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f">Usage::NotificationEvent</a> = CONSTANT_API_P(10, AAUDIO_USAGE_NOTIFICATION_EVENT),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8">Usage::AssistanceAccessibility</a> = CONSTANT_API_P(11, AAUDIO_USAGE_ASSISTANCE_ACCESSIBILITY),
+<br />
+&#160;&#160;<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e">Usage::AssistanceNavigationGuidance</a>,
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7">Usage::AssistanceSonification</a> = CONSTANT_API_P(13, AAUDIO_USAGE_ASSISTANCE_SONIFICATION),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb">Usage::Game</a> = CONSTANT_API_P(14, AAUDIO_USAGE_GAME),
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b">Usage::Assistant</a> = CONSTANT_API_P(16, AAUDIO_USAGE_ASSISTANT)
+<br />
+ }</td></tr>
+<tr class="separator:a1b2a1bdc891d640eb82724dcd9b7afbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07eed38097ed944422063801f8f83406"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> : aaudio_content_type_t { <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">Speech</a> = CONSTANT_API_P(1, AAUDIO_CONTENT_TYPE_SPEECH),
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">Music</a> = CONSTANT_API_P(2, AAUDIO_CONTENT_TYPE_MUSIC),
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">Movie</a> = CONSTANT_API_P(3, AAUDIO_CONTENT_TYPE_MOVIE),
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">Sonification</a> = CONSTANT_API_P(4, AAUDIO_CONTENT_TYPE_SONIFICATION)
+ }</td></tr>
+<tr class="separator:a07eed38097ed944422063801f8f83406"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17f63a064de966efddd5d0335992bc04"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> : aaudio_input_preset_t { <br />
+&#160;&#160;<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">Generic</a> = CONSTANT_API_P(1, AAUDIO_INPUT_PRESET_GENERIC),
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">Camcorder</a> = CONSTANT_API_P(5, AAUDIO_INPUT_PRESET_CAMCORDER),
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">VoiceRecognition</a> = CONSTANT_API_P(6, AAUDIO_INPUT_PRESET_VOICE_RECOGNITION),
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">VoiceCommunication</a> = CONSTANT_API_P(7, AAUDIO_INPUT_PRESET_VOICE_COMMUNICATION),
+<br />
+&#160;&#160;<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6">VoiceCommunication</a> = CONSTANT_API_P(2, AAUDIO_USAGE_VOICE_COMMUNICATION),
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">Unprocessed</a> = CONSTANT_API_P(9, AAUDIO_INPUT_PRESET_UNPROCESSED)
+<br />
+ }</td></tr>
+<tr class="separator:a17f63a064de966efddd5d0335992bc04"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5752250c10e96179e3618d7f72937eaf"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> { <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">None</a> = CONSTANT_API_P(-1, AAUDIO_SESSION_ID_NONE),
+<b>None</b> = AAUDIO_PERFORMANCE_MODE_NONE,
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">Allocate</a> = CONSTANT_API_P(0, AAUDIO_SESSION_ID_ALLOCATE)
+ }</td></tr>
+<tr class="separator:a5752250c10e96179e3618d7f72937eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a522e6806948369987639a0d1df03c029"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029">ChannelCount</a> : int32_t { <br />
+&#160;&#160;<a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">Unspecified</a> = kUnspecified,
+<b>Unspecified</b> = AAUDIO_FORMAT_UNSPECIFIED,
+<a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5">Unspecified</a> = kUnspecified,
+<a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">Mono</a> = 1,
+<br />
+&#160;&#160;<a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">Stereo</a> = 2
+<br />
+ }</td></tr>
+<tr class="separator:a522e6806948369987639a0d1df03c029"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aa403103686222502d1cfc47bafc10aeb"><td class="memTemplParams" colspan="2"><a id="aa403103686222502d1cfc47bafc10aeb"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:aa403103686222502d1cfc47bafc10aeb"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;strm, const <a class="el" href="a00060.html">ResultWithValue</a>&lt; T &gt; &amp;result)</td></tr>
+<tr class="separator:aa403103686222502d1cfc47bafc10aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adbda063116feb9fa98a31ee820170060"><td class="memItemLeft" align="right" valign="top"><a id="adbda063116feb9fa98a31ee820170060"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>convertFloatToPcm16</b> (const float *source, int16_t *destination, int32_t numSamples)</td></tr>
+<tr class="separator:adbda063116feb9fa98a31ee820170060"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad17bee42828d13f2ef62a889e175c643"><td class="memItemLeft" align="right" valign="top"><a id="ad17bee42828d13f2ef62a889e175c643"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>convertPcm16ToFloat</b> (const int16_t *source, float *destination, int32_t numSamples)</td></tr>
+<tr class="separator:ad17bee42828d13f2ef62a889e175c643"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac67383a3df0f6e7a51f8415ffd9fdaca"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca">convertFormatToSizeInBytes</a> (AudioFormat format)</td></tr>
+<tr class="separator:ac67383a3df0f6e7a51f8415ffd9fdaca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d1ae211254cc239019f165b607f4365"><td class="memTemplParams" colspan="2">template&lt;typename FromType &gt; </td></tr>
+<tr class="memitem:a8d1ae211254cc239019f165b607f4365"><td class="memTemplItemLeft" align="right" valign="top">const char *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00032.html#a8d1ae211254cc239019f165b607f4365">convertToText</a> (FromType)</td></tr>
+<tr class="separator:a8d1ae211254cc239019f165b607f4365"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54528938e9fccab7ad8947ccf0e409db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a54528938e9fccab7ad8947ccf0e409db">getSdkVersion</a> ()</td></tr>
+<tr class="separator:a54528938e9fccab7ad8947ccf0e409db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:aab8f5f081a8b2147e16ec920347c1b5c"><td class="memItemLeft" align="right" valign="top"><a id="aab8f5f081a8b2147e16ec920347c1b5c"></a>
+constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultTimeoutNanos</b> = (2000 * kNanosPerMillisecond)</td></tr>
+<tr class="separator:aab8f5f081a8b2147e16ec920347c1b5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0772052200184e514082eaa89be7905"><td class="memItemLeft" align="right" valign="top"><a id="ab0772052200184e514082eaa89be7905"></a>
+constexpr int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>kUnspecified</b> = 0</td></tr>
+<tr class="separator:ab0772052200184e514082eaa89be7905"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aedef0759ae3622b6f0324799bcbdebf0"><td class="memItemLeft" align="right" valign="top"><a id="aedef0759ae3622b6f0324799bcbdebf0"></a>
+constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>kNanosPerMicrosecond</b> = 1000</td></tr>
+<tr class="separator:aedef0759ae3622b6f0324799bcbdebf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a831e887150474c087170679eaca8672b"><td class="memItemLeft" align="right" valign="top"><a id="a831e887150474c087170679eaca8672b"></a>
+constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>kNanosPerMillisecond</b> = kNanosPerMicrosecond * 1000</td></tr>
+<tr class="separator:a831e887150474c087170679eaca8672b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1bb9f5626cec20d3a052a8721959873"><td class="memItemLeft" align="right" valign="top"><a id="ad1bb9f5626cec20d3a052a8721959873"></a>
+constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>kMillisPerSecond</b> = 1000</td></tr>
+<tr class="separator:ad1bb9f5626cec20d3a052a8721959873"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5948466b593c4eab65f7025846a39f51"><td class="memItemLeft" align="right" valign="top"><a id="a5948466b593c4eab65f7025846a39f51"></a>
+constexpr int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>kNanosPerSecond</b> = kNanosPerMillisecond * kMillisPerSecond</td></tr>
+<tr class="separator:a5948466b593c4eab65f7025846a39f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>WARNING - UNDER CONSTRUCTION - THIS API WILL CHANGE. </p>
+</div><h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a92972414867c81d5974cb2ed7abefbf6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92972414867c81d5974cb2ed7abefbf6">&#9670;&nbsp;</a></span>AudioApi</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe::AudioApi</a> : int32_t</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5"></a>Unspecified&#160;</td><td class="fielddoc"><p>Try to use AAudio. If not available then use OpenSL ES. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b"></a>OpenSLES&#160;</td><td class="fielddoc"><p>Use OpenSL ES. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b"></a>AAudio&#160;</td><td class="fielddoc"><p>Try to use AAudio. Fail if unavailable. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="a522e6806948369987639a0d1df03c029"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a522e6806948369987639a0d1df03c029">&#9670;&nbsp;</a></span>ChannelCount</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029">oboe::ChannelCount</a> : int32_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76"></a>Unspecified&#160;</td><td class="fielddoc"><p>Audio channel count definition, use Mono or Stereo </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5"></a>Unspecified&#160;</td><td class="fielddoc"><p>Try to use AAudio. If not available then use OpenSL ES. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79"></a>Mono&#160;</td><td class="fielddoc"><p>Use this for mono audio </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba"></a>Stereo&#160;</td><td class="fielddoc"><p>Use this for stereo audio. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="a07eed38097ed944422063801f8f83406"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07eed38097ed944422063801f8f83406">&#9670;&nbsp;</a></span>ContentType</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">oboe::ContentType</a> : aaudio_content_type_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The CONTENT_TYPE attribute describes "what" you are playing. It expresses the general category of the content. This information is optional. But in case it is known (for instance <a class="el" href="">AAUDIO_CONTENT_TYPE_MOVIE</a> for a movie streaming service or <a class="el" href="">AAUDIO_CONTENT_TYPE_SPEECH</a> for an audio book application) this information might be used by the audio framework to enforce audio focus.</p>
+<p>Note that these match the equivalent values in AudioAttributes in the Android Java API.</p>
+<p>Added in API level 28. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1"></a>Speech&#160;</td><td class="fielddoc"><p>Use this for spoken voice, audio books, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517"></a>Music&#160;</td><td class="fielddoc"><p>Use this for pre-recorded or live music. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1"></a>Movie&#160;</td><td class="fielddoc"><p>Use this for a movie or video soundtrack. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799"></a>Sonification&#160;</td><td class="fielddoc"><p>Use this for sound is designed to accompany a user action, such as a click or beep sound made when the user presses a button. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="a17f63a064de966efddd5d0335992bc04"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a17f63a064de966efddd5d0335992bc04">&#9670;&nbsp;</a></span>InputPreset</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe::InputPreset</a> : aaudio_input_preset_t</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Defines the audio source. An audio source defines both a default physical source of audio signal, and a recording configuration.</p>
+<p>Note that these match the equivalent values in MediaRecorder.AudioSource in the Android Java API.</p>
+<p>Added in API level 28. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544"></a>Generic&#160;</td><td class="fielddoc"><p>Use this preset when other presets do not apply. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe"></a>Camcorder&#160;</td><td class="fielddoc"><p>Use this preset when recording video. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc"></a>VoiceRecognition&#160;</td><td class="fielddoc"><p>Use this preset when doing speech recognition. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d"></a>VoiceCommunication&#160;</td><td class="fielddoc"><p>Use this preset when doing telephony or voice messaging. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6"></a>VoiceCommunication&#160;</td><td class="fielddoc"><p>Use this for voice over IP, telephony, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f"></a>Unprocessed&#160;</td><td class="fielddoc"><p>Use this preset to obtain an input with no effects. Note that this input will not have automatic gain control so the recorded volume may be very low. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="a5752250c10e96179e3618d7f72937eaf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5752250c10e96179e3618d7f72937eaf">&#9670;&nbsp;</a></span>SessionId</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe::SessionId</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f"></a>None&#160;</td><td class="fielddoc"><p>Do not allocate a session ID. Effects cannot be used with this stream. Default.</p>
+<p>Added in API level 28. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123"></a>Allocate&#160;</td><td class="fielddoc"><p>Allocate a session ID that can be used to attach and control effects using the Java AudioEffects API. Note that the use of this flag may result in higher latency.</p>
+<p>Note that this matches the value of AudioManager.AUDIO_SESSION_ID_GENERATE.</p>
+<p>Added in API level 28. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="ae3a52556c58387e0cecba01f9abffdff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3a52556c58387e0cecba01f9abffdff">&#9670;&nbsp;</a></span>SharingMode</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe::SharingMode</a> : aaudio_sharing_mode_t</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971"></a>Exclusive&#160;</td><td class="fielddoc"><p>This will be the only stream using a particular source or sink. This mode will provide the lowest possible latency. You should close EXCLUSIVE streams immediately when you are not using them. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca"></a>Shared&#160;</td><td class="fielddoc"><p>Multiple applications will be mixed by the AAudio Server. This will have higher latency than the EXCLUSIVE mode. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a id="a1b2a1bdc891d640eb82724dcd9b7afbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b2a1bdc891d640eb82724dcd9b7afbb">&#9670;&nbsp;</a></span>Usage</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe::Usage</a> : aaudio_usage_t</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The Usage attribute expresses "why" you are playing a sound, what is this sound used for. This information is used by certain platforms or routing policies to make more refined volume or routing decisions.</p>
+<p>Note that these match the equivalent values in AudioAttributes in the Android Java API.</p>
+<p>Added in API level 28. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74"></a>Media&#160;</td><td class="fielddoc"><p>Use this for streaming media, music performance, video, podcasts, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6"></a>VoiceCommunication&#160;</td><td class="fielddoc"><p>Use this for voice over IP, telephony, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74"></a>VoiceCommunicationSignalling&#160;</td><td class="fielddoc"><p>Use this for sounds associated with telephony such as busy tones, DTMF, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4"></a>Alarm&#160;</td><td class="fielddoc"><p>Use this to demand the users attention. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71"></a>Notification&#160;</td><td class="fielddoc"><p>Use this for notifying the user when a message has arrived or some other background event has occured. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf"></a>NotificationRingtone&#160;</td><td class="fielddoc"><p>Use this when the phone rings. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f"></a>NotificationEvent&#160;</td><td class="fielddoc"><p>Use this to attract the users attention when, for example, the battery is low. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8"></a>AssistanceAccessibility&#160;</td><td class="fielddoc"><p>Use this for screen readers, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e"></a>AssistanceNavigationGuidance&#160;</td><td class="fielddoc"><p>Use this for driving or navigation directions. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7"></a>AssistanceSonification&#160;</td><td class="fielddoc"><p>Use this for user interface sounds, beeps, etcetera. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb"></a>Game&#160;</td><td class="fielddoc"><p>Use this for game audio and sound effects. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b"></a>Assistant&#160;</td><td class="fielddoc"><p>Use this for audio responses to user queries, audio instructions or help utterances. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ac67383a3df0f6e7a51f8415ffd9fdaca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac67383a3df0f6e7a51f8415ffd9fdaca">&#9670;&nbsp;</a></span>convertFormatToSizeInBytes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int32_t oboe::convertFormatToSizeInBytes </td>
+ <td>(</td>
+ <td class="paramtype">AudioFormat&#160;</td>
+ <td class="paramname"><em>format</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>the size of a sample of the given format in bytes or OBOE_ERROR_ILLEGAL_ARGUMENT </dd></dl>
+
+</div>
+</div>
+<a id="a8d1ae211254cc239019f165b607f4365"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d1ae211254cc239019f165b607f4365">&#9670;&nbsp;</a></span>convertToText()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename FromType &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* oboe::convertToText </td>
+ <td>(</td>
+ <td class="paramtype">FromType&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The text is the ASCII symbol corresponding to the supplied Oboe enum value, or an English message saying the value is unrecognized. This is intended for developers to use when debugging. It is not for displaying to users.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">enum</td><td>value </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd>common/Utilities.cpp for concrete implementations </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>text representation of an Oboe enum value. </dd></dl>
+
+</div>
+</div>
+<a id="a54528938e9fccab7ad8947ccf0e409db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54528938e9fccab7ad8947ccf0e409db">&#9670;&nbsp;</a></span>getSdkVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int oboe::getSdkVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Return the version of the SDK that is currently running.</p>
+<p>For example, on Android, this would return 27 for Oreo 8.1. If the version number cannot be determined then this will return -1.</p>
+<dl class="section return"><dt>Returns</dt><dd>version number or -1 </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00033.html b/docs/reference/a00033.html
new file mode 100644
index 00000000..ed9e94e3
--- /dev/null
+++ b/docs/reference/a00033.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00036.html">AudioStream</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::AudioStream Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00036.html">oboe::AudioStream</a>, including all inherited members.</p>
+<table class="directory">
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AudioStream</b>() (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AudioStream</b>(const AudioStreamBuilder &amp;builder) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AudioStreamBase</b>() (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AudioStreamBase</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#ae023cb001f3261d064f423101798d6be">calculateLatencyMillis</a>()</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">close</a>()=0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fireCallback</b>(void *audioData, int numFrames) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>flush</b>(int64_t timeoutNanoseconds=kDefaultTimeoutNanos) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">getAudioApi</a>() const =0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a>()</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getBytesPerFrame</b>() const (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getBytesPerSample</b>() const (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getCallback</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getContentType</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDeviceId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#ac160acb656515814fa6fdd157c131a0a">getFramesPerBurst</a>()=0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getFramesRead</b>() (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">getFramesWritten</a>()</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getInputPreset</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPerformanceMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSessionId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getSharingMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">getState</a>()=0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getTimestamp</b>(clockid_t clockId, int64_t *framePosition, int64_t *timeNanoseconds) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">getUnderlyingStream</a>() const</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getUsage</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">getXRunCount</a>() const</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>incrementFramesRead</b>(int32_t frames) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>incrementFramesWritten</b>(int32_t frames) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>isPlaying</b>() (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">isXRunCountSupported</a>() const =0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mBufferCapacityInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mBufferSizeInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mChannelCount</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mContentType</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mDeviceId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mDirection</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFormat</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mFramesPerBurst</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFramesPerCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mFramesRead</b> (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFramesWritten</b> (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mInputPreset</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mNativeFormat</b> (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mPerformanceMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mSampleRate</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mSessionId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mSharingMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mStreamCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mUsage</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#abda7ae8e6832030572785de3964ed848">onDefaultCallback</a>(void *audioData, int numFrames)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">open</a>()</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>pause</b>(int64_t timeoutNanoseconds=kDefaultTimeoutNanos) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>read</b>(void *buffer, int32_t numFrames, int64_t timeoutNanoseconds) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>requestFlush</b>()=0 (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>requestPause</b>()=0 (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>requestStart</b>()=0 (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>requestStop</b>()=0 (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">setBufferSizeInFrames</a>(int32_t requestedFrames)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setNativeFormat</b>(AudioFormat format) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>start</b>(int64_t timeoutNanoseconds=kDefaultTimeoutNanos) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stop</b>(int64_t timeoutNanoseconds=kDefaultTimeoutNanos) (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">usesAAudio</a>() const</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">waitForStateChange</a>(StreamState inputState, StreamState *nextState, int64_t timeoutNanoseconds)=0</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">waitForStateTransition</a>(StreamState startingState, StreamState endingState, int64_t timeoutNanoseconds)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">write</a>(const void *buffer, int32_t numFrames, int64_t timeoutNanoseconds)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~AudioStream</b>()=default (defined in <a class="el" href="a00036.html">oboe::AudioStream</a>)</td><td class="entry"><a class="el" href="a00036.html">oboe::AudioStream</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~AudioStreamBase</b>()=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00036.html b/docs/reference/a00036.html
new file mode 100644
index 00000000..f11a47e4
--- /dev/null
+++ b/docs/reference/a00036.html
@@ -0,0 +1,843 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::AudioStream Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00036.html">AudioStream</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="a00033.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::AudioStream Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="a00002_source.html">AudioStream.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for oboe::AudioStream:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="a00036.png" usemap="#oboe::AudioStream_map" alt=""/>
+ <map id="oboe::AudioStream_map" name="oboe::AudioStream_map">
+<area href="a00040.html" alt="oboe::AudioStreamBase" shape="rect" coords="0,0,146,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8ebb587a07bf62c864fd62c63b241fd4"><td class="memItemLeft" align="right" valign="top"><a id="a8ebb587a07bf62c864fd62c63b241fd4"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AudioStream</b> (const <a class="el" href="a00044.html">AudioStreamBuilder</a> &amp;builder)</td></tr>
+<tr class="separator:a8ebb587a07bf62c864fd62c63b241fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a686c6ce8a29051c858fd1de386805dc6"><td class="memItemLeft" align="right" valign="top">virtual Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">open</a> ()</td></tr>
+<tr class="separator:a686c6ce8a29051c858fd1de386805dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad33a20f0d6792e322b9d8a2bcf14fcf8"><td class="memItemLeft" align="right" valign="top">virtual Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">close</a> ()=0</td></tr>
+<tr class="separator:ad33a20f0d6792e322b9d8a2bcf14fcf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af04f03eb6b64b564f1c4401688987d21"><td class="memItemLeft" align="right" valign="top"><a id="af04f03eb6b64b564f1c4401688987d21"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>start</b> (int64_t timeoutNanoseconds=kDefaultTimeoutNanos)</td></tr>
+<tr class="separator:af04f03eb6b64b564f1c4401688987d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a04f29836748a8e5842aef2be200022ad"><td class="memItemLeft" align="right" valign="top"><a id="a04f29836748a8e5842aef2be200022ad"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>pause</b> (int64_t timeoutNanoseconds=kDefaultTimeoutNanos)</td></tr>
+<tr class="separator:a04f29836748a8e5842aef2be200022ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32c25c0333eab3d65ce02275ad4acb3d"><td class="memItemLeft" align="right" valign="top"><a id="a32c25c0333eab3d65ce02275ad4acb3d"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>flush</b> (int64_t timeoutNanoseconds=kDefaultTimeoutNanos)</td></tr>
+<tr class="separator:a32c25c0333eab3d65ce02275ad4acb3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aec093859d42f0470c884edd1e976d9f3"><td class="memItemLeft" align="right" valign="top"><a id="aec093859d42f0470c884edd1e976d9f3"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>stop</b> (int64_t timeoutNanoseconds=kDefaultTimeoutNanos)</td></tr>
+<tr class="separator:aec093859d42f0470c884edd1e976d9f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3c484e314dee8dfed1d419f487b5d601"><td class="memItemLeft" align="right" valign="top"><a id="a3c484e314dee8dfed1d419f487b5d601"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>requestStart</b> ()=0</td></tr>
+<tr class="separator:a3c484e314dee8dfed1d419f487b5d601"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f18bb3cc5490fd7fbc1f6da63c730f6"><td class="memItemLeft" align="right" valign="top"><a id="a7f18bb3cc5490fd7fbc1f6da63c730f6"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>requestPause</b> ()=0</td></tr>
+<tr class="separator:a7f18bb3cc5490fd7fbc1f6da63c730f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6bd5d633ff999e4da1faf3cd949aa602"><td class="memItemLeft" align="right" valign="top"><a id="a6bd5d633ff999e4da1faf3cd949aa602"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>requestFlush</b> ()=0</td></tr>
+<tr class="separator:a6bd5d633ff999e4da1faf3cd949aa602"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a820e634f741e6b5efdcef8104cecb919"><td class="memItemLeft" align="right" valign="top"><a id="a820e634f741e6b5efdcef8104cecb919"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>requestStop</b> ()=0</td></tr>
+<tr class="separator:a820e634f741e6b5efdcef8104cecb919"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a47bb5798275f14d76444283a6b6f35eb"><td class="memItemLeft" align="right" valign="top">virtual StreamState&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">getState</a> ()=0</td></tr>
+<tr class="separator:a47bb5798275f14d76444283a6b6f35eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c865a5501f369d959c39d8ab8b46a07"><td class="memItemLeft" align="right" valign="top">virtual Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">waitForStateChange</a> (StreamState inputState, StreamState *nextState, int64_t timeoutNanoseconds)=0</td></tr>
+<tr class="separator:a0c865a5501f369d959c39d8ab8b46a07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac93b18e18487e809151f63ec3c6228bb"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">setBufferSizeInFrames</a> (int32_t requestedFrames)</td></tr>
+<tr class="separator:ac93b18e18487e809151f63ec3c6228bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1a1d3bbf3b348ed92b7ed18ce9cc261"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">getXRunCount</a> () const</td></tr>
+<tr class="separator:ad1a1d3bbf3b348ed92b7ed18ce9cc261"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43d8a098440cde28f4ee8bedd6d107c4"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">isXRunCountSupported</a> () const =0</td></tr>
+<tr class="separator:a43d8a098440cde28f4ee8bedd6d107c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac160acb656515814fa6fdd157c131a0a"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ac160acb656515814fa6fdd157c131a0a">getFramesPerBurst</a> ()=0</td></tr>
+<tr class="separator:ac160acb656515814fa6fdd157c131a0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5260e2cc71108b1b2e694bf6162279f"><td class="memItemLeft" align="right" valign="top"><a id="ad5260e2cc71108b1b2e694bf6162279f"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>isPlaying</b> ()</td></tr>
+<tr class="separator:ad5260e2cc71108b1b2e694bf6162279f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c01907a59d5f89a5e4b819fe66b08bc"><td class="memItemLeft" align="right" valign="top"><a id="a5c01907a59d5f89a5e4b819fe66b08bc"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>getBytesPerFrame</b> () const</td></tr>
+<tr class="separator:a5c01907a59d5f89a5e4b819fe66b08bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44dda61e6e948e49b68f87172f084d62"><td class="memItemLeft" align="right" valign="top"><a id="a44dda61e6e948e49b68f87172f084d62"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>getBytesPerSample</b> () const</td></tr>
+<tr class="separator:a44dda61e6e948e49b68f87172f084d62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab43dd4074e1de57bac1c3fd111430341"><td class="memItemLeft" align="right" valign="top">virtual int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">getFramesWritten</a> ()</td></tr>
+<tr class="separator:ab43dd4074e1de57bac1c3fd111430341"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeebfc59abd978cd6dff07c16cfe266df"><td class="memItemLeft" align="right" valign="top"><a id="aeebfc59abd978cd6dff07c16cfe266df"></a>
+virtual int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>getFramesRead</b> ()</td></tr>
+<tr class="separator:aeebfc59abd978cd6dff07c16cfe266df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae023cb001f3261d064f423101798d6be"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ae023cb001f3261d064f423101798d6be">calculateLatencyMillis</a> ()</td></tr>
+<tr class="separator:ae023cb001f3261d064f423101798d6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d7cf4e43fb9d7b31857a90d9eceee6d"><td class="memItemLeft" align="right" valign="top"><a id="a1d7cf4e43fb9d7b31857a90d9eceee6d"></a>
+virtual Result&#160;</td><td class="memItemRight" valign="bottom"><b>getTimestamp</b> (clockid_t clockId, int64_t *framePosition, int64_t *timeNanoseconds)</td></tr>
+<tr class="separator:a1d7cf4e43fb9d7b31857a90d9eceee6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3f6bf8abed87f3804ac4df3472c3670"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">write</a> (const void *buffer, int32_t numFrames, int64_t timeoutNanoseconds)</td></tr>
+<tr class="separator:ab3f6bf8abed87f3804ac4df3472c3670"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acbf3933af829313d281b5455053338da"><td class="memItemLeft" align="right" valign="top"><a id="acbf3933af829313d281b5455053338da"></a>
+virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt; int32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>read</b> (void *buffer, int32_t numFrames, int64_t timeoutNanoseconds)</td></tr>
+<tr class="separator:acbf3933af829313d281b5455053338da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b7a3cee7444114843dbdd1fc705f6bb"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">getAudioApi</a> () const =0</td></tr>
+<tr class="separator:a2b7a3cee7444114843dbdd1fc705f6bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15cdaaaa4c1e8da322d6da33334c8147"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">usesAAudio</a> () const</td></tr>
+<tr class="separator:a15cdaaaa4c1e8da322d6da33334c8147"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5458d7130415eb4defe3dbc11d479e2f"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">getUnderlyingStream</a> () const</td></tr>
+<tr class="separator:a5458d7130415eb4defe3dbc11d479e2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_a00040"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00040')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00040.html">oboe::AudioStreamBase</a></td></tr>
+<tr class="memitem:aa6b103e1b0f808bbc4949d56f0829f98 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa6b103e1b0f808bbc4949d56f0829f98"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AudioStreamBase</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa6b103e1b0f808bbc4949d56f0829f98 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9c987a59555d7a60b9f7a63f4afc7fc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa9c987a59555d7a60b9f7a63f4afc7fc"></a>
+<a class="el" href="a00040.html">AudioStreamBase</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa9c987a59555d7a60b9f7a63f4afc7fc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0b0a068097efaf967fb235c55383dd8 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a> () const</td></tr>
+<tr class="separator:aa0b0a068097efaf967fb235c55383dd8 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f86f2233a04c5a0b056f0c1c261f1b1 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">Direction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a> () const</td></tr>
+<tr class="separator:a6f86f2233a04c5a0b056f0c1c261f1b1 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9d32f3e09174bad69e74f147ee33087 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a> () const</td></tr>
+<tr class="separator:ae9d32f3e09174bad69e74f147ee33087 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c133e1949f0814f60bd8bb61346756b inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a> () const</td></tr>
+<tr class="separator:a1c133e1949f0814f60bd8bb61346756b inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1e640461d7bf9d596decb913da7ac86 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a> () const</td></tr>
+<tr class="separator:ab1e640461d7bf9d596decb913da7ac86 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5217ab05bfde0d7637024b599302d0b inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a> ()</td></tr>
+<tr class="separator:af5217ab05bfde0d7637024b599302d0b inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1531253e64aaebe9e9eddbafb9098fc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a> () const</td></tr>
+<tr class="separator:ab1531253e64aaebe9e9eddbafb9098fc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fb033fc963f971bd1aa8f6707e49b41 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1fb033fc963f971bd1aa8f6707e49b41"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSharingMode</b> () const</td></tr>
+<tr class="separator:a1fb033fc963f971bd1aa8f6707e49b41 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ddb935de0e24dd7ae8e2cfbecac9fdc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a2ddb935de0e24dd7ae8e2cfbecac9fdc"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>getPerformanceMode</b> () const</td></tr>
+<tr class="separator:a2ddb935de0e24dd7ae8e2cfbecac9fdc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a093057d625bc896864b959974c265f21 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a093057d625bc896864b959974c265f21"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>getDeviceId</b> () const</td></tr>
+<tr class="separator:a093057d625bc896864b959974c265f21 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b4a2a191546708da657510c3cd6b797 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1b4a2a191546708da657510c3cd6b797"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getCallback</b> () const</td></tr>
+<tr class="separator:a1b4a2a191546708da657510c3cd6b797 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0bcfb2f8bd11c92b541fd910da9af397 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a0bcfb2f8bd11c92b541fd910da9af397"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getUsage</b> () const</td></tr>
+<tr class="separator:a0bcfb2f8bd11c92b541fd910da9af397 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab12e2d068fa87e0553b01a400d96eb82 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ab12e2d068fa87e0553b01a400d96eb82"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getContentType</b> () const</td></tr>
+<tr class="separator:ab12e2d068fa87e0553b01a400d96eb82 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c773b93b8aa38191c7199cab023428a inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5c773b93b8aa38191c7199cab023428a"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getInputPreset</b> () const</td></tr>
+<tr class="separator:a5c773b93b8aa38191c7199cab023428a inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3c502ce09bbad7690a2dd6acaf8892e inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa3c502ce09bbad7690a2dd6acaf8892e"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSessionId</b> () const</td></tr>
+<tr class="separator:aa3c502ce09bbad7690a2dd6acaf8892e inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:ad6b4c63f6ed1ecb509f7b80352a9c0bd"><td class="memItemLeft" align="right" valign="top"><a id="ad6b4c63f6ed1ecb509f7b80352a9c0bd"></a>
+virtual int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>incrementFramesWritten</b> (int32_t frames)</td></tr>
+<tr class="separator:ad6b4c63f6ed1ecb509f7b80352a9c0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a81568482a217b314498e2501210758d7"><td class="memItemLeft" align="right" valign="top"><a id="a81568482a217b314498e2501210758d7"></a>
+virtual int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>incrementFramesRead</b> (int32_t frames)</td></tr>
+<tr class="separator:a81568482a217b314498e2501210758d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8adbacd6a55a94a532916ab037fba1d6"><td class="memItemLeft" align="right" valign="top">virtual Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">waitForStateTransition</a> (StreamState startingState, StreamState endingState, int64_t timeoutNanoseconds)</td></tr>
+<tr class="separator:a8adbacd6a55a94a532916ab037fba1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abda7ae8e6832030572785de3964ed848"><td class="memItemLeft" align="right" valign="top">virtual DataCallbackResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#abda7ae8e6832030572785de3964ed848">onDefaultCallback</a> (void *audioData, int numFrames)</td></tr>
+<tr class="separator:abda7ae8e6832030572785de3964ed848"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c4fd19b01a4ef750dd9d6ae3a512eda"><td class="memItemLeft" align="right" valign="top"><a id="a0c4fd19b01a4ef750dd9d6ae3a512eda"></a>
+DataCallbackResult&#160;</td><td class="memItemRight" valign="bottom"><b>fireCallback</b> (void *audioData, int numFrames)</td></tr>
+<tr class="separator:a0c4fd19b01a4ef750dd9d6ae3a512eda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab01c37fca9110e916a482a909f5cc82d"><td class="memItemLeft" align="right" valign="top"><a id="ab01c37fca9110e916a482a909f5cc82d"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setNativeFormat</b> (AudioFormat format)</td></tr>
+<tr class="separator:ab01c37fca9110e916a482a909f5cc82d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a07ed6b5e5bd4bc276bc1e1fc08e51d60"><td class="memItemLeft" align="right" valign="top"><a id="a07ed6b5e5bd4bc276bc1e1fc08e51d60"></a>
+AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><b>mNativeFormat</b> = AudioFormat::Invalid</td></tr>
+<tr class="separator:a07ed6b5e5bd4bc276bc1e1fc08e51d60"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa88d2a712b91a8b763f2721d78480ba8"><td class="memItemLeft" align="right" valign="top"><a id="aa88d2a712b91a8b763f2721d78480ba8"></a>
+int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesWritten</b> = 0</td></tr>
+<tr class="separator:aa88d2a712b91a8b763f2721d78480ba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b9124ba3b0f564fa58b0651438250e7"><td class="memItemLeft" align="right" valign="top"><a id="a2b9124ba3b0f564fa58b0651438250e7"></a>
+int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesRead</b> = 0</td></tr>
+<tr class="separator:a2b9124ba3b0f564fa58b0651438250e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pro_attribs_a00040"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00040')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="a00040.html">oboe::AudioStreamBase</a></td></tr>
+<tr class="memitem:ae3f72318212dd9977d7fa0ced92c91f4 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ae3f72318212dd9977d7fa0ced92c91f4"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>mStreamCallback</b> = nullptr</td></tr>
+<tr class="separator:ae3f72318212dd9977d7fa0ced92c91f4 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3962eb94420ad0ecea70029236001899 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a3962eb94420ad0ecea70029236001899"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerCallback</b> = kUnspecified</td></tr>
+<tr class="separator:a3962eb94420ad0ecea70029236001899 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ff460bac9d14dfeac4eeddfcbb6e206 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5ff460bac9d14dfeac4eeddfcbb6e206"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mChannelCount</b> = kUnspecified</td></tr>
+<tr class="separator:a5ff460bac9d14dfeac4eeddfcbb6e206 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a998885bb6c4f37e145f4626ad4177dea inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a998885bb6c4f37e145f4626ad4177dea"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mSampleRate</b> = kUnspecified</td></tr>
+<tr class="separator:a998885bb6c4f37e145f4626ad4177dea inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23dafa12fb1a6242b088ebd5a52798c8 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a23dafa12fb1a6242b088ebd5a52798c8"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mDeviceId</b> = kUnspecified</td></tr>
+<tr class="separator:a23dafa12fb1a6242b088ebd5a52798c8 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac81d4719b350f8138aad1af38f0873b6 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ac81d4719b350f8138aad1af38f0873b6"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferCapacityInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:ac81d4719b350f8138aad1af38f0873b6 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b65595d26d1eae1b8ce9925a5b98f6a inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a3b65595d26d1eae1b8ce9925a5b98f6a"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferSizeInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:a3b65595d26d1eae1b8ce9925a5b98f6a inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54061319ed348329a29d883a5de2482e inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a54061319ed348329a29d883a5de2482e"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerBurst</b> = kUnspecified</td></tr>
+<tr class="separator:a54061319ed348329a29d883a5de2482e inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9187492b679c97a0963e264954be473 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ae9187492b679c97a0963e264954be473"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSharingMode</b> = <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a></td></tr>
+<tr class="separator:ae9187492b679c97a0963e264954be473 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7869f04836c2c2bdc10c7309ad4b8e09 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a7869f04836c2c2bdc10c7309ad4b8e09"></a>
+AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><b>mFormat</b> = AudioFormat::Unspecified</td></tr>
+<tr class="separator:a7869f04836c2c2bdc10c7309ad4b8e09 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26e9294721561d3b16bcaeec5faf4880 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a26e9294721561d3b16bcaeec5faf4880"></a>
+Direction&#160;</td><td class="memItemRight" valign="bottom"><b>mDirection</b> = Direction::Output</td></tr>
+<tr class="separator:a26e9294721561d3b16bcaeec5faf4880 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab99671c2d0552557e75dc7b4afe91765 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ab99671c2d0552557e75dc7b4afe91765"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>mPerformanceMode</b> = PerformanceMode::None</td></tr>
+<tr class="separator:ab99671c2d0552557e75dc7b4afe91765 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b518e82f39c9fcbd7050fd66adb253c inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5b518e82f39c9fcbd7050fd66adb253c"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mUsage</b> = <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a></td></tr>
+<tr class="separator:a5b518e82f39c9fcbd7050fd66adb253c inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f8f0e5add381b841856de80ea4cdb2b inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5f8f0e5add381b841856de80ea4cdb2b"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mContentType</b> = ContentType::Music</td></tr>
+<tr class="separator:a5f8f0e5add381b841856de80ea4cdb2b inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e5d4f5b30c4cc36f81ffd858cc00589 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1e5d4f5b30c4cc36f81ffd858cc00589"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mInputPreset</b> = InputPreset::VoiceRecognition</td></tr>
+<tr class="separator:a1e5d4f5b30c4cc36f81ffd858cc00589 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abe1c1e9cada1ced9b5c1504ac9b07737 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="abe1c1e9cada1ced9b5c1504ac9b07737"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSessionId</b> = SessionId::None</td></tr>
+<tr class="separator:abe1c1e9cada1ced9b5c1504ac9b07737 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Base class for Oboe C++ audio stream. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="ae023cb001f3261d064f423101798d6be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae023cb001f3261d064f423101798d6be">&#9670;&nbsp;</a></span>calculateLatencyMillis()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt;double&gt; oboe::AudioStream::calculateLatencyMillis </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Calculate the latency of a stream based on getTimestamp().</p>
+<p>Output latency is the time it takes for a given frame to travel from the app to some type of digital-to-analog converter. If the DAC is external, for example in a USB interface or a TV connected by HDMI, then there may be additional latency that the Android device is unaware of.</p>
+<p>Input latency is the time it takes to a given frame to travel from an analog-to-digital converter (ADC) to the app.</p>
+<p>Note that the latency of an OUTPUT stream will increase abruptly when you write data to it and then decrease slowly over time as the data is consumed.</p>
+<p>The latency of an INPUT stream will decrease abruptly when you read data from it and then increase slowly over time as more data arrives.</p>
+<p>The latency of an OUTPUT stream is generally higher than the INPUT latency because an app generally tries to keep the OUTPUT buffer full and the INPUT buffer empty.</p>
+<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="a00060.html">ResultWithValue</a> which has a result of Result::OK and a value containing the latency in milliseconds, or a result of Result::Error*. </dd></dl>
+
+</div>
+</div>
+<a id="ad33a20f0d6792e322b9d8a2bcf14fcf8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad33a20f0d6792e322b9d8a2bcf14fcf8">&#9670;&nbsp;</a></span>close()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual Result oboe::AudioStream::close </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Close the stream and deallocate any resources from the <a class="el" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">open()</a> call. </p>
+
+</div>
+</div>
+<a id="a2b7a3cee7444114843dbdd1fc705f6bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b7a3cee7444114843dbdd1fc705f6bb">&#9670;&nbsp;</a></span>getAudioApi()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> oboe::AudioStream::getAudioApi </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>the API that this stream uses </dd></dl>
+
+</div>
+</div>
+<a id="ac160acb656515814fa6fdd157c131a0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac160acb656515814fa6fdd157c131a0a">&#9670;&nbsp;</a></span>getFramesPerBurst()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int32_t oboe::AudioStream::getFramesPerBurst </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Query the number of frames that are read or written by the endpoint at one time.</p>
+<dl class="section return"><dt>Returns</dt><dd>burst size </dd></dl>
+
+</div>
+</div>
+<a id="ab43dd4074e1de57bac1c3fd111430341"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab43dd4074e1de57bac1c3fd111430341">&#9670;&nbsp;</a></span>getFramesWritten()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int64_t oboe::AudioStream::getFramesWritten </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This monotonic counter will never get reset. </p><dl class="section return"><dt>Returns</dt><dd>the number of frames written so far </dd></dl>
+
+</div>
+</div>
+<a id="a47bb5798275f14d76444283a6b6f35eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a47bb5798275f14d76444283a6b6f35eb">&#9670;&nbsp;</a></span>getState()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual StreamState oboe::AudioStream::getState </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Query the current state, eg. StreamState::Pausing</p>
+<dl class="section return"><dt>Returns</dt><dd>state or a negative error. </dd></dl>
+
+</div>
+</div>
+<a id="a5458d7130415eb4defe3dbc11d479e2f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5458d7130415eb4defe3dbc11d479e2f">&#9670;&nbsp;</a></span>getUnderlyingStream()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void* oboe::AudioStream::getUnderlyingStream </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Do not use this for production. This is only for debugging. If you need to call this method then something is wrong. If you think you need it for production then please let us know so we can modify Oboe so that you don't need this.</p>
+<dl class="section return"><dt>Returns</dt><dd>nullptr or a pointer to a stream from the system API </dd></dl>
+
+</div>
+</div>
+<a id="ad1a1d3bbf3b348ed92b7ed18ce9cc261"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1a1d3bbf3b348ed92b7ed18ce9cc261">&#9670;&nbsp;</a></span>getXRunCount()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt;int32_t&gt; oboe::AudioStream::getXRunCount </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>An XRun is an Underrun or an Overrun. During playing, an underrun will occur if the stream is not written in time and the system runs out of valid data. During recording, an overrun will occur if the stream is not read in time and there is no place to put the incoming data so it is discarded.</p>
+<p>An underrun or overrun can cause an audible "pop" or "glitch".</p>
+<dl class="section return"><dt>Returns</dt><dd>a result which is either Result::OK with the xRun count as the value, or a Result::Error* code </dd></dl>
+
+</div>
+</div>
+<a id="a43d8a098440cde28f4ee8bedd6d107c4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43d8a098440cde28f4ee8bedd6d107c4">&#9670;&nbsp;</a></span>isXRunCountSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool oboe::AudioStream::isXRunCountSupported </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>true if XRun counts are supported on the stream </dd></dl>
+
+</div>
+</div>
+<a id="abda7ae8e6832030572785de3964ed848"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abda7ae8e6832030572785de3964ed848">&#9670;&nbsp;</a></span>onDefaultCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual DataCallbackResult oboe::AudioStream::onDefaultCallback </td>
+ <td>(</td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>audioData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numFrames</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Override this to provide a default for when the application did not specify a callback.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">audioData</td><td></td></tr>
+ <tr><td class="paramname">numFrames</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>result </dd></dl>
+
+</div>
+</div>
+<a id="a686c6ce8a29051c858fd1de386805dc6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a686c6ce8a29051c858fd1de386805dc6">&#9670;&nbsp;</a></span>open()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual Result oboe::AudioStream::open </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Open a stream based on the current settings.</p>
+<p>Note that we do not recommend re-opening a stream that has been closed. TODO Should we prevent re-opening?</p>
+<dl class="section return"><dt>Returns</dt><dd></dd></dl>
+
+</div>
+</div>
+<a id="ac93b18e18487e809151f63ec3c6228bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac93b18e18487e809151f63ec3c6228bb">&#9670;&nbsp;</a></span>setBufferSizeInFrames()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt;int32_t&gt; oboe::AudioStream::setBufferSizeInFrames </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>requestedFrames</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This can be used to adjust the latency of the buffer by changing the threshold where blocking will occur. By combining this with <a class="el" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">getXRunCount()</a>, the latency can be tuned at run-time for each device.</p>
+<p>This cannot be set higher than getBufferCapacity().</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">requestedFrames</td><td>requested number of frames that can be filled without blocking </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the resulting buffer size in frames (obtained using value()) or an error (obtained using error()) </dd></dl>
+
+</div>
+</div>
+<a id="a15cdaaaa4c1e8da322d6da33334c8147"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15cdaaaa4c1e8da322d6da33334c8147">&#9670;&nbsp;</a></span>usesAAudio()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool oboe::AudioStream::usesAAudio </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>true if this stream is implemented using the AAudio API </dd></dl>
+
+</div>
+</div>
+<a id="a0c865a5501f369d959c39d8ab8b46a07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c865a5501f369d959c39d8ab8b46a07">&#9670;&nbsp;</a></span>waitForStateChange()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual Result oboe::AudioStream::waitForStateChange </td>
+ <td>(</td>
+ <td class="paramtype">StreamState&#160;</td>
+ <td class="paramname"><em>inputState</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">StreamState *&#160;</td>
+ <td class="paramname"><em>nextState</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int64_t&#160;</td>
+ <td class="paramname"><em>timeoutNanoseconds</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Wait until the stream's current state no longer matches the input state. The input state is passed to avoid race conditions caused by the state changing between calls.</p>
+<p>Note that generally applications do not need to call this. It is considered an advanced technique.</p>
+<pre><code>
+int64_t timeoutNanos = 500 * kNanosPerMillisecond; // arbitrary 1/2 second
+StreamState currentState = stream-&gt;<a class="el" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">getState()</a>;
+StreamState nextState = StreamState::Unknown;
+while (result == Result::OK &amp;&amp; currentState != StreamState::Paused) {
+ result = stream-&gt;waitForStateChange(
+ currentState, &amp;nextState, timeoutNanos);
+ currentState = nextState;
+}
+</code></pre><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">inputState</td><td>The state we want to avoid. </td></tr>
+ <tr><td class="paramname">nextState</td><td>Pointer to a variable that will be set to the new state. </td></tr>
+ <tr><td class="paramname">timeoutNanoseconds</td><td>The maximum time to wait in nanoseconds. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Result::OK or a Result::Error. </dd></dl>
+
+</div>
+</div>
+<a id="a8adbacd6a55a94a532916ab037fba1d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8adbacd6a55a94a532916ab037fba1d6">&#9670;&nbsp;</a></span>waitForStateTransition()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual Result oboe::AudioStream::waitForStateTransition </td>
+ <td>(</td>
+ <td class="paramtype">StreamState&#160;</td>
+ <td class="paramname"><em>startingState</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">StreamState&#160;</td>
+ <td class="paramname"><em>endingState</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int64_t&#160;</td>
+ <td class="paramname"><em>timeoutNanoseconds</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Wait for a transition from one state to another. </p><dl class="section return"><dt>Returns</dt><dd>OK if the endingState was observed, or ErrorUnexpectedState if any state that was not the startingState or endingState was observed or ErrorTimeout. </dd></dl>
+
+</div>
+</div>
+<a id="ab3f6bf8abed87f3804ac4df3472c3670"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3f6bf8abed87f3804ac4df3472c3670">&#9670;&nbsp;</a></span>write()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="a00060.html">ResultWithValue</a>&lt;int32_t&gt; oboe::AudioStream::write </td>
+ <td>(</td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>numFrames</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int64_t&#160;</td>
+ <td class="paramname"><em>timeoutNanoseconds</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A high level write that will wait until the write is complete or it runs out of time. If timeoutNanoseconds is zero then this call will not wait.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">stream</td><td>A stream created using OboeStream_Open(). </td></tr>
+ <tr><td class="paramname">buffer</td><td>The address of the first sample. </td></tr>
+ <tr><td class="paramname">numFrames</td><td>Number of frames to write. Only complete frames will be written. </td></tr>
+ <tr><td class="paramname">timeoutNanoseconds</td><td>Maximum number of nanoseconds to wait for completion. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="a00060.html">ResultWithValue</a> which has a result of Result::OK and a value containing the number of frames actually written, or result of Result::Error*. </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00002_source.html">AudioStream.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00036.png b/docs/reference/a00036.png
new file mode 100644
index 00000000..a479d653
--- /dev/null
+++ b/docs/reference/a00036.png
Binary files differ
diff --git a/docs/reference/a00037.html b/docs/reference/a00037.html
new file mode 100644
index 00000000..462cb3cf
--- /dev/null
+++ b/docs/reference/a00037.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00040.html">AudioStreamBase</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamBase Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00040.html">oboe::AudioStreamBase</a>, including all inherited members.</p>
+<table class="directory">
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AudioStreamBase</b>() (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AudioStreamBase</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a>()</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCallback</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getContentType</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeviceId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getInputPreset</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPerformanceMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSessionId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getSharingMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUsage</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mBufferCapacityInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mBufferSizeInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mChannelCount</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mContentType</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mDeviceId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mDirection</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFormat</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mFramesPerBurst</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFramesPerCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mInputPreset</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mPerformanceMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mSampleRate</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mSessionId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mSharingMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mStreamCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mUsage</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~AudioStreamBase</b>()=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00040.html b/docs/reference/a00040.html
new file mode 100644
index 00000000..9019feb7
--- /dev/null
+++ b/docs/reference/a00040.html
@@ -0,0 +1,388 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::AudioStreamBase Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00040.html">AudioStreamBase</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="a00037.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamBase Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="a00005_source.html">AudioStreamBase.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for oboe::AudioStreamBase:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="a00040.png" usemap="#oboe::AudioStreamBase_map" alt=""/>
+ <map id="oboe::AudioStreamBase_map" name="oboe::AudioStreamBase_map">
+<area href="a00036.html" alt="oboe::AudioStream" shape="rect" coords="0,56,158,80"/>
+<area href="a00044.html" alt="oboe::AudioStreamBuilder" shape="rect" coords="168,56,326,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aa6b103e1b0f808bbc4949d56f0829f98"><td class="memItemLeft" align="right" valign="top"><a id="aa6b103e1b0f808bbc4949d56f0829f98"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AudioStreamBase</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa6b103e1b0f808bbc4949d56f0829f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9c987a59555d7a60b9f7a63f4afc7fc"><td class="memItemLeft" align="right" valign="top"><a id="aa9c987a59555d7a60b9f7a63f4afc7fc"></a>
+<a class="el" href="a00040.html">AudioStreamBase</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa9c987a59555d7a60b9f7a63f4afc7fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0b0a068097efaf967fb235c55383dd8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a> () const</td></tr>
+<tr class="separator:aa0b0a068097efaf967fb235c55383dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f86f2233a04c5a0b056f0c1c261f1b1"><td class="memItemLeft" align="right" valign="top">Direction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a> () const</td></tr>
+<tr class="separator:a6f86f2233a04c5a0b056f0c1c261f1b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9d32f3e09174bad69e74f147ee33087"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a> () const</td></tr>
+<tr class="separator:ae9d32f3e09174bad69e74f147ee33087"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c133e1949f0814f60bd8bb61346756b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a> () const</td></tr>
+<tr class="separator:a1c133e1949f0814f60bd8bb61346756b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1e640461d7bf9d596decb913da7ac86"><td class="memItemLeft" align="right" valign="top">AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a> () const</td></tr>
+<tr class="separator:ab1e640461d7bf9d596decb913da7ac86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5217ab05bfde0d7637024b599302d0b"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a> ()</td></tr>
+<tr class="separator:af5217ab05bfde0d7637024b599302d0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1531253e64aaebe9e9eddbafb9098fc"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a> () const</td></tr>
+<tr class="separator:ab1531253e64aaebe9e9eddbafb9098fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fb033fc963f971bd1aa8f6707e49b41"><td class="memItemLeft" align="right" valign="top"><a id="a1fb033fc963f971bd1aa8f6707e49b41"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSharingMode</b> () const</td></tr>
+<tr class="separator:a1fb033fc963f971bd1aa8f6707e49b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ddb935de0e24dd7ae8e2cfbecac9fdc"><td class="memItemLeft" align="right" valign="top"><a id="a2ddb935de0e24dd7ae8e2cfbecac9fdc"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>getPerformanceMode</b> () const</td></tr>
+<tr class="separator:a2ddb935de0e24dd7ae8e2cfbecac9fdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a093057d625bc896864b959974c265f21"><td class="memItemLeft" align="right" valign="top"><a id="a093057d625bc896864b959974c265f21"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>getDeviceId</b> () const</td></tr>
+<tr class="separator:a093057d625bc896864b959974c265f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b4a2a191546708da657510c3cd6b797"><td class="memItemLeft" align="right" valign="top"><a id="a1b4a2a191546708da657510c3cd6b797"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getCallback</b> () const</td></tr>
+<tr class="separator:a1b4a2a191546708da657510c3cd6b797"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0bcfb2f8bd11c92b541fd910da9af397"><td class="memItemLeft" align="right" valign="top"><a id="a0bcfb2f8bd11c92b541fd910da9af397"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getUsage</b> () const</td></tr>
+<tr class="separator:a0bcfb2f8bd11c92b541fd910da9af397"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab12e2d068fa87e0553b01a400d96eb82"><td class="memItemLeft" align="right" valign="top"><a id="ab12e2d068fa87e0553b01a400d96eb82"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getContentType</b> () const</td></tr>
+<tr class="separator:ab12e2d068fa87e0553b01a400d96eb82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c773b93b8aa38191c7199cab023428a"><td class="memItemLeft" align="right" valign="top"><a id="a5c773b93b8aa38191c7199cab023428a"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getInputPreset</b> () const</td></tr>
+<tr class="separator:a5c773b93b8aa38191c7199cab023428a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3c502ce09bbad7690a2dd6acaf8892e"><td class="memItemLeft" align="right" valign="top"><a id="aa3c502ce09bbad7690a2dd6acaf8892e"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSessionId</b> () const</td></tr>
+<tr class="separator:aa3c502ce09bbad7690a2dd6acaf8892e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ae3f72318212dd9977d7fa0ced92c91f4"><td class="memItemLeft" align="right" valign="top"><a id="ae3f72318212dd9977d7fa0ced92c91f4"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>mStreamCallback</b> = nullptr</td></tr>
+<tr class="separator:ae3f72318212dd9977d7fa0ced92c91f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3962eb94420ad0ecea70029236001899"><td class="memItemLeft" align="right" valign="top"><a id="a3962eb94420ad0ecea70029236001899"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerCallback</b> = kUnspecified</td></tr>
+<tr class="separator:a3962eb94420ad0ecea70029236001899"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ff460bac9d14dfeac4eeddfcbb6e206"><td class="memItemLeft" align="right" valign="top"><a id="a5ff460bac9d14dfeac4eeddfcbb6e206"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mChannelCount</b> = kUnspecified</td></tr>
+<tr class="separator:a5ff460bac9d14dfeac4eeddfcbb6e206"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a998885bb6c4f37e145f4626ad4177dea"><td class="memItemLeft" align="right" valign="top"><a id="a998885bb6c4f37e145f4626ad4177dea"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mSampleRate</b> = kUnspecified</td></tr>
+<tr class="separator:a998885bb6c4f37e145f4626ad4177dea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23dafa12fb1a6242b088ebd5a52798c8"><td class="memItemLeft" align="right" valign="top"><a id="a23dafa12fb1a6242b088ebd5a52798c8"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mDeviceId</b> = kUnspecified</td></tr>
+<tr class="separator:a23dafa12fb1a6242b088ebd5a52798c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac81d4719b350f8138aad1af38f0873b6"><td class="memItemLeft" align="right" valign="top"><a id="ac81d4719b350f8138aad1af38f0873b6"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferCapacityInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:ac81d4719b350f8138aad1af38f0873b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b65595d26d1eae1b8ce9925a5b98f6a"><td class="memItemLeft" align="right" valign="top"><a id="a3b65595d26d1eae1b8ce9925a5b98f6a"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferSizeInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:a3b65595d26d1eae1b8ce9925a5b98f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54061319ed348329a29d883a5de2482e"><td class="memItemLeft" align="right" valign="top"><a id="a54061319ed348329a29d883a5de2482e"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerBurst</b> = kUnspecified</td></tr>
+<tr class="separator:a54061319ed348329a29d883a5de2482e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9187492b679c97a0963e264954be473"><td class="memItemLeft" align="right" valign="top"><a id="ae9187492b679c97a0963e264954be473"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSharingMode</b> = <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a></td></tr>
+<tr class="separator:ae9187492b679c97a0963e264954be473"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7869f04836c2c2bdc10c7309ad4b8e09"><td class="memItemLeft" align="right" valign="top"><a id="a7869f04836c2c2bdc10c7309ad4b8e09"></a>
+AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><b>mFormat</b> = AudioFormat::Unspecified</td></tr>
+<tr class="separator:a7869f04836c2c2bdc10c7309ad4b8e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26e9294721561d3b16bcaeec5faf4880"><td class="memItemLeft" align="right" valign="top"><a id="a26e9294721561d3b16bcaeec5faf4880"></a>
+Direction&#160;</td><td class="memItemRight" valign="bottom"><b>mDirection</b> = Direction::Output</td></tr>
+<tr class="separator:a26e9294721561d3b16bcaeec5faf4880"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab99671c2d0552557e75dc7b4afe91765"><td class="memItemLeft" align="right" valign="top"><a id="ab99671c2d0552557e75dc7b4afe91765"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>mPerformanceMode</b> = PerformanceMode::None</td></tr>
+<tr class="separator:ab99671c2d0552557e75dc7b4afe91765"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b518e82f39c9fcbd7050fd66adb253c"><td class="memItemLeft" align="right" valign="top"><a id="a5b518e82f39c9fcbd7050fd66adb253c"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mUsage</b> = <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a></td></tr>
+<tr class="separator:a5b518e82f39c9fcbd7050fd66adb253c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f8f0e5add381b841856de80ea4cdb2b"><td class="memItemLeft" align="right" valign="top"><a id="a5f8f0e5add381b841856de80ea4cdb2b"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mContentType</b> = ContentType::Music</td></tr>
+<tr class="separator:a5f8f0e5add381b841856de80ea4cdb2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e5d4f5b30c4cc36f81ffd858cc00589"><td class="memItemLeft" align="right" valign="top"><a id="a1e5d4f5b30c4cc36f81ffd858cc00589"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mInputPreset</b> = InputPreset::VoiceRecognition</td></tr>
+<tr class="separator:a1e5d4f5b30c4cc36f81ffd858cc00589"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abe1c1e9cada1ced9b5c1504ac9b07737"><td class="memItemLeft" align="right" valign="top"><a id="abe1c1e9cada1ced9b5c1504ac9b07737"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSessionId</b> = SessionId::None</td></tr>
+<tr class="separator:abe1c1e9cada1ced9b5c1504ac9b07737"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Base class containing parameters for Oboe streams and builders.</p>
+<p>OboeStreamBuilder can return OBOE_UNSPECIFIED or the requested value.</p>
+<p>OboeStream will generally return the actual final value, but <a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback()</a> can be unspecified even for a stream. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="ab1531253e64aaebe9e9eddbafb9098fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1531253e64aaebe9e9eddbafb9098fc">&#9670;&nbsp;</a></span>getBufferCapacityInFrames()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int32_t oboe::AudioStreamBase::getBufferCapacityInFrames </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>capacityInFrames or OBOE_UNSPECIFIED </dd></dl>
+
+</div>
+</div>
+<a id="af5217ab05bfde0d7637024b599302d0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5217ab05bfde0d7637024b599302d0b">&#9670;&nbsp;</a></span>getBufferSizeInFrames()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual int32_t oboe::AudioStreamBase::getBufferSizeInFrames </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Query the maximum number of frames that can be filled without blocking. If the stream has been closed the last known value will be returned.</p>
+<dl class="section return"><dt>Returns</dt><dd>buffer size </dd></dl>
+
+</div>
+</div>
+<a id="aa0b0a068097efaf967fb235c55383dd8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa0b0a068097efaf967fb235c55383dd8">&#9670;&nbsp;</a></span>getChannelCount()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int oboe::AudioStreamBase::getChannelCount </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>number of channels, for example 2 for stereo </dd></dl>
+
+</div>
+</div>
+<a id="a6f86f2233a04c5a0b056f0c1c261f1b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6f86f2233a04c5a0b056f0c1c261f1b1">&#9670;&nbsp;</a></span>getDirection()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">Direction oboe::AudioStreamBase::getDirection </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>Direction::Input or Direction::Output </dd></dl>
+
+</div>
+</div>
+<a id="ab1e640461d7bf9d596decb913da7ac86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1e640461d7bf9d596decb913da7ac86">&#9670;&nbsp;</a></span>getFormat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">AudioFormat oboe::AudioStreamBase::getFormat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>OBOE_AUDIO_FORMAT_PCM_FLOAT, OBOE_AUDIO_FORMAT_PCM_I16 or OBOE_AUDIO_FORMAT_UNSPECIFIED </dd></dl>
+
+</div>
+</div>
+<a id="a1c133e1949f0814f60bd8bb61346756b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1c133e1949f0814f60bd8bb61346756b">&#9670;&nbsp;</a></span>getFramesPerCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int oboe::AudioStreamBase::getFramesPerCallback </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>framesPerCallback or OBOE_UNSPECIFIED </dd></dl>
+
+</div>
+</div>
+<a id="ae9d32f3e09174bad69e74f147ee33087"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae9d32f3e09174bad69e74f147ee33087">&#9670;&nbsp;</a></span>getSampleRate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int32_t oboe::AudioStreamBase::getSampleRate </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>sample rate for the stream </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00005_source.html">AudioStreamBase.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00040.png b/docs/reference/a00040.png
new file mode 100644
index 00000000..b6af24aa
--- /dev/null
+++ b/docs/reference/a00040.png
Binary files differ
diff --git a/docs/reference/a00041.html b/docs/reference/a00041.html
new file mode 100644
index 00000000..eadf1392
--- /dev/null
+++ b/docs/reference/a00041.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00044.html">AudioStreamBuilder</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamBuilder Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00044.html">oboe::AudioStreamBuilder</a>, including all inherited members.</p>
+<table class="directory">
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AudioStreamBase</b>() (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AudioStreamBase</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AudioStreamBuilder</b>() (defined in <a class="el" href="a00044.html">oboe::AudioStreamBuilder</a>)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getAudioApi</b>() const (defined in <a class="el" href="a00044.html">oboe::AudioStreamBuilder</a>)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a>()</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getCallback</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getContentType</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getDeviceId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getInputPreset</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPerformanceMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a>() const</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getSessionId</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>getSharingMode</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUsage</b>() const (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a622732bbe5c6577356d749f7dc2108df">isAAudioRecommended</a>()</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">isAAudioSupported</a>()</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mBufferCapacityInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mBufferSizeInFrames</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mChannelCount</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mContentType</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mDeviceId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mDirection</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFormat</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mFramesPerBurst</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mFramesPerCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mInputPreset</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mPerformanceMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mSampleRate</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mSessionId</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mSharingMode</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>mStreamCallback</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mUsage</b> (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">openStream</a>(AudioStream **stream)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const AudioStreamBase &amp;)=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">setAudioApi</a>(AudioApi audioApi)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">setBufferCapacityInFrames</a>(int32_t bufferCapacityInFrames)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a698cefa9af73bc97c020c004821fccbd">setCallback</a>(AudioStreamCallback *streamCallback)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">setChannelCount</a>(int channelCount)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">setContentType</a>(ContentType contentType)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">setDeviceId</a>(int32_t deviceId)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#ab3fbd47b06197619c26393637e26354c">setDirection</a>(Direction direction)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">setFormat</a>(AudioFormat format)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a3f397821f61eabaeedaf31064c859a54">setFramesPerCallback</a>(int framesPerCallback)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">setInputPreset</a>(InputPreset inputPreset)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">setPerformanceMode</a>(PerformanceMode performanceMode)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">setSampleRate</a>(int32_t sampleRate)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">setSessionId</a>(SessionId sessionId)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">setSharingMode</a>(SharingMode sharingMode)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">setUsage</a>(Usage usage)</td><td class="entry"><a class="el" href="a00044.html">oboe::AudioStreamBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~AudioStreamBase</b>()=default (defined in <a class="el" href="a00040.html">oboe::AudioStreamBase</a>)</td><td class="entry"><a class="el" href="a00040.html">oboe::AudioStreamBase</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00044.html b/docs/reference/a00044.html
new file mode 100644
index 00000000..b99f99b0
--- /dev/null
+++ b/docs/reference/a00044.html
@@ -0,0 +1,842 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::AudioStreamBuilder Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00044.html">AudioStreamBuilder</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="a00041.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamBuilder Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="a00008_source.html">AudioStreamBuilder.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for oboe::AudioStreamBuilder:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="a00044.png" usemap="#oboe::AudioStreamBuilder_map" alt=""/>
+ <map id="oboe::AudioStreamBuilder_map" name="oboe::AudioStreamBuilder_map">
+<area href="a00040.html" alt="oboe::AudioStreamBase" shape="rect" coords="0,0,158,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a075d10291e1f998d90c2f73ef767b5a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">setChannelCount</a> (int channelCount)</td></tr>
+<tr class="separator:a075d10291e1f998d90c2f73ef767b5a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3fbd47b06197619c26393637e26354c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#ab3fbd47b06197619c26393637e26354c">setDirection</a> (Direction direction)</td></tr>
+<tr class="separator:ab3fbd47b06197619c26393637e26354c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a30ef3d5f51d56a9f980dc09600ed139d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">setSampleRate</a> (int32_t sampleRate)</td></tr>
+<tr class="separator:a30ef3d5f51d56a9f980dc09600ed139d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3f397821f61eabaeedaf31064c859a54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a3f397821f61eabaeedaf31064c859a54">setFramesPerCallback</a> (int framesPerCallback)</td></tr>
+<tr class="separator:a3f397821f61eabaeedaf31064c859a54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2e1d2d73cd6c2eb9f349bf2fe5f6515"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">setFormat</a> (AudioFormat format)</td></tr>
+<tr class="separator:aa2e1d2d73cd6c2eb9f349bf2fe5f6515"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abaff480867af51ca0899bfa6fd7cc3ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">setBufferCapacityInFrames</a> (int32_t bufferCapacityInFrames)</td></tr>
+<tr class="separator:abaff480867af51ca0899bfa6fd7cc3ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9d41811c297fd28bc61833f640bb8d0"><td class="memItemLeft" align="right" valign="top"><a id="ac9d41811c297fd28bc61833f640bb8d0"></a>
+<a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getAudioApi</b> () const</td></tr>
+<tr class="separator:ac9d41811c297fd28bc61833f640bb8d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a38c6d6c5e718df1e3ac69daaac47c391"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">setAudioApi</a> (<a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a> audioApi)</td></tr>
+<tr class="separator:a38c6d6c5e718df1e3ac69daaac47c391"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3e991742acbbfb6fe5ebcf592c478654"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">setSharingMode</a> (<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a> sharingMode)</td></tr>
+<tr class="separator:a3e991742acbbfb6fe5ebcf592c478654"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6cd1d65612e844e59da71a68ea0ab3ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">setPerformanceMode</a> (PerformanceMode performanceMode)</td></tr>
+<tr class="separator:a6cd1d65612e844e59da71a68ea0ab3ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a593255a2f5eb972665775cfc5bc58f6a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">setUsage</a> (<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a> usage)</td></tr>
+<tr class="separator:a593255a2f5eb972665775cfc5bc58f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6a17bafc217c2b624179fbbf77fe4468"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">setContentType</a> (<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a> contentType)</td></tr>
+<tr class="separator:a6a17bafc217c2b624179fbbf77fe4468"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a144a3d095fd668210282f1a91f23e1f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">setInputPreset</a> (<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a> inputPreset)</td></tr>
+<tr class="separator:a144a3d095fd668210282f1a91f23e1f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54c1651bdbe089d0d714af499e8a5f1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">setSessionId</a> (<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a> sessionId)</td></tr>
+<tr class="separator:a54c1651bdbe089d0d714af499e8a5f1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af36ddcd00686a9e1de661bdac0685a8e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">setDeviceId</a> (int32_t deviceId)</td></tr>
+<tr class="separator:af36ddcd00686a9e1de661bdac0685a8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a698cefa9af73bc97c020c004821fccbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a698cefa9af73bc97c020c004821fccbd">setCallback</a> (<a class="el" href="a00048.html">AudioStreamCallback</a> *streamCallback)</td></tr>
+<tr class="separator:a698cefa9af73bc97c020c004821fccbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86b94cfa47729bef2e04dce1a9086074"><td class="memItemLeft" align="right" valign="top">Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">openStream</a> (<a class="el" href="a00036.html">AudioStream</a> **stream)</td></tr>
+<tr class="separator:a86b94cfa47729bef2e04dce1a9086074"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_a00040"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00040')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="a00040.html">oboe::AudioStreamBase</a></td></tr>
+<tr class="memitem:aa6b103e1b0f808bbc4949d56f0829f98 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa6b103e1b0f808bbc4949d56f0829f98"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AudioStreamBase</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa6b103e1b0f808bbc4949d56f0829f98 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9c987a59555d7a60b9f7a63f4afc7fc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa9c987a59555d7a60b9f7a63f4afc7fc"></a>
+<a class="el" href="a00040.html">AudioStreamBase</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00040.html">AudioStreamBase</a> &amp;)=default</td></tr>
+<tr class="separator:aa9c987a59555d7a60b9f7a63f4afc7fc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0b0a068097efaf967fb235c55383dd8 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">getChannelCount</a> () const</td></tr>
+<tr class="separator:aa0b0a068097efaf967fb235c55383dd8 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f86f2233a04c5a0b056f0c1c261f1b1 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">Direction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">getDirection</a> () const</td></tr>
+<tr class="separator:a6f86f2233a04c5a0b056f0c1c261f1b1 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9d32f3e09174bad69e74f147ee33087 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">getSampleRate</a> () const</td></tr>
+<tr class="separator:ae9d32f3e09174bad69e74f147ee33087 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1c133e1949f0814f60bd8bb61346756b inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">getFramesPerCallback</a> () const</td></tr>
+<tr class="separator:a1c133e1949f0814f60bd8bb61346756b inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1e640461d7bf9d596decb913da7ac86 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">getFormat</a> () const</td></tr>
+<tr class="separator:ab1e640461d7bf9d596decb913da7ac86 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5217ab05bfde0d7637024b599302d0b inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">getBufferSizeInFrames</a> ()</td></tr>
+<tr class="separator:af5217ab05bfde0d7637024b599302d0b inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1531253e64aaebe9e9eddbafb9098fc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top">virtual int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">getBufferCapacityInFrames</a> () const</td></tr>
+<tr class="separator:ab1531253e64aaebe9e9eddbafb9098fc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fb033fc963f971bd1aa8f6707e49b41 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1fb033fc963f971bd1aa8f6707e49b41"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSharingMode</b> () const</td></tr>
+<tr class="separator:a1fb033fc963f971bd1aa8f6707e49b41 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ddb935de0e24dd7ae8e2cfbecac9fdc inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a2ddb935de0e24dd7ae8e2cfbecac9fdc"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>getPerformanceMode</b> () const</td></tr>
+<tr class="separator:a2ddb935de0e24dd7ae8e2cfbecac9fdc inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a093057d625bc896864b959974c265f21 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a093057d625bc896864b959974c265f21"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>getDeviceId</b> () const</td></tr>
+<tr class="separator:a093057d625bc896864b959974c265f21 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b4a2a191546708da657510c3cd6b797 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1b4a2a191546708da657510c3cd6b797"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getCallback</b> () const</td></tr>
+<tr class="separator:a1b4a2a191546708da657510c3cd6b797 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0bcfb2f8bd11c92b541fd910da9af397 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a0bcfb2f8bd11c92b541fd910da9af397"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getUsage</b> () const</td></tr>
+<tr class="separator:a0bcfb2f8bd11c92b541fd910da9af397 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab12e2d068fa87e0553b01a400d96eb82 inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ab12e2d068fa87e0553b01a400d96eb82"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getContentType</b> () const</td></tr>
+<tr class="separator:ab12e2d068fa87e0553b01a400d96eb82 inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c773b93b8aa38191c7199cab023428a inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5c773b93b8aa38191c7199cab023428a"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getInputPreset</b> () const</td></tr>
+<tr class="separator:a5c773b93b8aa38191c7199cab023428a inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3c502ce09bbad7690a2dd6acaf8892e inherit pub_methods_a00040"><td class="memItemLeft" align="right" valign="top"><a id="aa3c502ce09bbad7690a2dd6acaf8892e"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getSessionId</b> () const</td></tr>
+<tr class="separator:aa3c502ce09bbad7690a2dd6acaf8892e inherit pub_methods_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a18e7b5f7554a4c2ca763e35e8117d699"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">isAAudioSupported</a> ()</td></tr>
+<tr class="separator:a18e7b5f7554a4c2ca763e35e8117d699"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a622732bbe5c6577356d749f7dc2108df"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#a622732bbe5c6577356d749f7dc2108df">isAAudioRecommended</a> ()</td></tr>
+<tr class="separator:a622732bbe5c6577356d749f7dc2108df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00040"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00040')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="a00040.html">oboe::AudioStreamBase</a></td></tr>
+<tr class="memitem:ae3f72318212dd9977d7fa0ced92c91f4 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ae3f72318212dd9977d7fa0ced92c91f4"></a>
+<a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>mStreamCallback</b> = nullptr</td></tr>
+<tr class="separator:ae3f72318212dd9977d7fa0ced92c91f4 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3962eb94420ad0ecea70029236001899 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a3962eb94420ad0ecea70029236001899"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerCallback</b> = kUnspecified</td></tr>
+<tr class="separator:a3962eb94420ad0ecea70029236001899 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ff460bac9d14dfeac4eeddfcbb6e206 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5ff460bac9d14dfeac4eeddfcbb6e206"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mChannelCount</b> = kUnspecified</td></tr>
+<tr class="separator:a5ff460bac9d14dfeac4eeddfcbb6e206 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a998885bb6c4f37e145f4626ad4177dea inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a998885bb6c4f37e145f4626ad4177dea"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mSampleRate</b> = kUnspecified</td></tr>
+<tr class="separator:a998885bb6c4f37e145f4626ad4177dea inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23dafa12fb1a6242b088ebd5a52798c8 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a23dafa12fb1a6242b088ebd5a52798c8"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mDeviceId</b> = kUnspecified</td></tr>
+<tr class="separator:a23dafa12fb1a6242b088ebd5a52798c8 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac81d4719b350f8138aad1af38f0873b6 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ac81d4719b350f8138aad1af38f0873b6"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferCapacityInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:ac81d4719b350f8138aad1af38f0873b6 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b65595d26d1eae1b8ce9925a5b98f6a inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a3b65595d26d1eae1b8ce9925a5b98f6a"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mBufferSizeInFrames</b> = kUnspecified</td></tr>
+<tr class="separator:a3b65595d26d1eae1b8ce9925a5b98f6a inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54061319ed348329a29d883a5de2482e inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a54061319ed348329a29d883a5de2482e"></a>
+int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>mFramesPerBurst</b> = kUnspecified</td></tr>
+<tr class="separator:a54061319ed348329a29d883a5de2482e inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9187492b679c97a0963e264954be473 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ae9187492b679c97a0963e264954be473"></a>
+<a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSharingMode</b> = <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a></td></tr>
+<tr class="separator:ae9187492b679c97a0963e264954be473 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7869f04836c2c2bdc10c7309ad4b8e09 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a7869f04836c2c2bdc10c7309ad4b8e09"></a>
+AudioFormat&#160;</td><td class="memItemRight" valign="bottom"><b>mFormat</b> = AudioFormat::Unspecified</td></tr>
+<tr class="separator:a7869f04836c2c2bdc10c7309ad4b8e09 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26e9294721561d3b16bcaeec5faf4880 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a26e9294721561d3b16bcaeec5faf4880"></a>
+Direction&#160;</td><td class="memItemRight" valign="bottom"><b>mDirection</b> = Direction::Output</td></tr>
+<tr class="separator:a26e9294721561d3b16bcaeec5faf4880 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab99671c2d0552557e75dc7b4afe91765 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="ab99671c2d0552557e75dc7b4afe91765"></a>
+PerformanceMode&#160;</td><td class="memItemRight" valign="bottom"><b>mPerformanceMode</b> = PerformanceMode::None</td></tr>
+<tr class="separator:ab99671c2d0552557e75dc7b4afe91765 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5b518e82f39c9fcbd7050fd66adb253c inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5b518e82f39c9fcbd7050fd66adb253c"></a>
+<a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mUsage</b> = <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a></td></tr>
+<tr class="separator:a5b518e82f39c9fcbd7050fd66adb253c inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f8f0e5add381b841856de80ea4cdb2b inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a5f8f0e5add381b841856de80ea4cdb2b"></a>
+<a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mContentType</b> = ContentType::Music</td></tr>
+<tr class="separator:a5f8f0e5add381b841856de80ea4cdb2b inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e5d4f5b30c4cc36f81ffd858cc00589 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="a1e5d4f5b30c4cc36f81ffd858cc00589"></a>
+<a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mInputPreset</b> = InputPreset::VoiceRecognition</td></tr>
+<tr class="separator:a1e5d4f5b30c4cc36f81ffd858cc00589 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abe1c1e9cada1ced9b5c1504ac9b07737 inherit pro_attribs_a00040"><td class="memItemLeft" align="right" valign="top"><a id="abe1c1e9cada1ced9b5c1504ac9b07737"></a>
+<a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mSessionId</b> = SessionId::None</td></tr>
+<tr class="separator:abe1c1e9cada1ced9b5c1504ac9b07737 inherit pro_attribs_a00040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Factory class for an audio Stream. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a622732bbe5c6577356d749f7dc2108df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a622732bbe5c6577356d749f7dc2108df">&#9670;&nbsp;</a></span>isAAudioRecommended()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool oboe::AudioStreamBuilder::isAAudioRecommended </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Is the AAudio API recommended this device?</p>
+<p>AAudio may be supported but not recommended because of version specific issues.</p>
+<dl class="section return"><dt>Returns</dt><dd>true if recommended </dd></dl>
+
+</div>
+</div>
+<a id="a18e7b5f7554a4c2ca763e35e8117d699"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a18e7b5f7554a4c2ca763e35e8117d699">&#9670;&nbsp;</a></span>isAAudioSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool oboe::AudioStreamBuilder::isAAudioSupported </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Is the AAudio API supported on this device?</p>
+<p>AAudio was introduced in the Oreo release.</p>
+<dl class="section return"><dt>Returns</dt><dd>true if supported </dd></dl>
+
+</div>
+</div>
+<a id="a86b94cfa47729bef2e04dce1a9086074"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86b94cfa47729bef2e04dce1a9086074">&#9670;&nbsp;</a></span>openStream()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Result oboe::AudioStreamBuilder::openStream </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00036.html">AudioStream</a> **&#160;</td>
+ <td class="paramname"><em>stream</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create and open a stream object based on the current settings.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">stream</td><td>pointer to a variable to receive the stream address </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>OBOE_OK if successful or a negative error code </dd></dl>
+
+</div>
+</div>
+<a id="a38c6d6c5e718df1e3ac69daaac47c391"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38c6d6c5e718df1e3ac69daaac47c391">&#9670;&nbsp;</a></span>setAudioApi()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setAudioApi </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">AudioApi</a>&#160;</td>
+ <td class="paramname"><em>audioApi</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>If you leave this unspecified then Oboe will choose the best API for the device and SDK version at runtime.</p>
+<p>If the caller requests AAudio and it is supported then AAudio will be used.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">audioApi</td><td>Must be AudioApi::Unspecified, <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b">AudioApi::OpenSLES</a> or <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b">AudioApi::AAudio</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="abaff480867af51ca0899bfa6fd7cc3ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abaff480867af51ca0899bfa6fd7cc3ef">&#9670;&nbsp;</a></span>setBufferCapacityInFrames()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setBufferCapacityInFrames </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>bufferCapacityInFrames</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Set the requested maximum buffer capacity in frames. The final stream capacity may differ, but will probably be at least this big.</p>
+<p>Default is kUnspecified.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">bufferCapacityInFrames</td><td>the desired buffer capacity in frames or kUnspecified </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="a698cefa9af73bc97c020c004821fccbd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a698cefa9af73bc97c020c004821fccbd">&#9670;&nbsp;</a></span>setCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00048.html">AudioStreamCallback</a> *&#160;</td>
+ <td class="paramname"><em>streamCallback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Specifies an object to handle data or error related callbacks from the underlying API.</p>
+<p>When an error callback occurs, the associated stream will be stopped and closed in a separate thread.</p>
+<p>A note on why the streamCallback parameter is a raw pointer rather than a smart pointer:</p>
+<p>The caller should retain ownership of the object streamCallback points to. At first glance weak_ptr may seem like a good candidate for streamCallback as this implies temporary ownership. However, a weak_ptr can only be created from a shared_ptr. A shared_ptr incurs some performance overhead. The callback object is likely to be accessed every few milliseconds when the stream requires new data so this overhead is something we want to avoid.</p>
+<p>This leaves a raw pointer as the logical type choice. The only caveat being that the caller must not destroy the callback before the stream has been closed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">streamCallback</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="a075d10291e1f998d90c2f73ef767b5a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a075d10291e1f998d90c2f73ef767b5a7">&#9670;&nbsp;</a></span>setChannelCount()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setChannelCount </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>channelCount</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a specific number of channels.</p>
+<p>Default is kUnspecified. If the value is unspecified then the application should query for the actual value after the stream is opened. </p>
+
+</div>
+</div>
+<a id="a6a17bafc217c2b624179fbbf77fe4468"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a17bafc217c2b624179fbbf77fe4468">&#9670;&nbsp;</a></span>setContentType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setContentType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">ContentType</a>&#160;</td>
+ <td class="paramname"><em>contentType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Set the type of audio data that the stream will carry.</p>
+<p>The system will use this information to optimize the behavior of the stream. This could, for example, affect whether a stream is paused when a notification occurs.</p>
+<p>The default, if you do not call this function, is ContentType::Music.</p>
+<p>Added in API level 28.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">contentType</td><td>the type of audio data, eg. ContentType::Speech </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="af36ddcd00686a9e1de661bdac0685a8e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af36ddcd00686a9e1de661bdac0685a8e">&#9670;&nbsp;</a></span>setDeviceId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setDeviceId </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>deviceId</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request an audio device identified device using an ID. On Android, for example, the ID could be obtained from the Java AudioManager.</p>
+<p>By default, the primary device will be used.</p>
+<p>Note that when using OpenSL ES, this will be ignored and the created stream will have deviceId kUnspecified.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">deviceId</td><td>device identifier or kUnspecified </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="ab3fbd47b06197619c26393637e26354c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3fbd47b06197619c26393637e26354c">&#9670;&nbsp;</a></span>setDirection()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setDirection </td>
+ <td>(</td>
+ <td class="paramtype">Direction&#160;</td>
+ <td class="paramname"><em>direction</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request the direction for a stream. The default is Direction::Output.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">direction</td><td>Direction::Output or Direction::Input </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="aa2e1d2d73cd6c2eb9f349bf2fe5f6515"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">&#9670;&nbsp;</a></span>setFormat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setFormat </td>
+ <td>(</td>
+ <td class="paramtype">AudioFormat&#160;</td>
+ <td class="paramname"><em>format</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a sample data format, for example Format::Float.</p>
+<p>Default is Format::Unspecified. If the value is unspecified then the application should query for the actual value after the stream is opened. </p>
+
+</div>
+</div>
+<a id="a3f397821f61eabaeedaf31064c859a54"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3f397821f61eabaeedaf31064c859a54">&#9670;&nbsp;</a></span>setFramesPerCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setFramesPerCallback </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>framesPerCallback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a specific number of frames for the data callback.</p>
+<p>Default is kUnspecified. If the value is unspecified then the actual number may vary from callback to callback.</p>
+<p>If an application can handle a varying number of frames then we recommend leaving this unspecified. This allow the underlying API to optimize the callbacks. But if your application is, for example, doing FFTs or other block oriented operations, then call this function to get the sizes you need.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">framesPerCallback</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="a144a3d095fd668210282f1a91f23e1f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a144a3d095fd668210282f1a91f23e1f0">&#9670;&nbsp;</a></span>setInputPreset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setInputPreset </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">InputPreset</a>&#160;</td>
+ <td class="paramname"><em>inputPreset</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Set the input (capture) preset for the stream.</p>
+<p>The system will use this information to optimize the behavior of the stream. This could, for example, affect which microphones are used and how the recorded data is processed.</p>
+<p>The default, if you do not call this function, is InputPreset::VoiceRecognition. That is because VoiceRecognition is the preset with the lowest latency on many platforms.</p>
+<p>Added in API level 28.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">inputPreset</td><td>the desired configuration for recording </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="a6cd1d65612e844e59da71a68ea0ab3ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6cd1d65612e844e59da71a68ea0ab3ee">&#9670;&nbsp;</a></span>setPerformanceMode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setPerformanceMode </td>
+ <td>(</td>
+ <td class="paramtype">PerformanceMode&#160;</td>
+ <td class="paramname"><em>performanceMode</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a performance level for the stream. This will determine the latency, the power consumption, and the level of protection from glitches.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">performanceMode</td><td>for example, PerformanceMode::LowLatency </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="a30ef3d5f51d56a9f980dc09600ed139d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a30ef3d5f51d56a9f980dc09600ed139d">&#9670;&nbsp;</a></span>setSampleRate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setSampleRate </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>sampleRate</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a specific sample rate in Hz.</p>
+<p>Default is kUnspecified. If the value is unspecified then the application should query for the actual value after the stream is opened.</p>
+<p>Technically, this should be called the "frame rate" or "frames per second", because it refers to the number of complete frames transferred per second. But it is traditionally called "sample rate". Se we use that term. </p>
+
+</div>
+</div>
+<a id="a54c1651bdbe089d0d714af499e8a5f1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54c1651bdbe089d0d714af499e8a5f1d">&#9670;&nbsp;</a></span>setSessionId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setSessionId </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">SessionId</a>&#160;</td>
+ <td class="paramname"><em>sessionId</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Set the requested session ID.</p>
+<p>The session ID can be used to associate a stream with effects processors. The effects are controlled using the Android AudioEffect Java API.</p>
+<p>The default, if you do not call this function, is SessionId::None.</p>
+<p>If set to SessionId::Allocate then a session ID will be allocated when the stream is opened.</p>
+<p>The allocated session ID can be obtained by calling AudioStream::getSessionId() and then used with this function when opening another stream. This allows effects to be shared between streams.</p>
+<p>Session IDs from Oboe can be used the Android Java APIs and vice versa. So a session ID from an Oboe stream can be passed to Java and effects applied using the Java AudioEffect API.</p>
+<p>Allocated session IDs will always be positive and nonzero.</p>
+<p>Added in API level 28.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sessionId</td><td>an allocated sessionID or SessionId::Allocate </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="a3e991742acbbfb6fe5ebcf592c478654"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e991742acbbfb6fe5ebcf592c478654">&#9670;&nbsp;</a></span>setSharingMode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setSharingMode </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">SharingMode</a>&#160;</td>
+ <td class="paramname"><em>sharingMode</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Request a mode for sharing the device. The requested sharing mode may not be available. So the application should query for the actual mode after the stream is opened.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sharingMode</td><td><a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca">SharingMode::Shared</a> or <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971">SharingMode::Exclusive</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>pointer to the builder so calls can be chained </dd></dl>
+
+</div>
+</div>
+<a id="a593255a2f5eb972665775cfc5bc58f6a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a593255a2f5eb972665775cfc5bc58f6a">&#9670;&nbsp;</a></span>setUsage()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00044.html">AudioStreamBuilder</a>* oboe::AudioStreamBuilder::setUsage </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">Usage</a>&#160;</td>
+ <td class="paramname"><em>usage</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Set the intended use case for the stream.</p>
+<p>The system will use this information to optimize the behavior of the stream. This could, for example, affect how volume and focus is handled for the stream.</p>
+<p>The default, if you do not call this function, is <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74">Usage::Media</a>.</p>
+<p>Added in API level 28.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">usage</td><td>the desired usage, eg. <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb">Usage::Game</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00008_source.html">AudioStreamBuilder.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00044.png b/docs/reference/a00044.png
new file mode 100644
index 00000000..5ce65566
--- /dev/null
+++ b/docs/reference/a00044.png
Binary files differ
diff --git a/docs/reference/a00045.html b/docs/reference/a00045.html
new file mode 100644
index 00000000..f3d02d03
--- /dev/null
+++ b/docs/reference/a00045.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00048.html">AudioStreamCallback</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamCallback Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00048.html">oboe::AudioStreamCallback</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">onAudioReady</a>(AudioStream *oboeStream, void *audioData, int32_t numFrames)=0</td><td class="entry"><a class="el" href="a00048.html">oboe::AudioStreamCallback</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">onErrorAfterClose</a>(AudioStream *oboeStream, Result error)</td><td class="entry"><a class="el" href="a00048.html">oboe::AudioStreamCallback</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">onErrorBeforeClose</a>(AudioStream *oboeStream, Result error)</td><td class="entry"><a class="el" href="a00048.html">oboe::AudioStreamCallback</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~AudioStreamCallback</b>()=default (defined in <a class="el" href="a00048.html">oboe::AudioStreamCallback</a>)</td><td class="entry"><a class="el" href="a00048.html">oboe::AudioStreamCallback</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00048.html b/docs/reference/a00048.html
new file mode 100644
index 00000000..d98317bc
--- /dev/null
+++ b/docs/reference/a00048.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::AudioStreamCallback Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00048.html">AudioStreamCallback</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="a00045.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::AudioStreamCallback Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af3a7c44f0254abe6e5e5bb566e2317df"><td class="memItemLeft" align="right" valign="top">virtual DataCallbackResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">onAudioReady</a> (<a class="el" href="a00036.html">AudioStream</a> *oboeStream, void *audioData, int32_t numFrames)=0</td></tr>
+<tr class="separator:af3a7c44f0254abe6e5e5bb566e2317df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2407ff537a60301fd161bd2c36913bfd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">onErrorBeforeClose</a> (<a class="el" href="a00036.html">AudioStream</a> *oboeStream, Result error)</td></tr>
+<tr class="separator:a2407ff537a60301fd161bd2c36913bfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7089c5e18a80cba89eb3f4fe2341aeba"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">onErrorAfterClose</a> (<a class="el" href="a00036.html">AudioStream</a> *oboeStream, Result error)</td></tr>
+<tr class="separator:a7089c5e18a80cba89eb3f4fe2341aeba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af3a7c44f0254abe6e5e5bb566e2317df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af3a7c44f0254abe6e5e5bb566e2317df">&#9670;&nbsp;</a></span>onAudioReady()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual DataCallbackResult oboe::AudioStreamCallback::onAudioReady </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00036.html">AudioStream</a> *&#160;</td>
+ <td class="paramname"><em>oboeStream</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>audioData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>numFrames</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A buffer is ready for processing.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">oboeStream</td><td>pointer to the associated stream </td></tr>
+ <tr><td class="paramname">audioData</td><td>buffer containing input data or a place to put output data </td></tr>
+ <tr><td class="paramname">numFrames</td><td>number of frames to be processed </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>DataCallbackResult::Continue or DataCallbackResult::Stop </dd></dl>
+
+</div>
+</div>
+<a id="a7089c5e18a80cba89eb3f4fe2341aeba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7089c5e18a80cba89eb3f4fe2341aeba">&#9670;&nbsp;</a></span>onErrorAfterClose()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void oboe::AudioStreamCallback::onErrorAfterClose </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00036.html">AudioStream</a> *&#160;</td>
+ <td class="paramname"><em>oboeStream</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Result&#160;</td>
+ <td class="paramname"><em>error</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This will be called when an error occurs on a stream or when the stream is disconnected. The underlying stream will already be stopped AND closed by Oboe. So the underlyng stream cannot be referenced.</p>
+<p>This callback could be used to reopen a new stream on another device.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">oboeStream</td><td>pointer to the associated stream </td></tr>
+ <tr><td class="paramname">error</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="a2407ff537a60301fd161bd2c36913bfd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2407ff537a60301fd161bd2c36913bfd">&#9670;&nbsp;</a></span>onErrorBeforeClose()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void oboe::AudioStreamCallback::onErrorBeforeClose </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="a00036.html">AudioStream</a> *&#160;</td>
+ <td class="paramname"><em>oboeStream</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Result&#160;</td>
+ <td class="paramname"><em>error</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This will be called when an error occurs on a stream or when the stream is discomnnected. The underlying stream will already be stopped by Oboe but not yet closed. So the stream can be queried.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">oboeStream</td><td>pointer to the associated stream </td></tr>
+ <tr><td class="paramname">error</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00011_source.html">AudioStreamCallback.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00049.html b/docs/reference/a00049.html
new file mode 100644
index 00000000..e2a175cc
--- /dev/null
+++ b/docs/reference/a00049.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00052.html">DefaultStreamValues</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::DefaultStreamValues Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00052.html">oboe::DefaultStreamValues</a>, including all inherited members.</p>
+<table class="directory">
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ChannelCount</b> (defined in <a class="el" href="a00052.html">oboe::DefaultStreamValues</a>)</td><td class="entry"><a class="el" href="a00052.html">oboe::DefaultStreamValues</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>FramesPerBurst</b> (defined in <a class="el" href="a00052.html">oboe::DefaultStreamValues</a>)</td><td class="entry"><a class="el" href="a00052.html">oboe::DefaultStreamValues</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">SampleRate</a></td><td class="entry"><a class="el" href="a00052.html">oboe::DefaultStreamValues</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00052.html b/docs/reference/a00052.html
new file mode 100644
index 00000000..50dd516a
--- /dev/null
+++ b/docs/reference/a00052.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::DefaultStreamValues Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00052.html">DefaultStreamValues</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="a00049.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::DefaultStreamValues Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a46a5d9a653f2153f618cadcab764e1b1"><td class="memItemLeft" align="right" valign="top">static int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">SampleRate</a></td></tr>
+<tr class="separator:a46a5d9a653f2153f618cadcab764e1b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5ea5576699cebc56193f5c297d3e300"><td class="memItemLeft" align="right" valign="top"><a id="ab5ea5576699cebc56193f5c297d3e300"></a>
+static int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>FramesPerBurst</b></td></tr>
+<tr class="separator:ab5ea5576699cebc56193f5c297d3e300"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5dce538d5963c81bf58350ab730962d"><td class="memItemLeft" align="right" valign="top"><a id="ad5dce538d5963c81bf58350ab730962d"></a>
+static int32_t&#160;</td><td class="memItemRight" valign="bottom"><b>ChannelCount</b></td></tr>
+<tr class="separator:ad5dce538d5963c81bf58350ab730962d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a46a5d9a653f2153f618cadcab764e1b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46a5d9a653f2153f618cadcab764e1b1">&#9670;&nbsp;</a></span>SampleRate</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int32_t oboe::DefaultStreamValues::SampleRate</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>On API 16 to 25 OpenSL ES will be used. When using OpenSL ES the optimal values for sampleRate and framesPerBurst are not known by the native code. On API 17+ these values should be obtained from the AudioManager using this code:</p>
+<pre><code>
+Note that this technique only works for built-in speakers and headphones.
+ AudioManager myAudioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+ String sampleRateStr = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
+ int defaultSampleRate = Integer.parseInt(sampleRateStr);
+ String framesPerBurstStr = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
+ int defaultFramesPerBurst = Integer.parseInt(framesPerBurstStr);
+ </code></pre><p>It can then be passed down to Oboe through JNI.</p>
+<p>AAudio will get the optimal framesPerBurst from the HAL and will ignore this value. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00014_source.html">Definitions.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00053.html b/docs/reference/a00053.html
new file mode 100644
index 00000000..335341c2
--- /dev/null
+++ b/docs/reference/a00053.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00056.html">LatencyTuner</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::LatencyTuner Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00056.html">oboe::LatencyTuner</a>, including all inherited members.</p>
+<table class="directory">
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LatencyTuner</b>(AudioStream &amp;stream) (defined in <a class="el" href="a00056.html">oboe::LatencyTuner</a>)</td><td class="entry"><a class="el" href="a00056.html">oboe::LatencyTuner</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00056.html#a6c0142e08dc65eda8f758b4794450867">requestReset</a>()</td><td class="entry"><a class="el" href="a00056.html">oboe::LatencyTuner</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune</a>()</td><td class="entry"><a class="el" href="a00056.html">oboe::LatencyTuner</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00056.html b/docs/reference/a00056.html
new file mode 100644
index 00000000..84940660
--- /dev/null
+++ b/docs/reference/a00056.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::LatencyTuner Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00056.html">LatencyTuner</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="a00053.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::LatencyTuner Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><code>#include &lt;<a class="el" href="a00017_source.html">LatencyTuner.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0263b9a55825c0a403653b2b508073ea"><td class="memItemLeft" align="right" valign="top"><a id="a0263b9a55825c0a403653b2b508073ea"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>LatencyTuner</b> (<a class="el" href="a00036.html">AudioStream</a> &amp;stream)</td></tr>
+<tr class="separator:a0263b9a55825c0a403653b2b508073ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2be756965e6a9af3114008eda892174"><td class="memItemLeft" align="right" valign="top">Result&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune</a> ()</td></tr>
+<tr class="separator:ad2be756965e6a9af3114008eda892174"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c0142e08dc65eda8f758b4794450867"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html#a6c0142e08dc65eda8f758b4794450867">requestReset</a> ()</td></tr>
+<tr class="separator:a6c0142e08dc65eda8f758b4794450867"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This can be used to dynamically tune the latency of an output stream. It adjusts the bufferSize based on the number of underruns. The bufferSize is the portion of the total bufferCapacity that is used to store data.</p>
+<p>This only affects the latency associated with the first level of buffering that is closest to the application. It does not affect low latency in the HAL, or touch latency in the UI.</p>
+<p>Call <a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune()</a> right before returning from your data callback function if using callbacks. Call <a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune()</a> right before calling write() if using blocking writes.</p>
+<p>If you want to see the ongoing results of this tuning process then call stream-&gt;getBufferSize() periodically. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a6c0142e08dc65eda8f758b4794450867"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c0142e08dc65eda8f758b4794450867">&#9670;&nbsp;</a></span>requestReset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void oboe::LatencyTuner::requestReset </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This may be called from another thread. Then <a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">tune()</a> will call reset(), which will lower the latency to the minimum and then allow it to rise back up if there are glitches.</p>
+<p>This is typically called in response to a user decision to minimize latency. In other words, call this from a button handler. </p>
+
+</div>
+</div>
+<a id="ad2be756965e6a9af3114008eda892174"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad2be756965e6a9af3114008eda892174">&#9670;&nbsp;</a></span>tune()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Result oboe::LatencyTuner::tune </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Adjust the bufferSizeInFrames to optimize latency. It will start with a low latency and then raise it if an underrun occurs.</p>
+<p>Latency tuning is only supported for AAudio.</p>
+<dl class="section return"><dt>Returns</dt><dd>OK or negative error, ErrorUnimplemented for OpenSL ES </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00017_source.html">LatencyTuner.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00057.html b/docs/reference/a00057.html
new file mode 100644
index 00000000..bbbaa51d
--- /dev/null
+++ b/docs/reference/a00057.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00060.html">ResultWithValue</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::ResultWithValue&lt; T &gt; Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">createBasedOnSign</a>(T numericResult)</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>error</b>() const (defined in <a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00060.html#ae32b1953b777af7d1d0c94862ca39986">operator bool</a>() const</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00060.html#af62107817c0bc76047e6b655a78504ba">operator Result</a>() const</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">operator!</a>() const</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>ResultWithValue</b>(oboe::Result error) (defined in <a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ResultWithValue</b>(T value) (defined in <a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b>() const (defined in <a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="a00060.html">oboe::ResultWithValue&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00060.html b/docs/reference/a00060.html
new file mode 100644
index 00000000..1f0b6888
--- /dev/null
+++ b/docs/reference/a00060.html
@@ -0,0 +1,233 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::ResultWithValue&lt; T &gt; Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00060.html">ResultWithValue</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="a00057.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::ResultWithValue&lt; T &gt; Class Template Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aae75caa0d16a9e23a012f77fb50c5927"><td class="memItemLeft" align="right" valign="top"><a id="aae75caa0d16a9e23a012f77fb50c5927"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>ResultWithValue</b> (oboe::Result error)</td></tr>
+<tr class="separator:aae75caa0d16a9e23a012f77fb50c5927"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a600309367db58d71f0ec16e90f7ebea5"><td class="memItemLeft" align="right" valign="top"><a id="a600309367db58d71f0ec16e90f7ebea5"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>ResultWithValue</b> (T value)</td></tr>
+<tr class="separator:a600309367db58d71f0ec16e90f7ebea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adfc76ae6db81535c2e82b856975eed41"><td class="memItemLeft" align="right" valign="top"><a id="adfc76ae6db81535c2e82b856975eed41"></a>
+oboe::Result&#160;</td><td class="memItemRight" valign="bottom"><b>error</b> () const</td></tr>
+<tr class="separator:adfc76ae6db81535c2e82b856975eed41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a45f5c99a2c9f8fbaca502276f7ebb434"><td class="memItemLeft" align="right" valign="top"><a id="a45f5c99a2c9f8fbaca502276f7ebb434"></a>
+T&#160;</td><td class="memItemRight" valign="bottom"><b>value</b> () const</td></tr>
+<tr class="separator:a45f5c99a2c9f8fbaca502276f7ebb434"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae32b1953b777af7d1d0c94862ca39986"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html#ae32b1953b777af7d1d0c94862ca39986">operator bool</a> () const</td></tr>
+<tr class="separator:ae32b1953b777af7d1d0c94862ca39986"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2dbc8b09ead8b073a78af95b4b0186e3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">operator!</a> () const</td></tr>
+<tr class="separator:a2dbc8b09ead8b073a78af95b4b0186e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af62107817c0bc76047e6b655a78504ba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html#af62107817c0bc76047e6b655a78504ba">operator Result</a> () const</td></tr>
+<tr class="separator:af62107817c0bc76047e6b655a78504ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a2304c6120e2aad8f2189383a98c7b0a7"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00060.html">ResultWithValue</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">createBasedOnSign</a> (T numericResult)</td></tr>
+<tr class="separator:a2304c6120e2aad8f2189383a98c7b0a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a2304c6120e2aad8f2189383a98c7b0a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2304c6120e2aad8f2189383a98c7b0a7">&#9670;&nbsp;</a></span>createBasedOnSign()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="a00060.html">ResultWithValue</a>&lt;T&gt; <a class="el" href="a00060.html">oboe::ResultWithValue</a>&lt; T &gt;::createBasedOnSign </td>
+ <td>(</td>
+ <td class="paramtype">T&#160;</td>
+ <td class="paramname"><em>numericResult</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Create a <a class="el" href="a00060.html">ResultWithValue</a> from a number. If the number is positive the <a class="el" href="a00060.html">ResultWithValue</a> will have a result of Result::OK and the value will contain the number. If the number is negative the result will be obtained from the negative number (numeric error codes can be found in AAudio.h) and the value will be null. </p>
+
+</div>
+</div>
+<a id="ae32b1953b777af7d1d0c94862ca39986"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae32b1953b777af7d1d0c94862ca39986">&#9670;&nbsp;</a></span>operator bool()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00060.html">oboe::ResultWithValue</a>&lt; T &gt;::operator bool </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>true if OK </dd></dl>
+
+</div>
+</div>
+<a id="af62107817c0bc76047e6b655a78504ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af62107817c0bc76047e6b655a78504ba">&#9670;&nbsp;</a></span>operator Result()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="a00060.html">oboe::ResultWithValue</a>&lt; T &gt;::operator Result </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Implicitly convert to a Result. This enables easy comparison with Result values. Example:</p>
+<p><code> <a class="el" href="a00060.html">ResultWithValue</a> result = openStream(); if (result == Result::ErrorNoMemory){ // tell user they're out of memory } </code> </p>
+
+</div>
+</div>
+<a id="a2dbc8b09ead8b073a78af95b4b0186e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2dbc8b09ead8b073a78af95b4b0186e3">&#9670;&nbsp;</a></span>operator!()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="a00060.html">oboe::ResultWithValue</a>&lt; T &gt;::operator! </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Quick way to check for an error.</p>
+<p>The caller could write something like this: <code> if (!result) { printf("Got error %s\n", convertToText(result.error())); } </code></p>
+<dl class="section return"><dt>Returns</dt><dd>true if an error occurred </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00023_source.html">ResultWithValue.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00061.html b/docs/reference/a00061.html
new file mode 100644
index 00000000..1639e47c
--- /dev/null
+++ b/docs/reference/a00061.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00064.html">Version</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">oboe::Version Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00064.html">oboe::Version</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="a00064.html#a270f2e92582d5187be339eeda8e2b276">Major</a></td><td class="entry"><a class="el" href="a00064.html">oboe::Version</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00064.html#ae460bb95e3a9099696205a35fffb5469">Minor</a></td><td class="entry"><a class="el" href="a00064.html">oboe::Version</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00064.html#ac579661e79bcee45dc676d4647891de0">Number</a></td><td class="entry"><a class="el" href="a00064.html">oboe::Version</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">Patch</a></td><td class="entry"><a class="el" href="a00064.html">oboe::Version</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="a00064.html#a2c86e578b827fbca5f40c460a7754503">Text</a></td><td class="entry"><a class="el" href="a00064.html">oboe::Version</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/a00064.html b/docs/reference/a00064.html
new file mode 100644
index 00000000..324b678a
--- /dev/null
+++ b/docs/reference/a00064.html
@@ -0,0 +1,218 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.14"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Oboe: oboe::Version Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Oboe
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">Audio library for Android</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.14 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="a00032.html">oboe</a></li><li class="navelem"><a class="el" href="a00064.html">Version</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="a00061.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">oboe::Version Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a270f2e92582d5187be339eeda8e2b276"><td class="memItemLeft" align="right" valign="top">static constexpr uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html#a270f2e92582d5187be339eeda8e2b276">Major</a> = OBOE_VERSION_MAJOR</td></tr>
+<tr class="separator:a270f2e92582d5187be339eeda8e2b276"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae460bb95e3a9099696205a35fffb5469"><td class="memItemLeft" align="right" valign="top">static constexpr uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html#ae460bb95e3a9099696205a35fffb5469">Minor</a> = OBOE_VERSION_MINOR</td></tr>
+<tr class="separator:ae460bb95e3a9099696205a35fffb5469"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a690110f2b3e887892da8f29ab5c057b2"><td class="memItemLeft" align="right" valign="top">static constexpr uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">Patch</a> = OBOE_VERSION_PATCH</td></tr>
+<tr class="separator:a690110f2b3e887892da8f29ab5c057b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c86e578b827fbca5f40c460a7754503"><td class="memItemLeft" align="right" valign="top">static constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html#a2c86e578b827fbca5f40c460a7754503">Text</a> = OBOE_VERSION_TEXT</td></tr>
+<tr class="separator:a2c86e578b827fbca5f40c460a7754503"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac579661e79bcee45dc676d4647891de0"><td class="memItemLeft" align="right" valign="top">static constexpr uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html#ac579661e79bcee45dc676d4647891de0">Number</a> = OBOE_VERSION_NUMBER</td></tr>
+<tr class="separator:ac579661e79bcee45dc676d4647891de0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a id="a270f2e92582d5187be339eeda8e2b276"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a270f2e92582d5187be339eeda8e2b276">&#9670;&nbsp;</a></span>Major</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr uint8_t oboe::Version::Major = OBOE_VERSION_MAJOR</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is incremented when we make breaking API changes. Based loosely on <a href="https://semver.org/">https://semver.org/</a>. </p>
+
+</div>
+</div>
+<a id="ae460bb95e3a9099696205a35fffb5469"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae460bb95e3a9099696205a35fffb5469">&#9670;&nbsp;</a></span>Minor</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr uint8_t oboe::Version::Minor = OBOE_VERSION_MINOR</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is incremented when we add backwards compatible functionality. Or set to zero when MAJOR is incremented. </p>
+
+</div>
+</div>
+<a id="ac579661e79bcee45dc676d4647891de0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac579661e79bcee45dc676d4647891de0">&#9670;&nbsp;</a></span>Number</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr uint32_t oboe::Version::Number = OBOE_VERSION_NUMBER</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Integer representation of the current Oboe library version. This will always increase when the version number changes so can be compared using integer comparison. </p>
+
+</div>
+</div>
+<a id="a690110f2b3e887892da8f29ab5c057b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a690110f2b3e887892da8f29ab5c057b2">&#9670;&nbsp;</a></span>Patch</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr uint16_t oboe::Version::Patch = OBOE_VERSION_PATCH</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is incremented when we make backwards compatible bug fixes. Or set to zero when MINOR is incremented. </p>
+
+</div>
+</div>
+<a id="a2c86e578b827fbca5f40c460a7754503"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c86e578b827fbca5f40c460a7754503">&#9670;&nbsp;</a></span>Text</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* oboe::Version::Text = OBOE_VERSION_TEXT</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p><a class="el" href="a00064.html">Version</a> string in the form MAJOR.MINOR.PATCH. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>include/oboe/<a class="el" href="a00029_source.html">Version.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.14
+</small></address>
+</body>
+</html>
diff --git a/docs/reference/annotated.html b/docs/reference/annotated.html
index 51756be9..225cce26 100644
--- a/docs/reference/annotated.html
+++ b/docs/reference/annotated.html
@@ -69,15 +69,15 @@ $(function() {
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceoboe.html" target="_self">oboe</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream.html" target="_self">AudioStream</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_base.html" target="_self">AudioStreamBase</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_builder.html" target="_self">AudioStreamBuilder</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_callback.html" target="_self">AudioStreamCallback</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_default_stream_values.html" target="_self">DefaultStreamValues</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_latency_tuner.html" target="_self">LatencyTuner</a></td><td class="desc"></td></tr>
-<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_result_with_value.html" target="_self">ResultWithValue</a></td><td class="desc"></td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structoboe_1_1_version.html" target="_self">Version</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="a00032.html" target="_self">oboe</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00036.html" target="_self">AudioStream</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00040.html" target="_self">AudioStreamBase</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00044.html" target="_self">AudioStreamBuilder</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00048.html" target="_self">AudioStreamCallback</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00052.html" target="_self">DefaultStreamValues</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00056.html" target="_self">LatencyTuner</a></td><td class="desc"></td></tr>
+<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00060.html" target="_self">ResultWithValue</a></td><td class="desc"></td></tr>
+<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00064.html" target="_self">Version</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/docs/reference/classes.html b/docs/reference/classes.html
index d393dc59..4081cbae 100644
--- a/docs/reference/classes.html
+++ b/docs/reference/classes.html
@@ -70,16 +70,16 @@ $(function() {
<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classoboe_1_1_audio_stream_builder.html">AudioStreamBuilder</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00044.html">AudioStreamBuilder</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table>
</td></tr>
-<tr><td valign="top"><a class="el" href="classoboe_1_1_audio_stream_callback.html">AudioStreamCallback</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classoboe_1_1_audio_stream.html">AudioStream</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classoboe_1_1_latency_tuner.html">LatencyTuner</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structoboe_1_1_version.html">Version</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classoboe_1_1_audio_stream_base.html">AudioStreamBase</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="a00048.html">AudioStreamCallback</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="a00036.html">AudioStream</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00056.html">LatencyTuner</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="a00064.html">Version</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="a00040.html">AudioStreamBase</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="classoboe_1_1_default_stream_values.html">DefaultStreamValues</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td></td><td valign="top"><a class="el" href="classoboe_1_1_result_with_value.html">ResultWithValue</a> (<a class="el" href="namespaceoboe.html">oboe</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td valign="top"><a class="el" href="a00052.html">DefaultStreamValues</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td><td valign="top"><a class="el" href="a00060.html">ResultWithValue</a> (<a class="el" href="a00032.html">oboe</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_v">v</a></div>
diff --git a/docs/reference/files.html b/docs/reference/files.html
index af8084c8..2cd89bdc 100644
--- a/docs/reference/files.html
+++ b/docs/reference/files.html
@@ -71,16 +71,16 @@ $(function() {
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_768f6301d9838e45d679001914ab2803.html" target="_self">oboe</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_audio_stream_8h_source.html"><span class="icondoc"></span></a><b>AudioStream.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_audio_stream_base_8h_source.html"><span class="icondoc"></span></a><b>AudioStreamBase.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_audio_stream_builder_8h_source.html"><span class="icondoc"></span></a><b>AudioStreamBuilder.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_audio_stream_callback_8h_source.html"><span class="icondoc"></span></a><b>AudioStreamCallback.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_definitions_8h_source.html"><span class="icondoc"></span></a><b>Definitions.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_latency_tuner_8h_source.html"><span class="icondoc"></span></a><b>LatencyTuner.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_oboe_8h_source.html"><span class="icondoc"></span></a><b>Oboe.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_result_with_value_8h_source.html"><span class="icondoc"></span></a><b>ResultWithValue.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_utilities_8h_source.html"><span class="icondoc"></span></a><b>Utilities.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_version_8h_source.html"><span class="icondoc"></span></a><b>Version.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00002_source.html"><span class="icondoc"></span></a><b>AudioStream.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00005_source.html"><span class="icondoc"></span></a><b>AudioStreamBase.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00008_source.html"><span class="icondoc"></span></a><b>AudioStreamBuilder.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00011_source.html"><span class="icondoc"></span></a><b>AudioStreamCallback.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00014_source.html"><span class="icondoc"></span></a><b>Definitions.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00017_source.html"><span class="icondoc"></span></a><b>LatencyTuner.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00020_source.html"><span class="icondoc"></span></a><b>Oboe.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00023_source.html"><span class="icondoc"></span></a><b>ResultWithValue.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00026_source.html"><span class="icondoc"></span></a><b>Utilities.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="a00029_source.html"><span class="icondoc"></span></a><b>Version.h</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/docs/reference/functions.html b/docs/reference/functions.html
index f327ecb7..b0b6618b 100644
--- a/docs/reference/functions.html
+++ b/docs/reference/functions.html
@@ -67,216 +67,216 @@ $(function() {
<h3><a id="index_c"></a>- c -</h3><ul>
<li>calculateLatencyMillis()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ae023cb001f3261d064f423101798d6be">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ae023cb001f3261d064f423101798d6be">oboe::AudioStream</a>
</li>
<li>close()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">oboe::AudioStream</a>
</li>
<li>createBasedOnSign()
-: <a class="el" href="classoboe_1_1_result_with_value.html#a2304c6120e2aad8f2189383a98c7b0a7">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">oboe::ResultWithValue&lt; T &gt;</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getAudioApi()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a2b7a3cee7444114843dbdd1fc705f6bb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">oboe::AudioStream</a>
</li>
<li>getBufferCapacityInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ab1531253e64aaebe9e9eddbafb9098fc">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">oboe::AudioStreamBase</a>
</li>
<li>getBufferSizeInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#af5217ab05bfde0d7637024b599302d0b">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">oboe::AudioStreamBase</a>
</li>
<li>getChannelCount()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#aa0b0a068097efaf967fb235c55383dd8">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">oboe::AudioStreamBase</a>
</li>
<li>getDirection()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#a6f86f2233a04c5a0b056f0c1c261f1b1">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">oboe::AudioStreamBase</a>
</li>
<li>getFormat()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ab1e640461d7bf9d596decb913da7ac86">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">oboe::AudioStreamBase</a>
</li>
<li>getFramesPerBurst()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ac160acb656515814fa6fdd157c131a0a">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ac160acb656515814fa6fdd157c131a0a">oboe::AudioStream</a>
</li>
<li>getFramesPerCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#a1c133e1949f0814f60bd8bb61346756b">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">oboe::AudioStreamBase</a>
</li>
<li>getFramesWritten()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ab43dd4074e1de57bac1c3fd111430341">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">oboe::AudioStream</a>
</li>
<li>getSampleRate()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ae9d32f3e09174bad69e74f147ee33087">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">oboe::AudioStreamBase</a>
</li>
<li>getState()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a47bb5798275f14d76444283a6b6f35eb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">oboe::AudioStream</a>
</li>
<li>getUnderlyingStream()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a5458d7130415eb4defe3dbc11d479e2f">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">oboe::AudioStream</a>
</li>
<li>getXRunCount()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>isAAudioRecommended()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a622732bbe5c6577356d749f7dc2108df">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a622732bbe5c6577356d749f7dc2108df">oboe::AudioStreamBuilder</a>
</li>
<li>isAAudioSupported()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a18e7b5f7554a4c2ca763e35e8117d699">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">oboe::AudioStreamBuilder</a>
</li>
<li>isXRunCountSupported()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a43d8a098440cde28f4ee8bedd6d107c4">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_m"></a>- m -</h3><ul>
<li>Major
-: <a class="el" href="structoboe_1_1_version.html#a270f2e92582d5187be339eeda8e2b276">oboe::Version</a>
+: <a class="el" href="a00064.html#a270f2e92582d5187be339eeda8e2b276">oboe::Version</a>
</li>
<li>Minor
-: <a class="el" href="structoboe_1_1_version.html#ae460bb95e3a9099696205a35fffb5469">oboe::Version</a>
+: <a class="el" href="a00064.html#ae460bb95e3a9099696205a35fffb5469">oboe::Version</a>
</li>
</ul>
<h3><a id="index_n"></a>- n -</h3><ul>
<li>Number
-: <a class="el" href="structoboe_1_1_version.html#ac579661e79bcee45dc676d4647891de0">oboe::Version</a>
+: <a class="el" href="a00064.html#ac579661e79bcee45dc676d4647891de0">oboe::Version</a>
</li>
</ul>
<h3><a id="index_o"></a>- o -</h3><ul>
<li>onAudioReady()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#af3a7c44f0254abe6e5e5bb566e2317df">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">oboe::AudioStreamCallback</a>
</li>
<li>onDefaultCallback()
-: <a class="el" href="classoboe_1_1_audio_stream.html#abda7ae8e6832030572785de3964ed848">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#abda7ae8e6832030572785de3964ed848">oboe::AudioStream</a>
</li>
<li>onErrorAfterClose()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#a7089c5e18a80cba89eb3f4fe2341aeba">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">oboe::AudioStreamCallback</a>
</li>
<li>onErrorBeforeClose()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#a2407ff537a60301fd161bd2c36913bfd">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">oboe::AudioStreamCallback</a>
</li>
<li>open()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a686c6ce8a29051c858fd1de386805dc6">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">oboe::AudioStream</a>
</li>
<li>openStream()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a86b94cfa47729bef2e04dce1a9086074">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">oboe::AudioStreamBuilder</a>
</li>
<li>operator bool()
-: <a class="el" href="classoboe_1_1_result_with_value.html#ae32b1953b777af7d1d0c94862ca39986">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#ae32b1953b777af7d1d0c94862ca39986">oboe::ResultWithValue&lt; T &gt;</a>
</li>
<li>operator Result()
-: <a class="el" href="classoboe_1_1_result_with_value.html#af62107817c0bc76047e6b655a78504ba">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#af62107817c0bc76047e6b655a78504ba">oboe::ResultWithValue&lt; T &gt;</a>
</li>
<li>operator!()
-: <a class="el" href="classoboe_1_1_result_with_value.html#a2dbc8b09ead8b073a78af95b4b0186e3">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">oboe::ResultWithValue&lt; T &gt;</a>
</li>
</ul>
<h3><a id="index_p"></a>- p -</h3><ul>
<li>Patch
-: <a class="el" href="structoboe_1_1_version.html#a690110f2b3e887892da8f29ab5c057b2">oboe::Version</a>
+: <a class="el" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">oboe::Version</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>requestReset()
-: <a class="el" href="classoboe_1_1_latency_tuner.html#a6c0142e08dc65eda8f758b4794450867">oboe::LatencyTuner</a>
+: <a class="el" href="a00056.html#a6c0142e08dc65eda8f758b4794450867">oboe::LatencyTuner</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>SampleRate
-: <a class="el" href="classoboe_1_1_default_stream_values.html#a46a5d9a653f2153f618cadcab764e1b1">oboe::DefaultStreamValues</a>
+: <a class="el" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">oboe::DefaultStreamValues</a>
</li>
<li>setAudioApi()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a38c6d6c5e718df1e3ac69daaac47c391">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">oboe::AudioStreamBuilder</a>
</li>
<li>setBufferCapacityInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#abaff480867af51ca0899bfa6fd7cc3ef">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">oboe::AudioStreamBuilder</a>
</li>
<li>setBufferSizeInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ac93b18e18487e809151f63ec3c6228bb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">oboe::AudioStream</a>
</li>
<li>setCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a698cefa9af73bc97c020c004821fccbd">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a698cefa9af73bc97c020c004821fccbd">oboe::AudioStreamBuilder</a>
</li>
<li>setChannelCount()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a075d10291e1f998d90c2f73ef767b5a7">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">oboe::AudioStreamBuilder</a>
</li>
<li>setContentType()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a6a17bafc217c2b624179fbbf77fe4468">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">oboe::AudioStreamBuilder</a>
</li>
<li>setDeviceId()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#af36ddcd00686a9e1de661bdac0685a8e">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">oboe::AudioStreamBuilder</a>
</li>
<li>setDirection()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#ab3fbd47b06197619c26393637e26354c">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#ab3fbd47b06197619c26393637e26354c">oboe::AudioStreamBuilder</a>
</li>
<li>setFormat()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">oboe::AudioStreamBuilder</a>
</li>
<li>setFramesPerCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a3f397821f61eabaeedaf31064c859a54">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a3f397821f61eabaeedaf31064c859a54">oboe::AudioStreamBuilder</a>
</li>
<li>setInputPreset()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a144a3d095fd668210282f1a91f23e1f0">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">oboe::AudioStreamBuilder</a>
</li>
<li>setPerformanceMode()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a6cd1d65612e844e59da71a68ea0ab3ee">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">oboe::AudioStreamBuilder</a>
</li>
<li>setSampleRate()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a30ef3d5f51d56a9f980dc09600ed139d">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">oboe::AudioStreamBuilder</a>
</li>
<li>setSessionId()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a54c1651bdbe089d0d714af499e8a5f1d">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">oboe::AudioStreamBuilder</a>
</li>
<li>setSharingMode()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a3e991742acbbfb6fe5ebcf592c478654">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">oboe::AudioStreamBuilder</a>
</li>
<li>setUsage()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a593255a2f5eb972665775cfc5bc58f6a">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">oboe::AudioStreamBuilder</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>Text
-: <a class="el" href="structoboe_1_1_version.html#a2c86e578b827fbca5f40c460a7754503">oboe::Version</a>
+: <a class="el" href="a00064.html#a2c86e578b827fbca5f40c460a7754503">oboe::Version</a>
</li>
<li>tune()
-: <a class="el" href="classoboe_1_1_latency_tuner.html#ad2be756965e6a9af3114008eda892174">oboe::LatencyTuner</a>
+: <a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">oboe::LatencyTuner</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>usesAAudio()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a15cdaaaa4c1e8da322d6da33334c8147">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>waitForStateChange()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a0c865a5501f369d959c39d8ab8b46a07">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">oboe::AudioStream</a>
</li>
<li>waitForStateTransition()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a8adbacd6a55a94a532916ab037fba1d6">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">oboe::AudioStream</a>
</li>
<li>write()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ab3f6bf8abed87f3804ac4df3472c3670">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">oboe::AudioStream</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/functions_func.html b/docs/reference/functions_func.html
index b371e1ff..7c04dab8 100644
--- a/docs/reference/functions_func.html
+++ b/docs/reference/functions_func.html
@@ -67,186 +67,186 @@ $(function() {
<h3><a id="index_c"></a>- c -</h3><ul>
<li>calculateLatencyMillis()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ae023cb001f3261d064f423101798d6be">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ae023cb001f3261d064f423101798d6be">oboe::AudioStream</a>
</li>
<li>close()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8">oboe::AudioStream</a>
</li>
<li>createBasedOnSign()
-: <a class="el" href="classoboe_1_1_result_with_value.html#a2304c6120e2aad8f2189383a98c7b0a7">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#a2304c6120e2aad8f2189383a98c7b0a7">oboe::ResultWithValue&lt; T &gt;</a>
</li>
</ul>
<h3><a id="index_g"></a>- g -</h3><ul>
<li>getAudioApi()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a2b7a3cee7444114843dbdd1fc705f6bb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb">oboe::AudioStream</a>
</li>
<li>getBufferCapacityInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ab1531253e64aaebe9e9eddbafb9098fc">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ab1531253e64aaebe9e9eddbafb9098fc">oboe::AudioStreamBase</a>
</li>
<li>getBufferSizeInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#af5217ab05bfde0d7637024b599302d0b">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#af5217ab05bfde0d7637024b599302d0b">oboe::AudioStreamBase</a>
</li>
<li>getChannelCount()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#aa0b0a068097efaf967fb235c55383dd8">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#aa0b0a068097efaf967fb235c55383dd8">oboe::AudioStreamBase</a>
</li>
<li>getDirection()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#a6f86f2233a04c5a0b056f0c1c261f1b1">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1">oboe::AudioStreamBase</a>
</li>
<li>getFormat()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ab1e640461d7bf9d596decb913da7ac86">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ab1e640461d7bf9d596decb913da7ac86">oboe::AudioStreamBase</a>
</li>
<li>getFramesPerBurst()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ac160acb656515814fa6fdd157c131a0a">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ac160acb656515814fa6fdd157c131a0a">oboe::AudioStream</a>
</li>
<li>getFramesPerCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#a1c133e1949f0814f60bd8bb61346756b">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#a1c133e1949f0814f60bd8bb61346756b">oboe::AudioStreamBase</a>
</li>
<li>getFramesWritten()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ab43dd4074e1de57bac1c3fd111430341">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ab43dd4074e1de57bac1c3fd111430341">oboe::AudioStream</a>
</li>
<li>getSampleRate()
-: <a class="el" href="classoboe_1_1_audio_stream_base.html#ae9d32f3e09174bad69e74f147ee33087">oboe::AudioStreamBase</a>
+: <a class="el" href="a00040.html#ae9d32f3e09174bad69e74f147ee33087">oboe::AudioStreamBase</a>
</li>
<li>getState()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a47bb5798275f14d76444283a6b6f35eb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a47bb5798275f14d76444283a6b6f35eb">oboe::AudioStream</a>
</li>
<li>getUnderlyingStream()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a5458d7130415eb4defe3dbc11d479e2f">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a5458d7130415eb4defe3dbc11d479e2f">oboe::AudioStream</a>
</li>
<li>getXRunCount()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_i"></a>- i -</h3><ul>
<li>isAAudioRecommended()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a622732bbe5c6577356d749f7dc2108df">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a622732bbe5c6577356d749f7dc2108df">oboe::AudioStreamBuilder</a>
</li>
<li>isAAudioSupported()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a18e7b5f7554a4c2ca763e35e8117d699">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a18e7b5f7554a4c2ca763e35e8117d699">oboe::AudioStreamBuilder</a>
</li>
<li>isXRunCountSupported()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a43d8a098440cde28f4ee8bedd6d107c4">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a43d8a098440cde28f4ee8bedd6d107c4">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_o"></a>- o -</h3><ul>
<li>onAudioReady()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#af3a7c44f0254abe6e5e5bb566e2317df">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#af3a7c44f0254abe6e5e5bb566e2317df">oboe::AudioStreamCallback</a>
</li>
<li>onDefaultCallback()
-: <a class="el" href="classoboe_1_1_audio_stream.html#abda7ae8e6832030572785de3964ed848">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#abda7ae8e6832030572785de3964ed848">oboe::AudioStream</a>
</li>
<li>onErrorAfterClose()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#a7089c5e18a80cba89eb3f4fe2341aeba">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba">oboe::AudioStreamCallback</a>
</li>
<li>onErrorBeforeClose()
-: <a class="el" href="classoboe_1_1_audio_stream_callback.html#a2407ff537a60301fd161bd2c36913bfd">oboe::AudioStreamCallback</a>
+: <a class="el" href="a00048.html#a2407ff537a60301fd161bd2c36913bfd">oboe::AudioStreamCallback</a>
</li>
<li>open()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a686c6ce8a29051c858fd1de386805dc6">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a686c6ce8a29051c858fd1de386805dc6">oboe::AudioStream</a>
</li>
<li>openStream()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a86b94cfa47729bef2e04dce1a9086074">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a86b94cfa47729bef2e04dce1a9086074">oboe::AudioStreamBuilder</a>
</li>
<li>operator bool()
-: <a class="el" href="classoboe_1_1_result_with_value.html#ae32b1953b777af7d1d0c94862ca39986">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#ae32b1953b777af7d1d0c94862ca39986">oboe::ResultWithValue&lt; T &gt;</a>
</li>
<li>operator Result()
-: <a class="el" href="classoboe_1_1_result_with_value.html#af62107817c0bc76047e6b655a78504ba">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#af62107817c0bc76047e6b655a78504ba">oboe::ResultWithValue&lt; T &gt;</a>
</li>
<li>operator!()
-: <a class="el" href="classoboe_1_1_result_with_value.html#a2dbc8b09ead8b073a78af95b4b0186e3">oboe::ResultWithValue&lt; T &gt;</a>
+: <a class="el" href="a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3">oboe::ResultWithValue&lt; T &gt;</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>requestReset()
-: <a class="el" href="classoboe_1_1_latency_tuner.html#a6c0142e08dc65eda8f758b4794450867">oboe::LatencyTuner</a>
+: <a class="el" href="a00056.html#a6c0142e08dc65eda8f758b4794450867">oboe::LatencyTuner</a>
</li>
</ul>
<h3><a id="index_s"></a>- s -</h3><ul>
<li>setAudioApi()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a38c6d6c5e718df1e3ac69daaac47c391">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a38c6d6c5e718df1e3ac69daaac47c391">oboe::AudioStreamBuilder</a>
</li>
<li>setBufferCapacityInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#abaff480867af51ca0899bfa6fd7cc3ef">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#abaff480867af51ca0899bfa6fd7cc3ef">oboe::AudioStreamBuilder</a>
</li>
<li>setBufferSizeInFrames()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ac93b18e18487e809151f63ec3c6228bb">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ac93b18e18487e809151f63ec3c6228bb">oboe::AudioStream</a>
</li>
<li>setCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a698cefa9af73bc97c020c004821fccbd">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a698cefa9af73bc97c020c004821fccbd">oboe::AudioStreamBuilder</a>
</li>
<li>setChannelCount()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a075d10291e1f998d90c2f73ef767b5a7">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a075d10291e1f998d90c2f73ef767b5a7">oboe::AudioStreamBuilder</a>
</li>
<li>setContentType()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a6a17bafc217c2b624179fbbf77fe4468">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a6a17bafc217c2b624179fbbf77fe4468">oboe::AudioStreamBuilder</a>
</li>
<li>setDeviceId()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#af36ddcd00686a9e1de661bdac0685a8e">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#af36ddcd00686a9e1de661bdac0685a8e">oboe::AudioStreamBuilder</a>
</li>
<li>setDirection()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#ab3fbd47b06197619c26393637e26354c">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#ab3fbd47b06197619c26393637e26354c">oboe::AudioStreamBuilder</a>
</li>
<li>setFormat()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515">oboe::AudioStreamBuilder</a>
</li>
<li>setFramesPerCallback()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a3f397821f61eabaeedaf31064c859a54">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a3f397821f61eabaeedaf31064c859a54">oboe::AudioStreamBuilder</a>
</li>
<li>setInputPreset()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a144a3d095fd668210282f1a91f23e1f0">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a144a3d095fd668210282f1a91f23e1f0">oboe::AudioStreamBuilder</a>
</li>
<li>setPerformanceMode()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a6cd1d65612e844e59da71a68ea0ab3ee">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee">oboe::AudioStreamBuilder</a>
</li>
<li>setSampleRate()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a30ef3d5f51d56a9f980dc09600ed139d">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a30ef3d5f51d56a9f980dc09600ed139d">oboe::AudioStreamBuilder</a>
</li>
<li>setSessionId()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a54c1651bdbe089d0d714af499e8a5f1d">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a54c1651bdbe089d0d714af499e8a5f1d">oboe::AudioStreamBuilder</a>
</li>
<li>setSharingMode()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a3e991742acbbfb6fe5ebcf592c478654">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a3e991742acbbfb6fe5ebcf592c478654">oboe::AudioStreamBuilder</a>
</li>
<li>setUsage()
-: <a class="el" href="classoboe_1_1_audio_stream_builder.html#a593255a2f5eb972665775cfc5bc58f6a">oboe::AudioStreamBuilder</a>
+: <a class="el" href="a00044.html#a593255a2f5eb972665775cfc5bc58f6a">oboe::AudioStreamBuilder</a>
</li>
</ul>
<h3><a id="index_t"></a>- t -</h3><ul>
<li>tune()
-: <a class="el" href="classoboe_1_1_latency_tuner.html#ad2be756965e6a9af3114008eda892174">oboe::LatencyTuner</a>
+: <a class="el" href="a00056.html#ad2be756965e6a9af3114008eda892174">oboe::LatencyTuner</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>usesAAudio()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a15cdaaaa4c1e8da322d6da33334c8147">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a15cdaaaa4c1e8da322d6da33334c8147">oboe::AudioStream</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>waitForStateChange()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a0c865a5501f369d959c39d8ab8b46a07">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a0c865a5501f369d959c39d8ab8b46a07">oboe::AudioStream</a>
</li>
<li>waitForStateTransition()
-: <a class="el" href="classoboe_1_1_audio_stream.html#a8adbacd6a55a94a532916ab037fba1d6">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#a8adbacd6a55a94a532916ab037fba1d6">oboe::AudioStream</a>
</li>
<li>write()
-: <a class="el" href="classoboe_1_1_audio_stream.html#ab3f6bf8abed87f3804ac4df3472c3670">oboe::AudioStream</a>
+: <a class="el" href="a00036.html#ab3f6bf8abed87f3804ac4df3472c3670">oboe::AudioStream</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/functions_vars.html b/docs/reference/functions_vars.html
index 340c9589..b9b4d4cd 100644
--- a/docs/reference/functions_vars.html
+++ b/docs/reference/functions_vars.html
@@ -65,22 +65,22 @@ $(function() {
<div class="contents">
&#160;<ul>
<li>Major
-: <a class="el" href="structoboe_1_1_version.html#a270f2e92582d5187be339eeda8e2b276">oboe::Version</a>
+: <a class="el" href="a00064.html#a270f2e92582d5187be339eeda8e2b276">oboe::Version</a>
</li>
<li>Minor
-: <a class="el" href="structoboe_1_1_version.html#ae460bb95e3a9099696205a35fffb5469">oboe::Version</a>
+: <a class="el" href="a00064.html#ae460bb95e3a9099696205a35fffb5469">oboe::Version</a>
</li>
<li>Number
-: <a class="el" href="structoboe_1_1_version.html#ac579661e79bcee45dc676d4647891de0">oboe::Version</a>
+: <a class="el" href="a00064.html#ac579661e79bcee45dc676d4647891de0">oboe::Version</a>
</li>
<li>Patch
-: <a class="el" href="structoboe_1_1_version.html#a690110f2b3e887892da8f29ab5c057b2">oboe::Version</a>
+: <a class="el" href="a00064.html#a690110f2b3e887892da8f29ab5c057b2">oboe::Version</a>
</li>
<li>SampleRate
-: <a class="el" href="classoboe_1_1_default_stream_values.html#a46a5d9a653f2153f618cadcab764e1b1">oboe::DefaultStreamValues</a>
+: <a class="el" href="a00052.html#a46a5d9a653f2153f618cadcab764e1b1">oboe::DefaultStreamValues</a>
</li>
<li>Text
-: <a class="el" href="structoboe_1_1_version.html#a2c86e578b827fbca5f40c460a7754503">oboe::Version</a>
+: <a class="el" href="a00064.html#a2c86e578b827fbca5f40c460a7754503">oboe::Version</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/hierarchy.html b/docs/reference/hierarchy.html
index 44b8804f..8949362b 100644
--- a/docs/reference/hierarchy.html
+++ b/docs/reference/hierarchy.html
@@ -69,14 +69,14 @@ $(function() {
<div class="contents">
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_base.html" target="_self">oboe::AudioStreamBase</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream.html" target="_self">oboe::AudioStream</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_builder.html" target="_self">oboe::AudioStreamBuilder</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_audio_stream_callback.html" target="_self">oboe::AudioStreamCallback</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_default_stream_values.html" target="_self">oboe::DefaultStreamValues</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_latency_tuner.html" target="_self">oboe::LatencyTuner</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classoboe_1_1_result_with_value.html" target="_self">oboe::ResultWithValue&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structoboe_1_1_version.html" target="_self">oboe::Version</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00040.html" target="_self">oboe::AudioStreamBase</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00036.html" target="_self">oboe::AudioStream</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00044.html" target="_self">oboe::AudioStreamBuilder</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00048.html" target="_self">oboe::AudioStreamCallback</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00052.html" target="_self">oboe::DefaultStreamValues</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00056.html" target="_self">oboe::LatencyTuner</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00060.html" target="_self">oboe::ResultWithValue&lt; T &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="a00064.html" target="_self">oboe::Version</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/docs/reference/namespacemembers.html b/docs/reference/namespacemembers.html
index 6acf7db4..353f4f7d 100644
--- a/docs/reference/namespacemembers.html
+++ b/docs/reference/namespacemembers.html
@@ -65,76 +65,76 @@ $(function() {
<div class="contents">
<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div><ul>
<li>Allocate
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">oboe</a>
</li>
<li>AudioApi
-: <a class="el" href="namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6">oboe</a>
+: <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe</a>
</li>
<li>Camcorder
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">oboe</a>
</li>
<li>ChannelCount
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029">oboe</a>
</li>
<li>ContentType
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">oboe</a>
</li>
<li>convertFormatToSizeInBytes()
-: <a class="el" href="namespaceoboe.html#ac67383a3df0f6e7a51f8415ffd9fdaca">oboe</a>
+: <a class="el" href="a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca">oboe</a>
</li>
<li>convertToText()
-: <a class="el" href="namespaceoboe.html#a8d1ae211254cc239019f165b607f4365">oboe</a>
+: <a class="el" href="a00032.html#a8d1ae211254cc239019f165b607f4365">oboe</a>
</li>
<li>Generic
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">oboe</a>
</li>
<li>getSdkVersion()
-: <a class="el" href="namespaceoboe.html#a54528938e9fccab7ad8947ccf0e409db">oboe</a>
+: <a class="el" href="a00032.html#a54528938e9fccab7ad8947ccf0e409db">oboe</a>
</li>
<li>InputPreset
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe</a>
</li>
<li>Mono
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">oboe</a>
</li>
<li>Movie
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">oboe</a>
</li>
<li>Music
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">oboe</a>
</li>
<li>None
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">oboe</a>
</li>
<li>SessionId
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eaf">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe</a>
</li>
<li>SharingMode
-: <a class="el" href="namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdff">oboe</a>
+: <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe</a>
</li>
<li>Sonification
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">oboe</a>
</li>
<li>Speech
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">oboe</a>
</li>
<li>Stereo
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">oboe</a>
</li>
<li>Unprocessed
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">oboe</a>
</li>
<li>Unspecified
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">oboe</a>
</li>
<li>Usage
-: <a class="el" href="namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe</a>
+: <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe</a>
</li>
<li>VoiceCommunication
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">oboe</a>
</li>
<li>VoiceRecognition
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">oboe</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/namespacemembers_enum.html b/docs/reference/namespacemembers_enum.html
index b7b3b8e0..dd36c333 100644
--- a/docs/reference/namespacemembers_enum.html
+++ b/docs/reference/namespacemembers_enum.html
@@ -65,25 +65,25 @@ $(function() {
<div class="contents">
&#160;<ul>
<li>AudioApi
-: <a class="el" href="namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6">oboe</a>
+: <a class="el" href="a00032.html#a92972414867c81d5974cb2ed7abefbf6">oboe</a>
</li>
<li>ChannelCount
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029">oboe</a>
</li>
<li>ContentType
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406">oboe</a>
</li>
<li>InputPreset
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04">oboe</a>
</li>
<li>SessionId
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eaf">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eaf">oboe</a>
</li>
<li>SharingMode
-: <a class="el" href="namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdff">oboe</a>
+: <a class="el" href="a00032.html#ae3a52556c58387e0cecba01f9abffdff">oboe</a>
</li>
<li>Usage
-: <a class="el" href="namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe</a>
+: <a class="el" href="a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb">oboe</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/namespacemembers_eval.html b/docs/reference/namespacemembers_eval.html
index 261a6af6..eb800aaa 100644
--- a/docs/reference/namespacemembers_eval.html
+++ b/docs/reference/namespacemembers_eval.html
@@ -65,46 +65,46 @@ $(function() {
<div class="contents">
&#160;<ul>
<li>Allocate
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123">oboe</a>
</li>
<li>Camcorder
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe">oboe</a>
</li>
<li>Generic
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544">oboe</a>
</li>
<li>Mono
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79">oboe</a>
</li>
<li>Movie
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1">oboe</a>
</li>
<li>Music
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517">oboe</a>
</li>
<li>None
-: <a class="el" href="namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">oboe</a>
+: <a class="el" href="a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f">oboe</a>
</li>
<li>Sonification
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799">oboe</a>
</li>
<li>Speech
-: <a class="el" href="namespaceoboe.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">oboe</a>
+: <a class="el" href="a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1">oboe</a>
</li>
<li>Stereo
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba">oboe</a>
</li>
<li>Unprocessed
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f">oboe</a>
</li>
<li>Unspecified
-: <a class="el" href="namespaceoboe.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">oboe</a>
+: <a class="el" href="a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76">oboe</a>
</li>
<li>VoiceCommunication
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d">oboe</a>
</li>
<li>VoiceRecognition
-: <a class="el" href="namespaceoboe.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">oboe</a>
+: <a class="el" href="a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc">oboe</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/namespacemembers_func.html b/docs/reference/namespacemembers_func.html
index 0f552ace..aeae4ef2 100644
--- a/docs/reference/namespacemembers_func.html
+++ b/docs/reference/namespacemembers_func.html
@@ -65,13 +65,13 @@ $(function() {
<div class="contents">
&#160;<ul>
<li>convertFormatToSizeInBytes()
-: <a class="el" href="namespaceoboe.html#ac67383a3df0f6e7a51f8415ffd9fdaca">oboe</a>
+: <a class="el" href="a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca">oboe</a>
</li>
<li>convertToText()
-: <a class="el" href="namespaceoboe.html#a8d1ae211254cc239019f165b607f4365">oboe</a>
+: <a class="el" href="a00032.html#a8d1ae211254cc239019f165b607f4365">oboe</a>
</li>
<li>getSdkVersion()
-: <a class="el" href="namespaceoboe.html#a54528938e9fccab7ad8947ccf0e409db">oboe</a>
+: <a class="el" href="a00032.html#a54528938e9fccab7ad8947ccf0e409db">oboe</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/docs/reference/namespaces.html b/docs/reference/namespaces.html
index 64e6c5dc..5c177c79 100644
--- a/docs/reference/namespaces.html
+++ b/docs/reference/namespaces.html
@@ -69,7 +69,7 @@ $(function() {
<div class="contents">
<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
<table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceoboe.html" target="_self">oboe</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="a00032.html" target="_self">oboe</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/docs/reference/search/all_0.js b/docs/reference/search/all_0.js
index f1912fde..bba1bfd0 100644
--- a/docs/reference/search/all_0.js
+++ b/docs/reference/search/all_0.js
@@ -1,15 +1,15 @@
var searchData=
[
- ['aaudio',['AAudio',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b',1,'oboe']]],
- ['alarm',['Alarm',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4',1,'oboe']]],
- ['allocate',['Allocate',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123',1,'oboe']]],
- ['assistanceaccessibility',['AssistanceAccessibility',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8',1,'oboe']]],
- ['assistancenavigationguidance',['AssistanceNavigationGuidance',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e',1,'oboe']]],
- ['assistancesonification',['AssistanceSonification',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7',1,'oboe']]],
- ['assistant',['Assistant',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b',1,'oboe']]],
- ['audioapi',['AudioApi',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6',1,'oboe']]],
- ['audiostream',['AudioStream',['../classoboe_1_1_audio_stream.html',1,'oboe']]],
- ['audiostreambase',['AudioStreamBase',['../classoboe_1_1_audio_stream_base.html',1,'oboe']]],
- ['audiostreambuilder',['AudioStreamBuilder',['../classoboe_1_1_audio_stream_builder.html',1,'oboe']]],
- ['audiostreamcallback',['AudioStreamCallback',['../classoboe_1_1_audio_stream_callback.html',1,'oboe']]]
+ ['aaudio',['AAudio',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b',1,'oboe']]],
+ ['alarm',['Alarm',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4',1,'oboe']]],
+ ['allocate',['Allocate',['../a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123',1,'oboe']]],
+ ['assistanceaccessibility',['AssistanceAccessibility',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8',1,'oboe']]],
+ ['assistancenavigationguidance',['AssistanceNavigationGuidance',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e',1,'oboe']]],
+ ['assistancesonification',['AssistanceSonification',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7',1,'oboe']]],
+ ['assistant',['Assistant',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b',1,'oboe']]],
+ ['audioapi',['AudioApi',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6',1,'oboe']]],
+ ['audiostream',['AudioStream',['../a00036.html',1,'oboe']]],
+ ['audiostreambase',['AudioStreamBase',['../a00040.html',1,'oboe']]],
+ ['audiostreambuilder',['AudioStreamBuilder',['../a00044.html',1,'oboe']]],
+ ['audiostreamcallback',['AudioStreamCallback',['../a00048.html',1,'oboe']]]
];
diff --git a/docs/reference/search/all_1.js b/docs/reference/search/all_1.js
index cf0ad7a5..6d06816b 100644
--- a/docs/reference/search/all_1.js
+++ b/docs/reference/search/all_1.js
@@ -1,11 +1,11 @@
var searchData=
[
- ['calculatelatencymillis',['calculateLatencyMillis',['../classoboe_1_1_audio_stream.html#ae023cb001f3261d064f423101798d6be',1,'oboe::AudioStream']]],
- ['camcorder',['Camcorder',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe',1,'oboe']]],
- ['channelcount',['ChannelCount',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029',1,'oboe']]],
- ['close',['close',['../classoboe_1_1_audio_stream.html#ad33a20f0d6792e322b9d8a2bcf14fcf8',1,'oboe::AudioStream']]],
- ['contenttype',['ContentType',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406',1,'oboe']]],
- ['convertformattosizeinbytes',['convertFormatToSizeInBytes',['../namespaceoboe.html#ac67383a3df0f6e7a51f8415ffd9fdaca',1,'oboe']]],
- ['converttotext',['convertToText',['../namespaceoboe.html#a8d1ae211254cc239019f165b607f4365',1,'oboe']]],
- ['createbasedonsign',['createBasedOnSign',['../classoboe_1_1_result_with_value.html#a2304c6120e2aad8f2189383a98c7b0a7',1,'oboe::ResultWithValue']]]
+ ['calculatelatencymillis',['calculateLatencyMillis',['../a00036.html#ae023cb001f3261d064f423101798d6be',1,'oboe::AudioStream']]],
+ ['camcorder',['Camcorder',['../a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe',1,'oboe']]],
+ ['channelcount',['ChannelCount',['../a00032.html#a522e6806948369987639a0d1df03c029',1,'oboe']]],
+ ['close',['close',['../a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8',1,'oboe::AudioStream']]],
+ ['contenttype',['ContentType',['../a00032.html#a07eed38097ed944422063801f8f83406',1,'oboe']]],
+ ['convertformattosizeinbytes',['convertFormatToSizeInBytes',['../a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca',1,'oboe']]],
+ ['converttotext',['convertToText',['../a00032.html#a8d1ae211254cc239019f165b607f4365',1,'oboe']]],
+ ['createbasedonsign',['createBasedOnSign',['../a00060.html#a2304c6120e2aad8f2189383a98c7b0a7',1,'oboe::ResultWithValue']]]
];
diff --git a/docs/reference/search/all_10.js b/docs/reference/search/all_10.js
index 346765c5..57aa014d 100644
--- a/docs/reference/search/all_10.js
+++ b/docs/reference/search/all_10.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['waitforstatechange',['waitForStateChange',['../classoboe_1_1_audio_stream.html#a0c865a5501f369d959c39d8ab8b46a07',1,'oboe::AudioStream']]],
- ['waitforstatetransition',['waitForStateTransition',['../classoboe_1_1_audio_stream.html#a8adbacd6a55a94a532916ab037fba1d6',1,'oboe::AudioStream']]],
- ['write',['write',['../classoboe_1_1_audio_stream.html#ab3f6bf8abed87f3804ac4df3472c3670',1,'oboe::AudioStream']]]
+ ['waitforstatechange',['waitForStateChange',['../a00036.html#a0c865a5501f369d959c39d8ab8b46a07',1,'oboe::AudioStream']]],
+ ['waitforstatetransition',['waitForStateTransition',['../a00036.html#a8adbacd6a55a94a532916ab037fba1d6',1,'oboe::AudioStream']]],
+ ['write',['write',['../a00036.html#ab3f6bf8abed87f3804ac4df3472c3670',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/all_2.js b/docs/reference/search/all_2.js
index 16ce5526..2ade1f56 100644
--- a/docs/reference/search/all_2.js
+++ b/docs/reference/search/all_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['defaultstreamvalues',['DefaultStreamValues',['../classoboe_1_1_default_stream_values.html',1,'oboe']]]
+ ['defaultstreamvalues',['DefaultStreamValues',['../a00052.html',1,'oboe']]]
];
diff --git a/docs/reference/search/all_3.js b/docs/reference/search/all_3.js
index d0807295..e11587d3 100644
--- a/docs/reference/search/all_3.js
+++ b/docs/reference/search/all_3.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['exclusive',['Exclusive',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971',1,'oboe']]]
+ ['exclusive',['Exclusive',['../a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971',1,'oboe']]]
];
diff --git a/docs/reference/search/all_4.js b/docs/reference/search/all_4.js
index 1ad0e136..8c241026 100644
--- a/docs/reference/search/all_4.js
+++ b/docs/reference/search/all_4.js
@@ -1,19 +1,19 @@
var searchData=
[
- ['game',['Game',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb',1,'oboe']]],
- ['generic',['Generic',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544',1,'oboe']]],
- ['getaudioapi',['getAudioApi',['../classoboe_1_1_audio_stream.html#a2b7a3cee7444114843dbdd1fc705f6bb',1,'oboe::AudioStream']]],
- ['getbuffercapacityinframes',['getBufferCapacityInFrames',['../classoboe_1_1_audio_stream_base.html#ab1531253e64aaebe9e9eddbafb9098fc',1,'oboe::AudioStreamBase']]],
- ['getbuffersizeinframes',['getBufferSizeInFrames',['../classoboe_1_1_audio_stream_base.html#af5217ab05bfde0d7637024b599302d0b',1,'oboe::AudioStreamBase']]],
- ['getchannelcount',['getChannelCount',['../classoboe_1_1_audio_stream_base.html#aa0b0a068097efaf967fb235c55383dd8',1,'oboe::AudioStreamBase']]],
- ['getdirection',['getDirection',['../classoboe_1_1_audio_stream_base.html#a6f86f2233a04c5a0b056f0c1c261f1b1',1,'oboe::AudioStreamBase']]],
- ['getformat',['getFormat',['../classoboe_1_1_audio_stream_base.html#ab1e640461d7bf9d596decb913da7ac86',1,'oboe::AudioStreamBase']]],
- ['getframesperburst',['getFramesPerBurst',['../classoboe_1_1_audio_stream.html#ac160acb656515814fa6fdd157c131a0a',1,'oboe::AudioStream']]],
- ['getframespercallback',['getFramesPerCallback',['../classoboe_1_1_audio_stream_base.html#a1c133e1949f0814f60bd8bb61346756b',1,'oboe::AudioStreamBase']]],
- ['getframeswritten',['getFramesWritten',['../classoboe_1_1_audio_stream.html#ab43dd4074e1de57bac1c3fd111430341',1,'oboe::AudioStream']]],
- ['getsamplerate',['getSampleRate',['../classoboe_1_1_audio_stream_base.html#ae9d32f3e09174bad69e74f147ee33087',1,'oboe::AudioStreamBase']]],
- ['getsdkversion',['getSdkVersion',['../namespaceoboe.html#a54528938e9fccab7ad8947ccf0e409db',1,'oboe']]],
- ['getstate',['getState',['../classoboe_1_1_audio_stream.html#a47bb5798275f14d76444283a6b6f35eb',1,'oboe::AudioStream']]],
- ['getunderlyingstream',['getUnderlyingStream',['../classoboe_1_1_audio_stream.html#a5458d7130415eb4defe3dbc11d479e2f',1,'oboe::AudioStream']]],
- ['getxruncount',['getXRunCount',['../classoboe_1_1_audio_stream.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261',1,'oboe::AudioStream']]]
+ ['game',['Game',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb',1,'oboe']]],
+ ['generic',['Generic',['../a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544',1,'oboe']]],
+ ['getaudioapi',['getAudioApi',['../a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb',1,'oboe::AudioStream']]],
+ ['getbuffercapacityinframes',['getBufferCapacityInFrames',['../a00040.html#ab1531253e64aaebe9e9eddbafb9098fc',1,'oboe::AudioStreamBase']]],
+ ['getbuffersizeinframes',['getBufferSizeInFrames',['../a00040.html#af5217ab05bfde0d7637024b599302d0b',1,'oboe::AudioStreamBase']]],
+ ['getchannelcount',['getChannelCount',['../a00040.html#aa0b0a068097efaf967fb235c55383dd8',1,'oboe::AudioStreamBase']]],
+ ['getdirection',['getDirection',['../a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1',1,'oboe::AudioStreamBase']]],
+ ['getformat',['getFormat',['../a00040.html#ab1e640461d7bf9d596decb913da7ac86',1,'oboe::AudioStreamBase']]],
+ ['getframesperburst',['getFramesPerBurst',['../a00036.html#ac160acb656515814fa6fdd157c131a0a',1,'oboe::AudioStream']]],
+ ['getframespercallback',['getFramesPerCallback',['../a00040.html#a1c133e1949f0814f60bd8bb61346756b',1,'oboe::AudioStreamBase']]],
+ ['getframeswritten',['getFramesWritten',['../a00036.html#ab43dd4074e1de57bac1c3fd111430341',1,'oboe::AudioStream']]],
+ ['getsamplerate',['getSampleRate',['../a00040.html#ae9d32f3e09174bad69e74f147ee33087',1,'oboe::AudioStreamBase']]],
+ ['getsdkversion',['getSdkVersion',['../a00032.html#a54528938e9fccab7ad8947ccf0e409db',1,'oboe']]],
+ ['getstate',['getState',['../a00036.html#a47bb5798275f14d76444283a6b6f35eb',1,'oboe::AudioStream']]],
+ ['getunderlyingstream',['getUnderlyingStream',['../a00036.html#a5458d7130415eb4defe3dbc11d479e2f',1,'oboe::AudioStream']]],
+ ['getxruncount',['getXRunCount',['../a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/all_5.js b/docs/reference/search/all_5.js
index 4bd559bf..37682de7 100644
--- a/docs/reference/search/all_5.js
+++ b/docs/reference/search/all_5.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['inputpreset',['InputPreset',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04',1,'oboe']]],
- ['isaaudiorecommended',['isAAudioRecommended',['../classoboe_1_1_audio_stream_builder.html#a622732bbe5c6577356d749f7dc2108df',1,'oboe::AudioStreamBuilder']]],
- ['isaaudiosupported',['isAAudioSupported',['../classoboe_1_1_audio_stream_builder.html#a18e7b5f7554a4c2ca763e35e8117d699',1,'oboe::AudioStreamBuilder']]],
- ['isxruncountsupported',['isXRunCountSupported',['../classoboe_1_1_audio_stream.html#a43d8a098440cde28f4ee8bedd6d107c4',1,'oboe::AudioStream']]]
+ ['inputpreset',['InputPreset',['../a00032.html#a17f63a064de966efddd5d0335992bc04',1,'oboe']]],
+ ['isaaudiorecommended',['isAAudioRecommended',['../a00044.html#a622732bbe5c6577356d749f7dc2108df',1,'oboe::AudioStreamBuilder']]],
+ ['isaaudiosupported',['isAAudioSupported',['../a00044.html#a18e7b5f7554a4c2ca763e35e8117d699',1,'oboe::AudioStreamBuilder']]],
+ ['isxruncountsupported',['isXRunCountSupported',['../a00036.html#a43d8a098440cde28f4ee8bedd6d107c4',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/all_6.js b/docs/reference/search/all_6.js
index 70a78464..14dda9c6 100644
--- a/docs/reference/search/all_6.js
+++ b/docs/reference/search/all_6.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['latencytuner',['LatencyTuner',['../classoboe_1_1_latency_tuner.html',1,'oboe']]]
+ ['latencytuner',['LatencyTuner',['../a00056.html',1,'oboe']]]
];
diff --git a/docs/reference/search/all_7.js b/docs/reference/search/all_7.js
index d83a0b9a..040b1d17 100644
--- a/docs/reference/search/all_7.js
+++ b/docs/reference/search/all_7.js
@@ -1,9 +1,9 @@
var searchData=
[
- ['major',['Major',['../structoboe_1_1_version.html#a270f2e92582d5187be339eeda8e2b276',1,'oboe::Version']]],
- ['media',['Media',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74',1,'oboe']]],
- ['minor',['Minor',['../structoboe_1_1_version.html#ae460bb95e3a9099696205a35fffb5469',1,'oboe::Version']]],
- ['mono',['Mono',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79',1,'oboe']]],
- ['movie',['Movie',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1',1,'oboe']]],
- ['music',['Music',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517',1,'oboe']]]
+ ['major',['Major',['../a00064.html#a270f2e92582d5187be339eeda8e2b276',1,'oboe::Version']]],
+ ['media',['Media',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74',1,'oboe']]],
+ ['minor',['Minor',['../a00064.html#ae460bb95e3a9099696205a35fffb5469',1,'oboe::Version']]],
+ ['mono',['Mono',['../a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79',1,'oboe']]],
+ ['movie',['Movie',['../a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1',1,'oboe']]],
+ ['music',['Music',['../a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517',1,'oboe']]]
];
diff --git a/docs/reference/search/all_8.js b/docs/reference/search/all_8.js
index 8181b15d..daaac4ae 100644
--- a/docs/reference/search/all_8.js
+++ b/docs/reference/search/all_8.js
@@ -1,8 +1,8 @@
var searchData=
[
- ['none',['None',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f',1,'oboe']]],
- ['notification',['Notification',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71',1,'oboe']]],
- ['notificationevent',['NotificationEvent',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f',1,'oboe']]],
- ['notificationringtone',['NotificationRingtone',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf',1,'oboe']]],
- ['number',['Number',['../structoboe_1_1_version.html#ac579661e79bcee45dc676d4647891de0',1,'oboe::Version']]]
+ ['none',['None',['../a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f',1,'oboe']]],
+ ['notification',['Notification',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71',1,'oboe']]],
+ ['notificationevent',['NotificationEvent',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f',1,'oboe']]],
+ ['notificationringtone',['NotificationRingtone',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf',1,'oboe']]],
+ ['number',['Number',['../a00064.html#ac579661e79bcee45dc676d4647891de0',1,'oboe::Version']]]
];
diff --git a/docs/reference/search/all_9.js b/docs/reference/search/all_9.js
index 36de112c..56b6df09 100644
--- a/docs/reference/search/all_9.js
+++ b/docs/reference/search/all_9.js
@@ -1,14 +1,14 @@
var searchData=
[
- ['oboe',['oboe',['../namespaceoboe.html',1,'']]],
- ['onaudioready',['onAudioReady',['../classoboe_1_1_audio_stream_callback.html#af3a7c44f0254abe6e5e5bb566e2317df',1,'oboe::AudioStreamCallback']]],
- ['ondefaultcallback',['onDefaultCallback',['../classoboe_1_1_audio_stream.html#abda7ae8e6832030572785de3964ed848',1,'oboe::AudioStream']]],
- ['onerrorafterclose',['onErrorAfterClose',['../classoboe_1_1_audio_stream_callback.html#a7089c5e18a80cba89eb3f4fe2341aeba',1,'oboe::AudioStreamCallback']]],
- ['onerrorbeforeclose',['onErrorBeforeClose',['../classoboe_1_1_audio_stream_callback.html#a2407ff537a60301fd161bd2c36913bfd',1,'oboe::AudioStreamCallback']]],
- ['open',['open',['../classoboe_1_1_audio_stream.html#a686c6ce8a29051c858fd1de386805dc6',1,'oboe::AudioStream']]],
- ['opensles',['OpenSLES',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b',1,'oboe']]],
- ['openstream',['openStream',['../classoboe_1_1_audio_stream_builder.html#a86b94cfa47729bef2e04dce1a9086074',1,'oboe::AudioStreamBuilder']]],
- ['operator_20bool',['operator bool',['../classoboe_1_1_result_with_value.html#ae32b1953b777af7d1d0c94862ca39986',1,'oboe::ResultWithValue']]],
- ['operator_20result',['operator Result',['../classoboe_1_1_result_with_value.html#af62107817c0bc76047e6b655a78504ba',1,'oboe::ResultWithValue']]],
- ['operator_21',['operator!',['../classoboe_1_1_result_with_value.html#a2dbc8b09ead8b073a78af95b4b0186e3',1,'oboe::ResultWithValue']]]
+ ['oboe',['oboe',['../a00032.html',1,'']]],
+ ['onaudioready',['onAudioReady',['../a00048.html#af3a7c44f0254abe6e5e5bb566e2317df',1,'oboe::AudioStreamCallback']]],
+ ['ondefaultcallback',['onDefaultCallback',['../a00036.html#abda7ae8e6832030572785de3964ed848',1,'oboe::AudioStream']]],
+ ['onerrorafterclose',['onErrorAfterClose',['../a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba',1,'oboe::AudioStreamCallback']]],
+ ['onerrorbeforeclose',['onErrorBeforeClose',['../a00048.html#a2407ff537a60301fd161bd2c36913bfd',1,'oboe::AudioStreamCallback']]],
+ ['open',['open',['../a00036.html#a686c6ce8a29051c858fd1de386805dc6',1,'oboe::AudioStream']]],
+ ['opensles',['OpenSLES',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b',1,'oboe']]],
+ ['openstream',['openStream',['../a00044.html#a86b94cfa47729bef2e04dce1a9086074',1,'oboe::AudioStreamBuilder']]],
+ ['operator_20bool',['operator bool',['../a00060.html#ae32b1953b777af7d1d0c94862ca39986',1,'oboe::ResultWithValue']]],
+ ['operator_20result',['operator Result',['../a00060.html#af62107817c0bc76047e6b655a78504ba',1,'oboe::ResultWithValue']]],
+ ['operator_21',['operator!',['../a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3',1,'oboe::ResultWithValue']]]
];
diff --git a/docs/reference/search/all_a.js b/docs/reference/search/all_a.js
index 5bf03881..3e251a9a 100644
--- a/docs/reference/search/all_a.js
+++ b/docs/reference/search/all_a.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['patch',['Patch',['../structoboe_1_1_version.html#a690110f2b3e887892da8f29ab5c057b2',1,'oboe::Version']]]
+ ['patch',['Patch',['../a00064.html#a690110f2b3e887892da8f29ab5c057b2',1,'oboe::Version']]]
];
diff --git a/docs/reference/search/all_b.js b/docs/reference/search/all_b.js
index df5a800b..9997821e 100644
--- a/docs/reference/search/all_b.js
+++ b/docs/reference/search/all_b.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['requestreset',['requestReset',['../classoboe_1_1_latency_tuner.html#a6c0142e08dc65eda8f758b4794450867',1,'oboe::LatencyTuner']]],
- ['resultwithvalue',['ResultWithValue',['../classoboe_1_1_result_with_value.html',1,'oboe']]]
+ ['requestreset',['requestReset',['../a00056.html#a6c0142e08dc65eda8f758b4794450867',1,'oboe::LatencyTuner']]],
+ ['resultwithvalue',['ResultWithValue',['../a00060.html',1,'oboe']]]
];
diff --git a/docs/reference/search/all_c.js b/docs/reference/search/all_c.js
index 68e59014..ab09002a 100644
--- a/docs/reference/search/all_c.js
+++ b/docs/reference/search/all_c.js
@@ -1,26 +1,26 @@
var searchData=
[
- ['samplerate',['SampleRate',['../classoboe_1_1_default_stream_values.html#a46a5d9a653f2153f618cadcab764e1b1',1,'oboe::DefaultStreamValues']]],
- ['sessionid',['SessionId',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eaf',1,'oboe']]],
- ['setaudioapi',['setAudioApi',['../classoboe_1_1_audio_stream_builder.html#a38c6d6c5e718df1e3ac69daaac47c391',1,'oboe::AudioStreamBuilder']]],
- ['setbuffercapacityinframes',['setBufferCapacityInFrames',['../classoboe_1_1_audio_stream_builder.html#abaff480867af51ca0899bfa6fd7cc3ef',1,'oboe::AudioStreamBuilder']]],
- ['setbuffersizeinframes',['setBufferSizeInFrames',['../classoboe_1_1_audio_stream.html#ac93b18e18487e809151f63ec3c6228bb',1,'oboe::AudioStream']]],
- ['setcallback',['setCallback',['../classoboe_1_1_audio_stream_builder.html#a698cefa9af73bc97c020c004821fccbd',1,'oboe::AudioStreamBuilder']]],
- ['setchannelcount',['setChannelCount',['../classoboe_1_1_audio_stream_builder.html#a075d10291e1f998d90c2f73ef767b5a7',1,'oboe::AudioStreamBuilder']]],
- ['setcontenttype',['setContentType',['../classoboe_1_1_audio_stream_builder.html#a6a17bafc217c2b624179fbbf77fe4468',1,'oboe::AudioStreamBuilder']]],
- ['setdeviceid',['setDeviceId',['../classoboe_1_1_audio_stream_builder.html#af36ddcd00686a9e1de661bdac0685a8e',1,'oboe::AudioStreamBuilder']]],
- ['setdirection',['setDirection',['../classoboe_1_1_audio_stream_builder.html#ab3fbd47b06197619c26393637e26354c',1,'oboe::AudioStreamBuilder']]],
- ['setformat',['setFormat',['../classoboe_1_1_audio_stream_builder.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515',1,'oboe::AudioStreamBuilder']]],
- ['setframespercallback',['setFramesPerCallback',['../classoboe_1_1_audio_stream_builder.html#a3f397821f61eabaeedaf31064c859a54',1,'oboe::AudioStreamBuilder']]],
- ['setinputpreset',['setInputPreset',['../classoboe_1_1_audio_stream_builder.html#a144a3d095fd668210282f1a91f23e1f0',1,'oboe::AudioStreamBuilder']]],
- ['setperformancemode',['setPerformanceMode',['../classoboe_1_1_audio_stream_builder.html#a6cd1d65612e844e59da71a68ea0ab3ee',1,'oboe::AudioStreamBuilder']]],
- ['setsamplerate',['setSampleRate',['../classoboe_1_1_audio_stream_builder.html#a30ef3d5f51d56a9f980dc09600ed139d',1,'oboe::AudioStreamBuilder']]],
- ['setsessionid',['setSessionId',['../classoboe_1_1_audio_stream_builder.html#a54c1651bdbe089d0d714af499e8a5f1d',1,'oboe::AudioStreamBuilder']]],
- ['setsharingmode',['setSharingMode',['../classoboe_1_1_audio_stream_builder.html#a3e991742acbbfb6fe5ebcf592c478654',1,'oboe::AudioStreamBuilder']]],
- ['setusage',['setUsage',['../classoboe_1_1_audio_stream_builder.html#a593255a2f5eb972665775cfc5bc58f6a',1,'oboe::AudioStreamBuilder']]],
- ['shared',['Shared',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca',1,'oboe']]],
- ['sharingmode',['SharingMode',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdff',1,'oboe']]],
- ['sonification',['Sonification',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799',1,'oboe']]],
- ['speech',['Speech',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1',1,'oboe']]],
- ['stereo',['Stereo',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba',1,'oboe']]]
+ ['samplerate',['SampleRate',['../a00052.html#a46a5d9a653f2153f618cadcab764e1b1',1,'oboe::DefaultStreamValues']]],
+ ['sessionid',['SessionId',['../a00032.html#a5752250c10e96179e3618d7f72937eaf',1,'oboe']]],
+ ['setaudioapi',['setAudioApi',['../a00044.html#a38c6d6c5e718df1e3ac69daaac47c391',1,'oboe::AudioStreamBuilder']]],
+ ['setbuffercapacityinframes',['setBufferCapacityInFrames',['../a00044.html#abaff480867af51ca0899bfa6fd7cc3ef',1,'oboe::AudioStreamBuilder']]],
+ ['setbuffersizeinframes',['setBufferSizeInFrames',['../a00036.html#ac93b18e18487e809151f63ec3c6228bb',1,'oboe::AudioStream']]],
+ ['setcallback',['setCallback',['../a00044.html#a698cefa9af73bc97c020c004821fccbd',1,'oboe::AudioStreamBuilder']]],
+ ['setchannelcount',['setChannelCount',['../a00044.html#a075d10291e1f998d90c2f73ef767b5a7',1,'oboe::AudioStreamBuilder']]],
+ ['setcontenttype',['setContentType',['../a00044.html#a6a17bafc217c2b624179fbbf77fe4468',1,'oboe::AudioStreamBuilder']]],
+ ['setdeviceid',['setDeviceId',['../a00044.html#af36ddcd00686a9e1de661bdac0685a8e',1,'oboe::AudioStreamBuilder']]],
+ ['setdirection',['setDirection',['../a00044.html#ab3fbd47b06197619c26393637e26354c',1,'oboe::AudioStreamBuilder']]],
+ ['setformat',['setFormat',['../a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515',1,'oboe::AudioStreamBuilder']]],
+ ['setframespercallback',['setFramesPerCallback',['../a00044.html#a3f397821f61eabaeedaf31064c859a54',1,'oboe::AudioStreamBuilder']]],
+ ['setinputpreset',['setInputPreset',['../a00044.html#a144a3d095fd668210282f1a91f23e1f0',1,'oboe::AudioStreamBuilder']]],
+ ['setperformancemode',['setPerformanceMode',['../a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee',1,'oboe::AudioStreamBuilder']]],
+ ['setsamplerate',['setSampleRate',['../a00044.html#a30ef3d5f51d56a9f980dc09600ed139d',1,'oboe::AudioStreamBuilder']]],
+ ['setsessionid',['setSessionId',['../a00044.html#a54c1651bdbe089d0d714af499e8a5f1d',1,'oboe::AudioStreamBuilder']]],
+ ['setsharingmode',['setSharingMode',['../a00044.html#a3e991742acbbfb6fe5ebcf592c478654',1,'oboe::AudioStreamBuilder']]],
+ ['setusage',['setUsage',['../a00044.html#a593255a2f5eb972665775cfc5bc58f6a',1,'oboe::AudioStreamBuilder']]],
+ ['shared',['Shared',['../a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca',1,'oboe']]],
+ ['sharingmode',['SharingMode',['../a00032.html#ae3a52556c58387e0cecba01f9abffdff',1,'oboe']]],
+ ['sonification',['Sonification',['../a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799',1,'oboe']]],
+ ['speech',['Speech',['../a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1',1,'oboe']]],
+ ['stereo',['Stereo',['../a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba',1,'oboe']]]
];
diff --git a/docs/reference/search/all_d.js b/docs/reference/search/all_d.js
index 3365c352..d703e14f 100644
--- a/docs/reference/search/all_d.js
+++ b/docs/reference/search/all_d.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['text',['Text',['../structoboe_1_1_version.html#a2c86e578b827fbca5f40c460a7754503',1,'oboe::Version']]],
- ['tune',['tune',['../classoboe_1_1_latency_tuner.html#ad2be756965e6a9af3114008eda892174',1,'oboe::LatencyTuner']]]
+ ['text',['Text',['../a00064.html#a2c86e578b827fbca5f40c460a7754503',1,'oboe::Version']]],
+ ['tune',['tune',['../a00056.html#ad2be756965e6a9af3114008eda892174',1,'oboe::LatencyTuner']]]
];
diff --git a/docs/reference/search/all_e.js b/docs/reference/search/all_e.js
index f138ab6f..58219ff3 100644
--- a/docs/reference/search/all_e.js
+++ b/docs/reference/search/all_e.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['unprocessed',['Unprocessed',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f',1,'oboe']]],
- ['unspecified',['Unspecified',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76',1,'oboe::Unspecified()'],['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5',1,'oboe::Unspecified()']]],
- ['usage',['Usage',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbb',1,'oboe']]],
- ['usesaaudio',['usesAAudio',['../classoboe_1_1_audio_stream.html#a15cdaaaa4c1e8da322d6da33334c8147',1,'oboe::AudioStream']]]
+ ['unprocessed',['Unprocessed',['../a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f',1,'oboe']]],
+ ['unspecified',['Unspecified',['../a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76',1,'oboe::Unspecified()'],['../a00032.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5',1,'oboe::Unspecified()']]],
+ ['usage',['Usage',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb',1,'oboe']]],
+ ['usesaaudio',['usesAAudio',['../a00036.html#a15cdaaaa4c1e8da322d6da33334c8147',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/all_f.js b/docs/reference/search/all_f.js
index 750aa6ce..b372964f 100644
--- a/docs/reference/search/all_f.js
+++ b/docs/reference/search/all_f.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['version',['Version',['../structoboe_1_1_version.html',1,'oboe']]],
- ['voicecommunication',['VoiceCommunication',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d',1,'oboe::VoiceCommunication()'],['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6',1,'oboe::VoiceCommunication()']]],
- ['voicecommunicationsignalling',['VoiceCommunicationSignalling',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74',1,'oboe']]],
- ['voicerecognition',['VoiceRecognition',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc',1,'oboe']]]
+ ['version',['Version',['../a00064.html',1,'oboe']]],
+ ['voicecommunication',['VoiceCommunication',['../a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d',1,'oboe::VoiceCommunication()'],['../a00032.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6',1,'oboe::VoiceCommunication()']]],
+ ['voicecommunicationsignalling',['VoiceCommunicationSignalling',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74',1,'oboe']]],
+ ['voicerecognition',['VoiceRecognition',['../a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc',1,'oboe']]]
];
diff --git a/docs/reference/search/classes_0.js b/docs/reference/search/classes_0.js
index dbc8d2a0..7dd938b2 100644
--- a/docs/reference/search/classes_0.js
+++ b/docs/reference/search/classes_0.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['audiostream',['AudioStream',['../classoboe_1_1_audio_stream.html',1,'oboe']]],
- ['audiostreambase',['AudioStreamBase',['../classoboe_1_1_audio_stream_base.html',1,'oboe']]],
- ['audiostreambuilder',['AudioStreamBuilder',['../classoboe_1_1_audio_stream_builder.html',1,'oboe']]],
- ['audiostreamcallback',['AudioStreamCallback',['../classoboe_1_1_audio_stream_callback.html',1,'oboe']]]
+ ['audiostream',['AudioStream',['../a00036.html',1,'oboe']]],
+ ['audiostreambase',['AudioStreamBase',['../a00040.html',1,'oboe']]],
+ ['audiostreambuilder',['AudioStreamBuilder',['../a00044.html',1,'oboe']]],
+ ['audiostreamcallback',['AudioStreamCallback',['../a00048.html',1,'oboe']]]
];
diff --git a/docs/reference/search/classes_1.js b/docs/reference/search/classes_1.js
index 16ce5526..2ade1f56 100644
--- a/docs/reference/search/classes_1.js
+++ b/docs/reference/search/classes_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['defaultstreamvalues',['DefaultStreamValues',['../classoboe_1_1_default_stream_values.html',1,'oboe']]]
+ ['defaultstreamvalues',['DefaultStreamValues',['../a00052.html',1,'oboe']]]
];
diff --git a/docs/reference/search/classes_2.js b/docs/reference/search/classes_2.js
index 70a78464..14dda9c6 100644
--- a/docs/reference/search/classes_2.js
+++ b/docs/reference/search/classes_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['latencytuner',['LatencyTuner',['../classoboe_1_1_latency_tuner.html',1,'oboe']]]
+ ['latencytuner',['LatencyTuner',['../a00056.html',1,'oboe']]]
];
diff --git a/docs/reference/search/classes_3.js b/docs/reference/search/classes_3.js
index 991f31b8..5ffb095e 100644
--- a/docs/reference/search/classes_3.js
+++ b/docs/reference/search/classes_3.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['resultwithvalue',['ResultWithValue',['../classoboe_1_1_result_with_value.html',1,'oboe']]]
+ ['resultwithvalue',['ResultWithValue',['../a00060.html',1,'oboe']]]
];
diff --git a/docs/reference/search/classes_4.js b/docs/reference/search/classes_4.js
index 8578da8f..7da9f4d7 100644
--- a/docs/reference/search/classes_4.js
+++ b/docs/reference/search/classes_4.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['version',['Version',['../structoboe_1_1_version.html',1,'oboe']]]
+ ['version',['Version',['../a00064.html',1,'oboe']]]
];
diff --git a/docs/reference/search/enums_0.js b/docs/reference/search/enums_0.js
index cf17cc08..d10a8d42 100644
--- a/docs/reference/search/enums_0.js
+++ b/docs/reference/search/enums_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['audioapi',['AudioApi',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6',1,'oboe']]]
+ ['audioapi',['AudioApi',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6',1,'oboe']]]
];
diff --git a/docs/reference/search/enums_1.js b/docs/reference/search/enums_1.js
index 581f007f..ef8f0382 100644
--- a/docs/reference/search/enums_1.js
+++ b/docs/reference/search/enums_1.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['channelcount',['ChannelCount',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029',1,'oboe']]],
- ['contenttype',['ContentType',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406',1,'oboe']]]
+ ['channelcount',['ChannelCount',['../a00032.html#a522e6806948369987639a0d1df03c029',1,'oboe']]],
+ ['contenttype',['ContentType',['../a00032.html#a07eed38097ed944422063801f8f83406',1,'oboe']]]
];
diff --git a/docs/reference/search/enums_2.js b/docs/reference/search/enums_2.js
index dabd1629..7d4262f2 100644
--- a/docs/reference/search/enums_2.js
+++ b/docs/reference/search/enums_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['inputpreset',['InputPreset',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04',1,'oboe']]]
+ ['inputpreset',['InputPreset',['../a00032.html#a17f63a064de966efddd5d0335992bc04',1,'oboe']]]
];
diff --git a/docs/reference/search/enums_3.js b/docs/reference/search/enums_3.js
index 78876bff..8f937954 100644
--- a/docs/reference/search/enums_3.js
+++ b/docs/reference/search/enums_3.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['sessionid',['SessionId',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eaf',1,'oboe']]],
- ['sharingmode',['SharingMode',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdff',1,'oboe']]]
+ ['sessionid',['SessionId',['../a00032.html#a5752250c10e96179e3618d7f72937eaf',1,'oboe']]],
+ ['sharingmode',['SharingMode',['../a00032.html#ae3a52556c58387e0cecba01f9abffdff',1,'oboe']]]
];
diff --git a/docs/reference/search/enums_4.js b/docs/reference/search/enums_4.js
index 7857cdbf..69368898 100644
--- a/docs/reference/search/enums_4.js
+++ b/docs/reference/search/enums_4.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['usage',['Usage',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbb',1,'oboe']]]
+ ['usage',['Usage',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbb',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_0.js b/docs/reference/search/enumvalues_0.js
index 244f7b1c..7faf9003 100644
--- a/docs/reference/search/enumvalues_0.js
+++ b/docs/reference/search/enumvalues_0.js
@@ -1,10 +1,10 @@
var searchData=
[
- ['aaudio',['AAudio',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b',1,'oboe']]],
- ['alarm',['Alarm',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4',1,'oboe']]],
- ['allocate',['Allocate',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123',1,'oboe']]],
- ['assistanceaccessibility',['AssistanceAccessibility',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8',1,'oboe']]],
- ['assistancenavigationguidance',['AssistanceNavigationGuidance',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e',1,'oboe']]],
- ['assistancesonification',['AssistanceSonification',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7',1,'oboe']]],
- ['assistant',['Assistant',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b',1,'oboe']]]
+ ['aaudio',['AAudio',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6a99780b1e8d754eb42abed0ca5253e55b',1,'oboe']]],
+ ['alarm',['Alarm',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba46c4c4d980dfe025ae5b35aa0011dde4',1,'oboe']]],
+ ['allocate',['Allocate',['../a00032.html#a5752250c10e96179e3618d7f72937eafa8485ca716c8cd4aafee372fd7028c123',1,'oboe']]],
+ ['assistanceaccessibility',['AssistanceAccessibility',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba639ffd54516c1a84a288a363c9469df8',1,'oboe']]],
+ ['assistancenavigationguidance',['AssistanceNavigationGuidance',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbbade058a1314f9a8504593259ff4f21a1e',1,'oboe']]],
+ ['assistancesonification',['AssistanceSonification',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba1ce57a0572748beebfc0c664ca1077e7',1,'oboe']]],
+ ['assistant',['Assistant',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba9b1363da9503dbd4142c0274a88e8d4b',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_1.js b/docs/reference/search/enumvalues_1.js
index eb83f8f8..af0309c2 100644
--- a/docs/reference/search/enumvalues_1.js
+++ b/docs/reference/search/enumvalues_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['camcorder',['Camcorder',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe',1,'oboe']]]
+ ['camcorder',['Camcorder',['../a00032.html#a17f63a064de966efddd5d0335992bc04a6e8ef178769235d18b44fe2bb5ab33fe',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_2.js b/docs/reference/search/enumvalues_2.js
index d0807295..e11587d3 100644
--- a/docs/reference/search/enumvalues_2.js
+++ b/docs/reference/search/enumvalues_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['exclusive',['Exclusive',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971',1,'oboe']]]
+ ['exclusive',['Exclusive',['../a00032.html#ae3a52556c58387e0cecba01f9abffdffa2ef50b4c466304dc6ac77bac8a779971',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_3.js b/docs/reference/search/enumvalues_3.js
index 1e356ce1..3f872d7c 100644
--- a/docs/reference/search/enumvalues_3.js
+++ b/docs/reference/search/enumvalues_3.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['game',['Game',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb',1,'oboe']]],
- ['generic',['Generic',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544',1,'oboe']]]
+ ['game',['Game',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba63d72051e901c069f8aa1b32aa0c43bb',1,'oboe']]],
+ ['generic',['Generic',['../a00032.html#a17f63a064de966efddd5d0335992bc04a0ba6f369e7f8a700c14afe2992290544',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_4.js b/docs/reference/search/enumvalues_4.js
index 61da8bda..50ea809f 100644
--- a/docs/reference/search/enumvalues_4.js
+++ b/docs/reference/search/enumvalues_4.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['media',['Media',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74',1,'oboe']]],
- ['mono',['Mono',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79',1,'oboe']]],
- ['movie',['Movie',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1',1,'oboe']]],
- ['music',['Music',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517',1,'oboe']]]
+ ['media',['Media',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba3b563524fdb17b4a86590470d40bef74',1,'oboe']]],
+ ['mono',['Mono',['../a00032.html#a522e6806948369987639a0d1df03c029a8be103218645e121b51078620f452c79',1,'oboe']]],
+ ['movie',['Movie',['../a00032.html#a07eed38097ed944422063801f8f83406a8b3b366178c2b7b1688bca6cd33758b1',1,'oboe']]],
+ ['music',['Music',['../a00032.html#a07eed38097ed944422063801f8f83406ac156fcc7b29059305cef26f3904d4517',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_5.js b/docs/reference/search/enumvalues_5.js
index 026b1c8d..30728ae1 100644
--- a/docs/reference/search/enumvalues_5.js
+++ b/docs/reference/search/enumvalues_5.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['none',['None',['../namespaceoboe.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f',1,'oboe']]],
- ['notification',['Notification',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71',1,'oboe']]],
- ['notificationevent',['NotificationEvent',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f',1,'oboe']]],
- ['notificationringtone',['NotificationRingtone',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf',1,'oboe']]]
+ ['none',['None',['../a00032.html#a5752250c10e96179e3618d7f72937eafa58c518b26e83ea48393a76f6c9ecb51f',1,'oboe']]],
+ ['notification',['Notification',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba96d008db67fc0b5551a926842bbb6a71',1,'oboe']]],
+ ['notificationevent',['NotificationEvent',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba089240b5380dbd12f1eac0ec258a3b2f',1,'oboe']]],
+ ['notificationringtone',['NotificationRingtone',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba4e7a4b08274d472394b740a20d3bbdaf',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_6.js b/docs/reference/search/enumvalues_6.js
index 426976b1..9a1508f1 100644
--- a/docs/reference/search/enumvalues_6.js
+++ b/docs/reference/search/enumvalues_6.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['opensles',['OpenSLES',['../namespaceoboe.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b',1,'oboe']]]
+ ['opensles',['OpenSLES',['../a00032.html#a92972414867c81d5974cb2ed7abefbf6a24e758ea9c1e842ef71cc8ff8b63fa9b',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_7.js b/docs/reference/search/enumvalues_7.js
index 343909a5..04f3bc48 100644
--- a/docs/reference/search/enumvalues_7.js
+++ b/docs/reference/search/enumvalues_7.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['shared',['Shared',['../namespaceoboe.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca',1,'oboe']]],
- ['sonification',['Sonification',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799',1,'oboe']]],
- ['speech',['Speech',['../namespaceoboe.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1',1,'oboe']]],
- ['stereo',['Stereo',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba',1,'oboe']]]
+ ['shared',['Shared',['../a00032.html#ae3a52556c58387e0cecba01f9abffdffaa6156ea9d66fef24e87e841fbabf7cca',1,'oboe']]],
+ ['sonification',['Sonification',['../a00032.html#a07eed38097ed944422063801f8f83406a0885eef555037e94a7cf39fe683c2799',1,'oboe']]],
+ ['speech',['Speech',['../a00032.html#a07eed38097ed944422063801f8f83406a3dc48a4b4619aa4edd1da7b937b4dcd1',1,'oboe']]],
+ ['stereo',['Stereo',['../a00032.html#a522e6806948369987639a0d1df03c029a534e646333ca7568317b171ea96b89ba',1,'oboe']]]
];
diff --git a/docs/reference/search/enumvalues_8.js b/docs/reference/search/enumvalues_8.js
index 5c0add43..c3b1d9fd 100644
--- a/docs/reference/search/enumvalues_8.js
+++ b/docs/reference/search/enumvalues_8.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['unprocessed',['Unprocessed',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f',1,'oboe']]],
- ['unspecified',['Unspecified',['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76',1,'oboe::Unspecified()'],['../namespaceoboe.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5',1,'oboe::Unspecified()']]]
+ ['unprocessed',['Unprocessed',['../a00032.html#a17f63a064de966efddd5d0335992bc04acad9424158aefae0af7975901b11d85f',1,'oboe']]],
+ ['unspecified',['Unspecified',['../a00032.html#a522e6806948369987639a0d1df03c029a946257a568f77c12df4fc4c49125da76',1,'oboe::Unspecified()'],['../a00032.html#a522e6806948369987639a0d1df03c029a6fcdc090caeade09d0efd6253932b6f5',1,'oboe::Unspecified()']]]
];
diff --git a/docs/reference/search/enumvalues_9.js b/docs/reference/search/enumvalues_9.js
index ce7d1f87..a62416c4 100644
--- a/docs/reference/search/enumvalues_9.js
+++ b/docs/reference/search/enumvalues_9.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['voicecommunication',['VoiceCommunication',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d',1,'oboe::VoiceCommunication()'],['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6',1,'oboe::VoiceCommunication()']]],
- ['voicecommunicationsignalling',['VoiceCommunicationSignalling',['../namespaceoboe.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74',1,'oboe']]],
- ['voicerecognition',['VoiceRecognition',['../namespaceoboe.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc',1,'oboe']]]
+ ['voicecommunication',['VoiceCommunication',['../a00032.html#a17f63a064de966efddd5d0335992bc04a1862e72c9730c448fbec6f61a5d8234d',1,'oboe::VoiceCommunication()'],['../a00032.html#a17f63a064de966efddd5d0335992bc04a5bad8854288c956062ec1d4d7c14fed6',1,'oboe::VoiceCommunication()']]],
+ ['voicecommunicationsignalling',['VoiceCommunicationSignalling',['../a00032.html#a1b2a1bdc891d640eb82724dcd9b7afbba404f62633744bf4da0c6a27a2b78ce74',1,'oboe']]],
+ ['voicerecognition',['VoiceRecognition',['../a00032.html#a17f63a064de966efddd5d0335992bc04af6e440b4e9edf49afe18aa4be77be6fc',1,'oboe']]]
];
diff --git a/docs/reference/search/functions_0.js b/docs/reference/search/functions_0.js
index fc97eec8..b960c680 100644
--- a/docs/reference/search/functions_0.js
+++ b/docs/reference/search/functions_0.js
@@ -1,8 +1,8 @@
var searchData=
[
- ['calculatelatencymillis',['calculateLatencyMillis',['../classoboe_1_1_audio_stream.html#ae023cb001f3261d064f423101798d6be',1,'oboe::AudioStream']]],
- ['close',['close',['../classoboe_1_1_audio_stream.html#ad33a20f0d6792e322b9d8a2bcf14fcf8',1,'oboe::AudioStream']]],
- ['convertformattosizeinbytes',['convertFormatToSizeInBytes',['../namespaceoboe.html#ac67383a3df0f6e7a51f8415ffd9fdaca',1,'oboe']]],
- ['converttotext',['convertToText',['../namespaceoboe.html#a8d1ae211254cc239019f165b607f4365',1,'oboe']]],
- ['createbasedonsign',['createBasedOnSign',['../classoboe_1_1_result_with_value.html#a2304c6120e2aad8f2189383a98c7b0a7',1,'oboe::ResultWithValue']]]
+ ['calculatelatencymillis',['calculateLatencyMillis',['../a00036.html#ae023cb001f3261d064f423101798d6be',1,'oboe::AudioStream']]],
+ ['close',['close',['../a00036.html#ad33a20f0d6792e322b9d8a2bcf14fcf8',1,'oboe::AudioStream']]],
+ ['convertformattosizeinbytes',['convertFormatToSizeInBytes',['../a00032.html#ac67383a3df0f6e7a51f8415ffd9fdaca',1,'oboe']]],
+ ['converttotext',['convertToText',['../a00032.html#a8d1ae211254cc239019f165b607f4365',1,'oboe']]],
+ ['createbasedonsign',['createBasedOnSign',['../a00060.html#a2304c6120e2aad8f2189383a98c7b0a7',1,'oboe::ResultWithValue']]]
];
diff --git a/docs/reference/search/functions_1.js b/docs/reference/search/functions_1.js
index 4b3fb7dd..233a00e9 100644
--- a/docs/reference/search/functions_1.js
+++ b/docs/reference/search/functions_1.js
@@ -1,17 +1,17 @@
var searchData=
[
- ['getaudioapi',['getAudioApi',['../classoboe_1_1_audio_stream.html#a2b7a3cee7444114843dbdd1fc705f6bb',1,'oboe::AudioStream']]],
- ['getbuffercapacityinframes',['getBufferCapacityInFrames',['../classoboe_1_1_audio_stream_base.html#ab1531253e64aaebe9e9eddbafb9098fc',1,'oboe::AudioStreamBase']]],
- ['getbuffersizeinframes',['getBufferSizeInFrames',['../classoboe_1_1_audio_stream_base.html#af5217ab05bfde0d7637024b599302d0b',1,'oboe::AudioStreamBase']]],
- ['getchannelcount',['getChannelCount',['../classoboe_1_1_audio_stream_base.html#aa0b0a068097efaf967fb235c55383dd8',1,'oboe::AudioStreamBase']]],
- ['getdirection',['getDirection',['../classoboe_1_1_audio_stream_base.html#a6f86f2233a04c5a0b056f0c1c261f1b1',1,'oboe::AudioStreamBase']]],
- ['getformat',['getFormat',['../classoboe_1_1_audio_stream_base.html#ab1e640461d7bf9d596decb913da7ac86',1,'oboe::AudioStreamBase']]],
- ['getframesperburst',['getFramesPerBurst',['../classoboe_1_1_audio_stream.html#ac160acb656515814fa6fdd157c131a0a',1,'oboe::AudioStream']]],
- ['getframespercallback',['getFramesPerCallback',['../classoboe_1_1_audio_stream_base.html#a1c133e1949f0814f60bd8bb61346756b',1,'oboe::AudioStreamBase']]],
- ['getframeswritten',['getFramesWritten',['../classoboe_1_1_audio_stream.html#ab43dd4074e1de57bac1c3fd111430341',1,'oboe::AudioStream']]],
- ['getsamplerate',['getSampleRate',['../classoboe_1_1_audio_stream_base.html#ae9d32f3e09174bad69e74f147ee33087',1,'oboe::AudioStreamBase']]],
- ['getsdkversion',['getSdkVersion',['../namespaceoboe.html#a54528938e9fccab7ad8947ccf0e409db',1,'oboe']]],
- ['getstate',['getState',['../classoboe_1_1_audio_stream.html#a47bb5798275f14d76444283a6b6f35eb',1,'oboe::AudioStream']]],
- ['getunderlyingstream',['getUnderlyingStream',['../classoboe_1_1_audio_stream.html#a5458d7130415eb4defe3dbc11d479e2f',1,'oboe::AudioStream']]],
- ['getxruncount',['getXRunCount',['../classoboe_1_1_audio_stream.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261',1,'oboe::AudioStream']]]
+ ['getaudioapi',['getAudioApi',['../a00036.html#a2b7a3cee7444114843dbdd1fc705f6bb',1,'oboe::AudioStream']]],
+ ['getbuffercapacityinframes',['getBufferCapacityInFrames',['../a00040.html#ab1531253e64aaebe9e9eddbafb9098fc',1,'oboe::AudioStreamBase']]],
+ ['getbuffersizeinframes',['getBufferSizeInFrames',['../a00040.html#af5217ab05bfde0d7637024b599302d0b',1,'oboe::AudioStreamBase']]],
+ ['getchannelcount',['getChannelCount',['../a00040.html#aa0b0a068097efaf967fb235c55383dd8',1,'oboe::AudioStreamBase']]],
+ ['getdirection',['getDirection',['../a00040.html#a6f86f2233a04c5a0b056f0c1c261f1b1',1,'oboe::AudioStreamBase']]],
+ ['getformat',['getFormat',['../a00040.html#ab1e640461d7bf9d596decb913da7ac86',1,'oboe::AudioStreamBase']]],
+ ['getframesperburst',['getFramesPerBurst',['../a00036.html#ac160acb656515814fa6fdd157c131a0a',1,'oboe::AudioStream']]],
+ ['getframespercallback',['getFramesPerCallback',['../a00040.html#a1c133e1949f0814f60bd8bb61346756b',1,'oboe::AudioStreamBase']]],
+ ['getframeswritten',['getFramesWritten',['../a00036.html#ab43dd4074e1de57bac1c3fd111430341',1,'oboe::AudioStream']]],
+ ['getsamplerate',['getSampleRate',['../a00040.html#ae9d32f3e09174bad69e74f147ee33087',1,'oboe::AudioStreamBase']]],
+ ['getsdkversion',['getSdkVersion',['../a00032.html#a54528938e9fccab7ad8947ccf0e409db',1,'oboe']]],
+ ['getstate',['getState',['../a00036.html#a47bb5798275f14d76444283a6b6f35eb',1,'oboe::AudioStream']]],
+ ['getunderlyingstream',['getUnderlyingStream',['../a00036.html#a5458d7130415eb4defe3dbc11d479e2f',1,'oboe::AudioStream']]],
+ ['getxruncount',['getXRunCount',['../a00036.html#ad1a1d3bbf3b348ed92b7ed18ce9cc261',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/functions_2.js b/docs/reference/search/functions_2.js
index 65423a00..dbacfe3f 100644
--- a/docs/reference/search/functions_2.js
+++ b/docs/reference/search/functions_2.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['isaaudiorecommended',['isAAudioRecommended',['../classoboe_1_1_audio_stream_builder.html#a622732bbe5c6577356d749f7dc2108df',1,'oboe::AudioStreamBuilder']]],
- ['isaaudiosupported',['isAAudioSupported',['../classoboe_1_1_audio_stream_builder.html#a18e7b5f7554a4c2ca763e35e8117d699',1,'oboe::AudioStreamBuilder']]],
- ['isxruncountsupported',['isXRunCountSupported',['../classoboe_1_1_audio_stream.html#a43d8a098440cde28f4ee8bedd6d107c4',1,'oboe::AudioStream']]]
+ ['isaaudiorecommended',['isAAudioRecommended',['../a00044.html#a622732bbe5c6577356d749f7dc2108df',1,'oboe::AudioStreamBuilder']]],
+ ['isaaudiosupported',['isAAudioSupported',['../a00044.html#a18e7b5f7554a4c2ca763e35e8117d699',1,'oboe::AudioStreamBuilder']]],
+ ['isxruncountsupported',['isXRunCountSupported',['../a00036.html#a43d8a098440cde28f4ee8bedd6d107c4',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/functions_3.js b/docs/reference/search/functions_3.js
index 16730582..d8643bc9 100644
--- a/docs/reference/search/functions_3.js
+++ b/docs/reference/search/functions_3.js
@@ -1,12 +1,12 @@
var searchData=
[
- ['onaudioready',['onAudioReady',['../classoboe_1_1_audio_stream_callback.html#af3a7c44f0254abe6e5e5bb566e2317df',1,'oboe::AudioStreamCallback']]],
- ['ondefaultcallback',['onDefaultCallback',['../classoboe_1_1_audio_stream.html#abda7ae8e6832030572785de3964ed848',1,'oboe::AudioStream']]],
- ['onerrorafterclose',['onErrorAfterClose',['../classoboe_1_1_audio_stream_callback.html#a7089c5e18a80cba89eb3f4fe2341aeba',1,'oboe::AudioStreamCallback']]],
- ['onerrorbeforeclose',['onErrorBeforeClose',['../classoboe_1_1_audio_stream_callback.html#a2407ff537a60301fd161bd2c36913bfd',1,'oboe::AudioStreamCallback']]],
- ['open',['open',['../classoboe_1_1_audio_stream.html#a686c6ce8a29051c858fd1de386805dc6',1,'oboe::AudioStream']]],
- ['openstream',['openStream',['../classoboe_1_1_audio_stream_builder.html#a86b94cfa47729bef2e04dce1a9086074',1,'oboe::AudioStreamBuilder']]],
- ['operator_20bool',['operator bool',['../classoboe_1_1_result_with_value.html#ae32b1953b777af7d1d0c94862ca39986',1,'oboe::ResultWithValue']]],
- ['operator_20result',['operator Result',['../classoboe_1_1_result_with_value.html#af62107817c0bc76047e6b655a78504ba',1,'oboe::ResultWithValue']]],
- ['operator_21',['operator!',['../classoboe_1_1_result_with_value.html#a2dbc8b09ead8b073a78af95b4b0186e3',1,'oboe::ResultWithValue']]]
+ ['onaudioready',['onAudioReady',['../a00048.html#af3a7c44f0254abe6e5e5bb566e2317df',1,'oboe::AudioStreamCallback']]],
+ ['ondefaultcallback',['onDefaultCallback',['../a00036.html#abda7ae8e6832030572785de3964ed848',1,'oboe::AudioStream']]],
+ ['onerrorafterclose',['onErrorAfterClose',['../a00048.html#a7089c5e18a80cba89eb3f4fe2341aeba',1,'oboe::AudioStreamCallback']]],
+ ['onerrorbeforeclose',['onErrorBeforeClose',['../a00048.html#a2407ff537a60301fd161bd2c36913bfd',1,'oboe::AudioStreamCallback']]],
+ ['open',['open',['../a00036.html#a686c6ce8a29051c858fd1de386805dc6',1,'oboe::AudioStream']]],
+ ['openstream',['openStream',['../a00044.html#a86b94cfa47729bef2e04dce1a9086074',1,'oboe::AudioStreamBuilder']]],
+ ['operator_20bool',['operator bool',['../a00060.html#ae32b1953b777af7d1d0c94862ca39986',1,'oboe::ResultWithValue']]],
+ ['operator_20result',['operator Result',['../a00060.html#af62107817c0bc76047e6b655a78504ba',1,'oboe::ResultWithValue']]],
+ ['operator_21',['operator!',['../a00060.html#a2dbc8b09ead8b073a78af95b4b0186e3',1,'oboe::ResultWithValue']]]
];
diff --git a/docs/reference/search/functions_4.js b/docs/reference/search/functions_4.js
index f3a34849..16f07987 100644
--- a/docs/reference/search/functions_4.js
+++ b/docs/reference/search/functions_4.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['requestreset',['requestReset',['../classoboe_1_1_latency_tuner.html#a6c0142e08dc65eda8f758b4794450867',1,'oboe::LatencyTuner']]]
+ ['requestreset',['requestReset',['../a00056.html#a6c0142e08dc65eda8f758b4794450867',1,'oboe::LatencyTuner']]]
];
diff --git a/docs/reference/search/functions_5.js b/docs/reference/search/functions_5.js
index a2f050af..0abd90f0 100644
--- a/docs/reference/search/functions_5.js
+++ b/docs/reference/search/functions_5.js
@@ -1,19 +1,19 @@
var searchData=
[
- ['setaudioapi',['setAudioApi',['../classoboe_1_1_audio_stream_builder.html#a38c6d6c5e718df1e3ac69daaac47c391',1,'oboe::AudioStreamBuilder']]],
- ['setbuffercapacityinframes',['setBufferCapacityInFrames',['../classoboe_1_1_audio_stream_builder.html#abaff480867af51ca0899bfa6fd7cc3ef',1,'oboe::AudioStreamBuilder']]],
- ['setbuffersizeinframes',['setBufferSizeInFrames',['../classoboe_1_1_audio_stream.html#ac93b18e18487e809151f63ec3c6228bb',1,'oboe::AudioStream']]],
- ['setcallback',['setCallback',['../classoboe_1_1_audio_stream_builder.html#a698cefa9af73bc97c020c004821fccbd',1,'oboe::AudioStreamBuilder']]],
- ['setchannelcount',['setChannelCount',['../classoboe_1_1_audio_stream_builder.html#a075d10291e1f998d90c2f73ef767b5a7',1,'oboe::AudioStreamBuilder']]],
- ['setcontenttype',['setContentType',['../classoboe_1_1_audio_stream_builder.html#a6a17bafc217c2b624179fbbf77fe4468',1,'oboe::AudioStreamBuilder']]],
- ['setdeviceid',['setDeviceId',['../classoboe_1_1_audio_stream_builder.html#af36ddcd00686a9e1de661bdac0685a8e',1,'oboe::AudioStreamBuilder']]],
- ['setdirection',['setDirection',['../classoboe_1_1_audio_stream_builder.html#ab3fbd47b06197619c26393637e26354c',1,'oboe::AudioStreamBuilder']]],
- ['setformat',['setFormat',['../classoboe_1_1_audio_stream_builder.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515',1,'oboe::AudioStreamBuilder']]],
- ['setframespercallback',['setFramesPerCallback',['../classoboe_1_1_audio_stream_builder.html#a3f397821f61eabaeedaf31064c859a54',1,'oboe::AudioStreamBuilder']]],
- ['setinputpreset',['setInputPreset',['../classoboe_1_1_audio_stream_builder.html#a144a3d095fd668210282f1a91f23e1f0',1,'oboe::AudioStreamBuilder']]],
- ['setperformancemode',['setPerformanceMode',['../classoboe_1_1_audio_stream_builder.html#a6cd1d65612e844e59da71a68ea0ab3ee',1,'oboe::AudioStreamBuilder']]],
- ['setsamplerate',['setSampleRate',['../classoboe_1_1_audio_stream_builder.html#a30ef3d5f51d56a9f980dc09600ed139d',1,'oboe::AudioStreamBuilder']]],
- ['setsessionid',['setSessionId',['../classoboe_1_1_audio_stream_builder.html#a54c1651bdbe089d0d714af499e8a5f1d',1,'oboe::AudioStreamBuilder']]],
- ['setsharingmode',['setSharingMode',['../classoboe_1_1_audio_stream_builder.html#a3e991742acbbfb6fe5ebcf592c478654',1,'oboe::AudioStreamBuilder']]],
- ['setusage',['setUsage',['../classoboe_1_1_audio_stream_builder.html#a593255a2f5eb972665775cfc5bc58f6a',1,'oboe::AudioStreamBuilder']]]
+ ['setaudioapi',['setAudioApi',['../a00044.html#a38c6d6c5e718df1e3ac69daaac47c391',1,'oboe::AudioStreamBuilder']]],
+ ['setbuffercapacityinframes',['setBufferCapacityInFrames',['../a00044.html#abaff480867af51ca0899bfa6fd7cc3ef',1,'oboe::AudioStreamBuilder']]],
+ ['setbuffersizeinframes',['setBufferSizeInFrames',['../a00036.html#ac93b18e18487e809151f63ec3c6228bb',1,'oboe::AudioStream']]],
+ ['setcallback',['setCallback',['../a00044.html#a698cefa9af73bc97c020c004821fccbd',1,'oboe::AudioStreamBuilder']]],
+ ['setchannelcount',['setChannelCount',['../a00044.html#a075d10291e1f998d90c2f73ef767b5a7',1,'oboe::AudioStreamBuilder']]],
+ ['setcontenttype',['setContentType',['../a00044.html#a6a17bafc217c2b624179fbbf77fe4468',1,'oboe::AudioStreamBuilder']]],
+ ['setdeviceid',['setDeviceId',['../a00044.html#af36ddcd00686a9e1de661bdac0685a8e',1,'oboe::AudioStreamBuilder']]],
+ ['setdirection',['setDirection',['../a00044.html#ab3fbd47b06197619c26393637e26354c',1,'oboe::AudioStreamBuilder']]],
+ ['setformat',['setFormat',['../a00044.html#aa2e1d2d73cd6c2eb9f349bf2fe5f6515',1,'oboe::AudioStreamBuilder']]],
+ ['setframespercallback',['setFramesPerCallback',['../a00044.html#a3f397821f61eabaeedaf31064c859a54',1,'oboe::AudioStreamBuilder']]],
+ ['setinputpreset',['setInputPreset',['../a00044.html#a144a3d095fd668210282f1a91f23e1f0',1,'oboe::AudioStreamBuilder']]],
+ ['setperformancemode',['setPerformanceMode',['../a00044.html#a6cd1d65612e844e59da71a68ea0ab3ee',1,'oboe::AudioStreamBuilder']]],
+ ['setsamplerate',['setSampleRate',['../a00044.html#a30ef3d5f51d56a9f980dc09600ed139d',1,'oboe::AudioStreamBuilder']]],
+ ['setsessionid',['setSessionId',['../a00044.html#a54c1651bdbe089d0d714af499e8a5f1d',1,'oboe::AudioStreamBuilder']]],
+ ['setsharingmode',['setSharingMode',['../a00044.html#a3e991742acbbfb6fe5ebcf592c478654',1,'oboe::AudioStreamBuilder']]],
+ ['setusage',['setUsage',['../a00044.html#a593255a2f5eb972665775cfc5bc58f6a',1,'oboe::AudioStreamBuilder']]]
];
diff --git a/docs/reference/search/functions_6.js b/docs/reference/search/functions_6.js
index 40c62d8c..9f8dfb69 100644
--- a/docs/reference/search/functions_6.js
+++ b/docs/reference/search/functions_6.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['tune',['tune',['../classoboe_1_1_latency_tuner.html#ad2be756965e6a9af3114008eda892174',1,'oboe::LatencyTuner']]]
+ ['tune',['tune',['../a00056.html#ad2be756965e6a9af3114008eda892174',1,'oboe::LatencyTuner']]]
];
diff --git a/docs/reference/search/functions_7.js b/docs/reference/search/functions_7.js
index 90b5f460..88c115f2 100644
--- a/docs/reference/search/functions_7.js
+++ b/docs/reference/search/functions_7.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['usesaaudio',['usesAAudio',['../classoboe_1_1_audio_stream.html#a15cdaaaa4c1e8da322d6da33334c8147',1,'oboe::AudioStream']]]
+ ['usesaaudio',['usesAAudio',['../a00036.html#a15cdaaaa4c1e8da322d6da33334c8147',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/functions_8.js b/docs/reference/search/functions_8.js
index 346765c5..57aa014d 100644
--- a/docs/reference/search/functions_8.js
+++ b/docs/reference/search/functions_8.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['waitforstatechange',['waitForStateChange',['../classoboe_1_1_audio_stream.html#a0c865a5501f369d959c39d8ab8b46a07',1,'oboe::AudioStream']]],
- ['waitforstatetransition',['waitForStateTransition',['../classoboe_1_1_audio_stream.html#a8adbacd6a55a94a532916ab037fba1d6',1,'oboe::AudioStream']]],
- ['write',['write',['../classoboe_1_1_audio_stream.html#ab3f6bf8abed87f3804ac4df3472c3670',1,'oboe::AudioStream']]]
+ ['waitforstatechange',['waitForStateChange',['../a00036.html#a0c865a5501f369d959c39d8ab8b46a07',1,'oboe::AudioStream']]],
+ ['waitforstatetransition',['waitForStateTransition',['../a00036.html#a8adbacd6a55a94a532916ab037fba1d6',1,'oboe::AudioStream']]],
+ ['write',['write',['../a00036.html#ab3f6bf8abed87f3804ac4df3472c3670',1,'oboe::AudioStream']]]
];
diff --git a/docs/reference/search/namespaces_0.js b/docs/reference/search/namespaces_0.js
index 9e061ed9..f5689df5 100644
--- a/docs/reference/search/namespaces_0.js
+++ b/docs/reference/search/namespaces_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['oboe',['oboe',['../namespaceoboe.html',1,'']]]
+ ['oboe',['oboe',['../a00032.html',1,'']]]
];
diff --git a/docs/reference/search/variables_0.js b/docs/reference/search/variables_0.js
index 7c9225d5..093dfa7b 100644
--- a/docs/reference/search/variables_0.js
+++ b/docs/reference/search/variables_0.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['major',['Major',['../structoboe_1_1_version.html#a270f2e92582d5187be339eeda8e2b276',1,'oboe::Version']]],
- ['minor',['Minor',['../structoboe_1_1_version.html#ae460bb95e3a9099696205a35fffb5469',1,'oboe::Version']]]
+ ['major',['Major',['../a00064.html#a270f2e92582d5187be339eeda8e2b276',1,'oboe::Version']]],
+ ['minor',['Minor',['../a00064.html#ae460bb95e3a9099696205a35fffb5469',1,'oboe::Version']]]
];
diff --git a/docs/reference/search/variables_1.js b/docs/reference/search/variables_1.js
index 12f30841..3f287d2c 100644
--- a/docs/reference/search/variables_1.js
+++ b/docs/reference/search/variables_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['number',['Number',['../structoboe_1_1_version.html#ac579661e79bcee45dc676d4647891de0',1,'oboe::Version']]]
+ ['number',['Number',['../a00064.html#ac579661e79bcee45dc676d4647891de0',1,'oboe::Version']]]
];
diff --git a/docs/reference/search/variables_2.js b/docs/reference/search/variables_2.js
index 5bf03881..3e251a9a 100644
--- a/docs/reference/search/variables_2.js
+++ b/docs/reference/search/variables_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['patch',['Patch',['../structoboe_1_1_version.html#a690110f2b3e887892da8f29ab5c057b2',1,'oboe::Version']]]
+ ['patch',['Patch',['../a00064.html#a690110f2b3e887892da8f29ab5c057b2',1,'oboe::Version']]]
];
diff --git a/docs/reference/search/variables_3.js b/docs/reference/search/variables_3.js
index 5e6f721c..0667719e 100644
--- a/docs/reference/search/variables_3.js
+++ b/docs/reference/search/variables_3.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['samplerate',['SampleRate',['../classoboe_1_1_default_stream_values.html#a46a5d9a653f2153f618cadcab764e1b1',1,'oboe::DefaultStreamValues']]]
+ ['samplerate',['SampleRate',['../a00052.html#a46a5d9a653f2153f618cadcab764e1b1',1,'oboe::DefaultStreamValues']]]
];
diff --git a/docs/reference/search/variables_4.js b/docs/reference/search/variables_4.js
index 9df80e8e..13a94071 100644
--- a/docs/reference/search/variables_4.js
+++ b/docs/reference/search/variables_4.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['text',['Text',['../structoboe_1_1_version.html#a2c86e578b827fbca5f40c460a7754503',1,'oboe::Version']]]
+ ['text',['Text',['../a00064.html#a2c86e578b827fbca5f40c460a7754503',1,'oboe::Version']]]
];