aboutsummaryrefslogtreecommitdiff
path: root/docs/reference/a00056.html
blob: 84940660b46f33cab64db4acde55292742e94304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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>