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