page.title=Audio Latency
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<p>Audio latency is the time delay as an audio signal passes through a system.
</p>

<h3 id="resources">Resources</h3>

<table>
<tr>
  <th>Topic</th>
  <th>Links</th>
</tr>
<tr>
  <td>Description of audio latency for purposes of Android compatibility</td>
  <td><a href="{@docRoot}compatibility/android-cdd.pdf">Android CDD</a><br /><em>section 5.5 Audio Latency</em></td>
</tr>
<tr>
  <td>Common causes of audio latency</td>
  <td><a href="latency_contrib.html">Contributors to Audio Latency</a></td>
</tr>
<tr>
  <td>Android's audio latency-reduction efforts</td>
  <td><a href="latency_design.html">Design For Reduced Latency</a></td>
</tr>
<tr>
  <td>Techniques to measure audio latency</td>
  <td>
    <a href="latency_measure.html">Measuring Audio Latency</a><br />
    <a href="testing_circuit.html">Light Testing Circuit</a><br />
    <a href="loopback.html">Audio Loopback Dongle</a>
  </td>
</tr>
<tr>
  <td>Round-trip audio latency results</td>
  <td><a href="latency_measurements.html">Audio Latency Measurements</a></td>
</tr>
</table>
