1page.title=Audio Terminology 2@jd:body 3 4<div id="qv-wrapper"> 5 <div id="qv"> 6 <h2>In this document</h2> 7 <ol id="auto-toc"> 8 </ol> 9 </div> 10</div> 11 12<p> 13This document provides a glossary of audio-related terminology, including 14a list of widely used, generic terms and a list of terms that are specific 15to Android. 16</p> 17 18<h2 id="genericTerm">Generic Terms</h2> 19 20<p> 21These are audio terms that are widely used, with their conventional meanings. 22</p> 23 24<dl> 25 26<dt>acoustics</dt> 27<dd> 28The study of the mechanical properties of sound, for example how the 29physical placement of transducers such as speakers and microphones on 30a device affects perceived audio quality. 31</dd> 32 33<dt>bits per sample or bit depth</dt> 34<dd> 35Number of bits of information per sample. 36</dd> 37 38<dt>channel</dt> 39<dd> 40A single stream of audio information, usually corresponding to one 41location of recording or playback. 42</dd> 43 44<dt>frame</dt> 45<dd> 46A set of samples, one per channel, at a point in time. 47</dd> 48 49<dt>frames per buffer</dt> 50<dd> 51The number of frames handed from one module to the next at once; 52for example the audio HAL interface uses this concept. 53</dd> 54 55<dt>Hz</dt> 56<dd> 57The units for sample rate or frame rate. 58</dd> 59 60<dt>latency</dt> 61<dd> 62Time delay as a signal passes through a system. 63</dd> 64 65<dt>mono</dt> 66<dd> 67One channel. 68</dd> 69 70<dt>sample</dt> 71<dd> 72A number representing the audio value for a single channel at a point in time. 73</dd> 74 75<dt>sample rate or frame rate</dt> 76<dd> 77Number of frames per second; 78note that "frame rate" is thus more accurate, 79but "sample rate" is conventionally used to mean "frame rate". 80</dd> 81 82<dt>stereo</dt> 83<dd> 84Two channels. 85</dd> 86 87</dl> 88 89<h2 id="androidSpecificTerms">Android-Specific Terms</h2> 90 91<p> 92These are terms that are specific to Android audio framework, or that 93may have a special meaning within Android beyond their general meaning. 94</p> 95 96<dl> 97 98<dt>ALSA</dt> 99<dd> 100Advanced Linux Sound Architecture. As the name suggests, it is an audio 101framework primarily for Linux, but it has influenced other systems. 102See Wikipedia article 103<a class="external-link" href="http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture" target="_android">ALSA</a> 104for the general definition. As used within Android, it refers primarily 105to the kernel audio framework and drivers, not to the user-mode API. See 106tinyalsa. 107</dd> 108 109<dt>AudioEffect</dt> 110<dd> 111An API and implementation framework for output (post-processing) effects 112and input (pre-processing) effects. The API is defined at 113<a class="external-link" href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html" target="_android">android.media.audiofx.AudioEffect</a> 114</dd> 115 116<dt>AudioFlinger</dt> 117<dd> 118The sound server implementation for Android. AudioFlinger 119runs within the mediaserver process. See Wikipedia article 120<a class="external-link" href="http://en.wikipedia.org/wiki/Sound_server" target="_android">Sound server</a> 121for the generic definition. 122</dd> 123 124<dt>AudioMixer</dt> 125<dd> 126The module within AudioFlinger responsible for 127combining multiple tracks and applying attenuation 128(volume) and certain effects. The Wikipedia article 129<a class="external-link" href="http://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)" target="_android">Audio mixing (recorded music)</a> 130may be useful for understanding the generic 131concept. But that article describes a mixer more as a hardware device 132or a software application, rather than a software module within a system. 133</dd> 134 135<dt>AudioRecord</dt> 136<dd> 137The primary low-level client API for receiving data from an audio 138input device such as microphone. The data is usually in PCM format. 139</dd> 140 141<dt>AudioResampler</dt> 142<dd> 143The module within AudioFlinger responsible for sample-rate conversion. See Wikipedia article 144<a class="external-link" href="http://en.wikipedia.org/wiki/Resampling_(audio)" target="_android">Resampling (audio)</a> 145for the generic definition. 146</dd> 147 148<dt>audio policy</dt> 149<dd> 150Service responsible for all actions that require a policy decision 151to be made first, such as opening a new I/O stream, re-routing after a 152change and stream volume management. 153</dd> 154 155<dt>AudioTrack</dt> 156<dd> 157The primary low-level client API for sending data to an audio output 158device such as a speaker. The data is usually in PCM format. 159</dd> 160 161<dt>client</dt> 162<dd> 163Usually same as application or app, but sometimes the "client" of 164AudioFlinger is actually a thread running within the mediaserver system 165process. An example of that is when playing media that is decoded by a 166MediaPlayer object. 167</dd> 168 169<dt>HAL</dt> 170<dd> 171Hardware Abstraction Layer. HAL is a generic term in Android. With 172respect to audio, it is a layer between AudioFlinger and the kernel 173device driver with a C API, which replaces the earlier C++ libaudio. 174</dd> 175 176<dt>FastMixer</dt> 177<dd> 178A thread within AudioFlinger that services lower latency "fast tracks" 179and drives the primary output device. 180</dd> 181 182<dt>fast track</dt> 183<dd> 184An AudioTrack client with lower latency but fewer features, on some devices. 185</dd> 186 187<dt>MediaPlayer</dt> 188<dd> 189A higher-level client API than AudioTrack, for playing either encoded 190content, or content which includes multi-media audio and video tracks. 191</dd> 192 193<dt>media.log</dt> 194<dd> 195An AudioFlinger debugging feature, available in custom builds only, 196for logging audio events to a circular buffer where they can then be 197dumped retroactively when needed. 198</dd> 199 200<dt>mediaserver</dt> 201<dd> 202An Android system process that contains a number of media-related 203services, including AudioFlinger. 204</dd> 205 206<dt>NBAIO</dt> 207<dd> 208An abstraction for "non-blocking" audio input/output ports used within 209AudioFlinger. The name can be misleading, as some implementations of 210the NBAIO API actually do support blocking. The key implementations of 211NBAIO are for pipes of various kinds. 212</dd> 213 214<dt>normal mixer</dt> 215<dd> 216A thread within AudioFlinger that services most full-featured 217AudioTrack clients, and either directly drives an output device or feeds 218it's sub-mix into FastMixer via a pipe. 219</dd> 220 221<dt>OpenSL ES</dt> 222<dd> 223An audio API standard by The Khronos Group. Android versions since 224API level 9 support a native audio API which is based on a subset of 225OpenSL ES 1.0.1. 226</dd> 227 228<dt>StateQueue</dt> 229<dd> 230A module within AudioFlinger responsible for synchronizing state 231among threads. Whereas NBAIO is used to pass data, StateQueue is used 232to pass control information. 233</dd> 234 235<dt>tee sink</dt> 236<dd> 237An AudioFlinger debugging feature, available in custom builds only, 238for retaining a short fragment of recent audio for later analysis. 239This permits comparison between what was actually played or recorded 240vs. what was expected. 241</dd> 242 243<dt>tinyalsa</dt> 244<dd> 245A small user-mode API above ALSA kernel with BSD license, recommended 246for use by HAL implementations. 247</dd> 248 249<dt>track</dt> 250<dd> 251An audio stream, controlled by the AudioTrack API. 252</dd> 253 254</dl> 255 256</p> 257 258