Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 298f382 | 2013-06-12 17:17:36 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 298f382 | 2013-06-12 17:17:36 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 298f382 | 2013-06-12 17:17:36 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 298f382 | 2013-06-12 17:17:36 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 298f382 | 2013-06-12 17:17:36 -0700 | [diff] [blame] | 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 | |
Glenn Kasten | 963fd95 | 2013-04-18 17:26:23 -0700 | [diff] [blame] | 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 | |