• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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