blob: 0cd25a46a43101e89fa04ef672bccb6d20297057 [file] [log] [blame]
Glenn Kasten963fd952013-04-18 17:26:23 -07001page.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
Glenn Kasten5df2d522013-09-27 11:50:35 -070024<h3 id="digitalAudioTerms">Digital Audio</h3>
25
Glenn Kasten963fd952013-04-18 17:26:23 -070026<dl>
27
Glenn Kasten298f3822013-06-12 17:17:36 -070028<dt>acoustics</dt>
29<dd>
30The study of the mechanical properties of sound, for example how the
31physical placement of transducers such as speakers and microphones on
32a device affects perceived audio quality.
33</dd>
34
Glenn Kasten5df2d522013-09-27 11:50:35 -070035<dt>attenuation</dt>
36<dd>
37A multiplicative factor less than or equal to 1.0,
38applied to an audio signal to decrease the signal level.
39Compare to "gain".
40</dd>
41
Glenn Kasten963fd952013-04-18 17:26:23 -070042<dt>bits per sample or bit depth</dt>
43<dd>
44Number of bits of information per sample.
45</dd>
46
47<dt>channel</dt>
48<dd>
49A single stream of audio information, usually corresponding to one
50location of recording or playback.
51</dd>
52
Glenn Kasten5df2d522013-09-27 11:50:35 -070053<dt>downmixing</dt>
54<dd>
55To decrease the number of channels, e.g. from stereo to mono, or from 5.1 to stereo.
56This can be accomplished by dropping some channels, mixing channels, or more advanced signal processing.
57Simple mixing without attenuation or limiting has the potential for overflow and clipping.
58Compare to "upmixing".
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -070059</dd>
60
61<dt>duck</dt>
62<dd>
63To temporarily reduce the volume of one stream, when another stream
64becomes active. For example, if music is playing and a notification arrives,
65then the music stream could be ducked while the notification plays.
66Compare to "mute".
67</dd>
Glenn Kasten5df2d522013-09-27 11:50:35 -070068
Glenn Kasten963fd952013-04-18 17:26:23 -070069<dt>frame</dt>
70<dd>
71A set of samples, one per channel, at a point in time.
72</dd>
73
74<dt>frames per buffer</dt>
75<dd>
76The number of frames handed from one module to the next at once;
77for example the audio HAL interface uses this concept.
78</dd>
79
Glenn Kasten5df2d522013-09-27 11:50:35 -070080<dt>gain</dt>
81<dd>
82A multiplicative factor greater than or equal to 1.0,
83applied to an audio signal to increase the signal level.
84Compare to "attenuation".
85</dd>
86
Glenn Kasten298f3822013-06-12 17:17:36 -070087<dt>Hz</dt>
88<dd>
89The units for sample rate or frame rate.
90</dd>
91
92<dt>latency</dt>
93<dd>
94Time delay as a signal passes through a system.
95</dd>
96
Glenn Kasten963fd952013-04-18 17:26:23 -070097<dt>mono</dt>
98<dd>
99One channel.
100</dd>
101
Glenn Kasten5df2d522013-09-27 11:50:35 -0700102<dt>multichannel</dt>
103<dd>
104See "surround sound".
105Strictly, since stereo is more than one channel, it is also "multi" channel.
106But that usage would be confusing.
107</dd>
108
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700109<dt>mute</dt>
110<dd>
111To (temporarily) force volume to be zero, independently from the usual volume controls.
112</dd>
113
Glenn Kasten5df2d522013-09-27 11:50:35 -0700114<dt>PCM</dt>
115<dd>
116Pulse Code Modulation, the most common low-level encoding of digital audio.
117The audio signal is sampled at a regular interval, called the sample rate,
118and then quantized to discrete values within a particular range depending on the bit depth.
119For example, for 16-bit PCM, the sample values are integers between -32768 and +32767.
120</dd>
121
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700122<dt>ramp</dt>
123<dd>
124To gradually increase or decrease the level of a particular audio parameter,
125for example volume or the strength of an effect.
126A volume ramp is commonly applied when pausing and resuming music, to avoid a hard audible transition.
127</dd>
128
Glenn Kasten963fd952013-04-18 17:26:23 -0700129<dt>sample</dt>
130<dd>
131A number representing the audio value for a single channel at a point in time.
132</dd>
133
134<dt>sample rate or frame rate</dt>
135<dd>
136Number of frames per second;
137note that "frame rate" is thus more accurate,
Clay Murphyc28f2372013-09-25 16:13:40 -0700138but "sample rate" is conventionally used to mean "frame rate."
Glenn Kasten963fd952013-04-18 17:26:23 -0700139</dd>
140
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700141<dt>sonification</dt>
142<dd>
143The use of sound to express feedback or information,
144for example touch sounds and keyboard sounds.
145</dd>
146
Glenn Kasten963fd952013-04-18 17:26:23 -0700147<dt>stereo</dt>
148<dd>
149Two channels.
150</dd>
151
Glenn Kasten5df2d522013-09-27 11:50:35 -0700152<dt>stereo widening</dt>
153<dd>
154An effect applied to a stereo signal, to make another stereo signal which sounds fuller and richer.
155The effect can also be applied to a mono signal, in which case it is a type of upmixing.
156</dd>
157
158<dt>surround sound</dt>
159<dd>
160Various techniques for increasing the ability of a listener to perceive
161sound position beyond stereo left and right.
162</dd>
163
164<dt>upmixing</dt>
165<dd>
166To increase the number of channels, e.g. from mono to stereo, or from stereo to surround sound.
167This can be accomplished by duplication, panning, or more advanced signal processing.
168Compare to "downmixing".
Glenn Kasten795a9de2014-01-24 08:58:56 -0800169</dd>
Glenn Kasten963fd952013-04-18 17:26:23 -0700170
Glenn Kasten5df2d522013-09-27 11:50:35 -0700171<dt>virtualizer</dt>
172<dd>
173An effect that attempts to spatialize audio channels, such as trying to
174simulate more speakers, or give the illusion that various sound sources have position.
175</dd>
176
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700177<dt>volume</dt>
178<dd>
179Loudness, the subjective strength of an audio signal.
180</dd>
181
Glenn Kasten795a9de2014-01-24 08:58:56 -0800182</dl>
183
Glenn Kasten5df2d522013-09-27 11:50:35 -0700184<h3 id="hardwareTerms">Hardware and Accessories</h3>
185
186<p>
187These terms are related to audio hardware and accessories.
188</p>
189
190<h4 id="interDeviceTerms">Inter-device interconnect</h4>
191
192<p>
193These technologies connect audio and video components between devices,
194and are readily visible at the external connectors. The HAL implementor
195may need to be aware of these, as well as the end user.
196</p>
197
198<dl>
199
200<dt>Bluetooth</dt>
201<dd>
202A short range wireless technology.
203The major audio-related
204<a class="external-link" href="http://en.wikipedia.org/wiki/Bluetooth_profile"
205target="_android">Bluetooth profiles</a>
206and
207<a class="external-link" href="http://en.wikipedia.org/wiki/Bluetooth_protocols"
208target="_android">Bluetooth protocols</a>
209are described at these Wikipedia articles:
210
211<ul>
212
213<li><a class="external-link"
214href="http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29"
215target="_android">A2DP</a>
216for music
217</li>
218
219<li><a class="external-link"
220href="http://en.wikipedia.org/wiki/Bluetooth_protocols#Synchronous_connection-oriented_.28SCO.29_link"
221target="_android">SCO</a>
222for telephony
223</li>
224
225</ul>
226
227</dd>
228
229<dt>DisplayPort</dt>
230<dd>
231Digital display interface by VESA.
232</dd>
233
234<dt>HDMI</dt>
235<dd>
236High-Definition Multimedia Interface, an interface for transferring
237audio and video data. For mobile devices, either a micro-HDMI (type D) or MHL connector is used.
238</dd>
239
240<dt>MHL</dt>
241<dd>
242Mobile High-Definition Link is a mobile audio/video interface, often
243over micro-USB connector.
244</dd>
245
246<dt>phone connector</dt>
247<dd>
248A mini or sub-mini phone connector
249connects a device to wired headphones, headset, or line-level amplifier.
250</dd>
251
252<dt>SlimPort</dt>
253<dd>
254An adapter from micro-USB to HDMI.
255</dd>
256
257<dt>S/PDIF</dt>
258<dd>
259Sony/Philips Digital Interface Format is an interconnect for uncompressed PCM.
260See Wikipedia article <a class="external-link" href="http://en.wikipedia.org/wiki/S/PDIF"
261target="_android">S/PDIF</a>.
262</dd>
263
264<dt>USB</dt>
265<dd>
266Universal Serial Bus.
267See Wikipedia article <a class="external-link" href="http://en.wikipedia.org/wiki/USB" target="_android">USB</a>.
268</dd>
269
270</dl>
271
272<h4 id="intraDeviceTerms">Intra-device interconnect</h4>
273
274<p>
275These technologies connect internal audio components within a given
276device, and are not visible without disassembling the device. The HAL
277implementor may need to be aware of these, but not the end user.
278</p>
279
280See these Wikipedia articles:
281<ul>
282<li><a class="external-link" href="http://en.wikipedia.org/wiki/General-purpose_input/output"
283target="_android">GPIO</a></li>
284<li><a class="external-link" href="http://en.wikipedia.org/wiki/I%C2%B2C" target="_android">I²C</a></li>
285<li><a class="external-link" href="http://en.wikipedia.org/wiki/I%C2%B2S" target="_android">I²S</a></li>
286<li><a class="external-link" href="http://en.wikipedia.org/wiki/McASP" target="_android">McASP</a></li>
287<li><a class="external-link" href="http://en.wikipedia.org/wiki/SLIMbus" target="_android">SLIMbus</a></li>
288<li><a class="external-link" href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus"
289target="_android">SPI</a></li>
290</ul>
291
292<h3 id="signalTerms">Audio Signal Path</h3>
293
294<p>
295These terms are related to the signal path that audio data follows from
296an application to the transducer, or vice-versa.
297</p>
298
Glenn Kasten795a9de2014-01-24 08:58:56 -0800299<dl>
300
Glenn Kasten5df2d522013-09-27 11:50:35 -0700301<dt>ADC</dt>
302<dd>
303Analog to digital converter, a module that converts an analog signal
304(continuous in both time and amplitude) to a digital signal (discrete in
305both time and amplitude). Conceptually, an ADC consists of a periodic
306sample-and-hold followed by a quantizer, although it does not have to
307be implemented that way. An ADC is usually preceded by a low-pass filter
308to remove any high frequency components that are not representable using
309the desired sample rate. See Wikipedia article
310<a class="external-link" href="http://en.wikipedia.org/wiki/Analog-to-digital_converter"
311target="_android">Analog-to-digital_converter</a>.
312</dd>
313
314<dt>AP</dt>
315<dd>
316Application processor, the main general-purpose computer on a mobile device.
317</dd>
318
319<dt>codec</dt>
320<dd>
321Coder-decoder, a module that encodes and/or decodes an audio signal
322from one representation to another. Typically this is analog to PCM, or PCM to analog.
323Strictly, the term "codec" is reserved for modules that both encode and decode,
324however it can also more loosely refer to only one of these.
325See Wikipedia article
326<a class="external-link" href="http://en.wikipedia.org/wiki/Audio_codec" target="_android">Audio codec</a>.
327</dd>
328
329<dt>DAC</dt>
330<dd>
331Digital to analog converter, a module that converts a digital signal
332(discrete in both time and amplitude) to an analog signal
333(continuous in both time and amplitude). A DAC is usually followed by
334a low-pass filter to remove any high frequency components introduced
335by digital quantization.
336See Wikipedia article
337<a class="external-link" href="http://en.wikipedia.org/wiki/Digital-to-analog_converter"
338target="_android">Digital-to-analog converter</a>.
339</dd>
340
341<dt>DSP</dt>
342<dd>
343Digital Signal Processor, an optional component which is typically located
344after the application processor (for output), or before the application processor (for input).
345The primary purpose of a DSP is to off-load the application processor,
346and provide signal processing features at a lower power cost.
347</dd>
348
349<dt>PDM</dt>
350<dd>
351Pulse-density modulation
352is a form of modulation used to represent an analog signal by a digital signal,
353where the relative density of 1s versus 0s indicates the signal level.
354It is commonly used by digital to analog converters.
355See Wikipedia article
356<a class="external-link" href="http://en.wikipedia.org/wiki/Pulse-density_modulation"
357target="_android">Pulse-density modulation</a>.
358</dd>
359
360<dt>PWM</dt>
361<dd>
362Pulse-width modulation
363is a form of modulation used to represent an analog signal by a digital signal,
364where the relative width of a digital pulse indicates the signal level.
365It is commonly used by analog to digital converters.
366See Wikipedia article
367<a class="external-link" href="http://en.wikipedia.org/wiki/Pulse-width_modulation"
368target="_android">Pulse-width modulation</a>.
369</dd>
370
Glenn Kasten795a9de2014-01-24 08:58:56 -0800371</dl>
Glenn Kasten5df2d522013-09-27 11:50:35 -0700372
Glenn Kasten963fd952013-04-18 17:26:23 -0700373<h2 id="androidSpecificTerms">Android-Specific Terms</h2>
374
375<p>
Clay Murphyc28f2372013-09-25 16:13:40 -0700376These are terms specific to the Android audio framework, or that
Glenn Kasten963fd952013-04-18 17:26:23 -0700377may have a special meaning within Android beyond their general meaning.
378</p>
379
380<dl>
381
382<dt>ALSA</dt>
383<dd>
384Advanced Linux Sound Architecture. As the name suggests, it is an audio
385framework primarily for Linux, but it has influenced other systems.
386See Wikipedia article
387<a class="external-link" href="http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture" target="_android">ALSA</a>
388for the general definition. As used within Android, it refers primarily
389to the kernel audio framework and drivers, not to the user-mode API. See
390tinyalsa.
391</dd>
392
Glenn Kasten298f3822013-06-12 17:17:36 -0700393<dt>AudioEffect</dt>
394<dd>
395An API and implementation framework for output (post-processing) effects
396and input (pre-processing) effects. The API is defined at
Glenn Kasten5df2d522013-09-27 11:50:35 -0700397<a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html" target="_android">android.media.audiofx.AudioEffect</a>.
Glenn Kasten298f3822013-06-12 17:17:36 -0700398</dd>
399
Glenn Kasten963fd952013-04-18 17:26:23 -0700400<dt>AudioFlinger</dt>
401<dd>
402The sound server implementation for Android. AudioFlinger
403runs within the mediaserver process. See Wikipedia article
404<a class="external-link" href="http://en.wikipedia.org/wiki/Sound_server" target="_android">Sound server</a>
405for the generic definition.
406</dd>
407
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700408<dt>audio focus</dt>
409<dd>
410A set of APIs for managing audio interactions across multiple independent apps.
411See <a href="http://developer.android.com/training/managing-audio/audio-focus.html">Managing Audio
412Focus</a> and the focus-related methods and constants of
413<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>.
414</dd>
415
Glenn Kasten963fd952013-04-18 17:26:23 -0700416<dt>AudioMixer</dt>
417<dd>
418The module within AudioFlinger responsible for
419combining multiple tracks and applying attenuation
420(volume) and certain effects. The Wikipedia article
421<a class="external-link" href="http://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)" target="_android">Audio mixing (recorded music)</a>
422may be useful for understanding the generic
423concept. But that article describes a mixer more as a hardware device
424or a software application, rather than a software module within a system.
425</dd>
426
Glenn Kasten5df2d522013-09-27 11:50:35 -0700427<dt>audio policy</dt>
428<dd>
429Service responsible for all actions that require a policy decision
430to be made first, such as opening a new I/O stream, re-routing after a
431change and stream volume management.
432</dd>
433
Glenn Kasten963fd952013-04-18 17:26:23 -0700434<dt>AudioRecord</dt>
435<dd>
436The primary low-level client API for receiving data from an audio
Clay Murphyc28f2372013-09-25 16:13:40 -0700437input device such as microphone. The data is usually in pulse-code modulation
438(PCM) format.
Glenn Kasten5df2d522013-09-27 11:50:35 -0700439The API is defined at
440<a href="http://developer.android.com/reference/android/media/AudioRecord.html"
441target="_android">android.media.AudioRecord</a>.
442</dd>
Glenn Kasten963fd952013-04-18 17:26:23 -0700443
444<dt>AudioResampler</dt>
445<dd>
446The module within AudioFlinger responsible for sample-rate conversion. See Wikipedia article
447<a class="external-link" href="http://en.wikipedia.org/wiki/Resampling_(audio)" target="_android">Resampling (audio)</a>
448for the generic definition.
449</dd>
450
Glenn Kasten963fd952013-04-18 17:26:23 -0700451<dt>AudioTrack</dt>
452<dd>
453The primary low-level client API for sending data to an audio output
454device such as a speaker. The data is usually in PCM format.
Glenn Kasten5df2d522013-09-27 11:50:35 -0700455The API is defined at
456<a href="http://developer.android.com/reference/android/media/AudioTrack.html"
457target="_android">android.media.AudioTrack</a>.
Glenn Kasten963fd952013-04-18 17:26:23 -0700458</dd>
459
460<dt>client</dt>
461<dd>
462Usually same as application or app, but sometimes the "client" of
463AudioFlinger is actually a thread running within the mediaserver system
464process. An example of that is when playing media that is decoded by a
465MediaPlayer object.
466</dd>
467
468<dt>HAL</dt>
469<dd>
470Hardware Abstraction Layer. HAL is a generic term in Android. With
471respect to audio, it is a layer between AudioFlinger and the kernel
472device driver with a C API, which replaces the earlier C++ libaudio.
473</dd>
474
475<dt>FastMixer</dt>
476<dd>
477A thread within AudioFlinger that services lower latency "fast tracks"
478and drives the primary output device.
479</dd>
480
481<dt>fast track</dt>
482<dd>
483An AudioTrack client with lower latency but fewer features, on some devices.
484</dd>
485
486<dt>MediaPlayer</dt>
487<dd>
488A higher-level client API than AudioTrack, for playing either encoded
Clay Murphyc28f2372013-09-25 16:13:40 -0700489content, or content which includes multimedia audio and video tracks.
Glenn Kasten963fd952013-04-18 17:26:23 -0700490</dd>
491
Glenn Kasten298f3822013-06-12 17:17:36 -0700492<dt>media.log</dt>
493<dd>
494An AudioFlinger debugging feature, available in custom builds only,
495for logging audio events to a circular buffer where they can then be
496dumped retroactively when needed.
497</dd>
498
Glenn Kasten963fd952013-04-18 17:26:23 -0700499<dt>mediaserver</dt>
500<dd>
501An Android system process that contains a number of media-related
502services, including AudioFlinger.
503</dd>
504
505<dt>NBAIO</dt>
506<dd>
507An abstraction for "non-blocking" audio input/output ports used within
508AudioFlinger. The name can be misleading, as some implementations of
509the NBAIO API actually do support blocking. The key implementations of
510NBAIO are for pipes of various kinds.
511</dd>
512
513<dt>normal mixer</dt>
514<dd>
515A thread within AudioFlinger that services most full-featured
516AudioTrack clients, and either directly drives an output device or feeds
Clay Murphyc28f2372013-09-25 16:13:40 -0700517its sub-mix into FastMixer via a pipe.
Glenn Kasten963fd952013-04-18 17:26:23 -0700518</dd>
519
520<dt>OpenSL ES</dt>
521<dd>
522An audio API standard by The Khronos Group. Android versions since
523API level 9 support a native audio API which is based on a subset of
524OpenSL ES 1.0.1.
525</dd>
526
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700527<dt>silent mode</dt>
528<dd>
529A user-settable feature to mute the phone ringer and notifications,
530without affecting media playback (music, videos, games) or alarms.
531</dd>
532
Glenn Kasten5df2d522013-09-27 11:50:35 -0700533<dt>SoundPool</dt>
534<dd>
535A higher-level client API than AudioTrack, used for playing sampled
536audio clips. It is useful for triggering UI feedback, game sounds, etc.
537The API is defined at
538<a href="http://developer.android.com/reference/android/media/SoundPool.html"
539target="_android">android.media.SoundPool</a>.
540</dd>
Glenn Kasten5df2d522013-09-27 11:50:35 -0700541
542<dt>Stagefright</dt>
543<dd>
544See <a href="{@docRoot}devices/media.html">Media</a>.
545</dd>
546
Glenn Kasten963fd952013-04-18 17:26:23 -0700547<dt>StateQueue</dt>
548<dd>
549A module within AudioFlinger responsible for synchronizing state
550among threads. Whereas NBAIO is used to pass data, StateQueue is used
551to pass control information.
552</dd>
553
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700554<dt>strategy</dt>
555<dd>
556A grouping of stream types with similar behavior, used by the audio policy service.
557</dd>
558
559<dt>stream type</dt>
560<dd>
561An enumeration that expresses a use case for audio output.
562The audio policy implementation uses the stream type, along with other parameters,
563to determine volume and routing decisions.
564Specific stream types are listed at
565<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>.
566</dd>
567
Glenn Kasten298f3822013-06-12 17:17:36 -0700568<dt>tee sink</dt>
569<dd>
570An AudioFlinger debugging feature, available in custom builds only,
571for retaining a short fragment of recent audio for later analysis.
572This permits comparison between what was actually played or recorded
573vs. what was expected.
574</dd>
575
Glenn Kasten963fd952013-04-18 17:26:23 -0700576<dt>tinyalsa</dt>
577<dd>
578A small user-mode API above ALSA kernel with BSD license, recommended
Clay Murphyc28f2372013-09-25 16:13:40 -0700579for use in HAL implementations.
Glenn Kasten963fd952013-04-18 17:26:23 -0700580</dd>
581
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700582<dt>ToneGenerator</dt>
583<dd>
584A higher-level client API than AudioTrack, used for playing DTMF signals.
585See the Wikipedia article
586<a class="external-link" href="http://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling"
587target="_android">Dual-tone multi-frequency signaling</a>,
588and the API definition at
589<a href="http://developer.android.com/reference/android/media/ToneGenerator.html"
590target="_android">android.media.ToneGenerator</a>.
591</dd>
592
Glenn Kasten963fd952013-04-18 17:26:23 -0700593<dt>track</dt>
594<dd>
595An audio stream, controlled by the AudioTrack API.
596</dd>
597
Glenn Kastenfdc7b7b2013-10-28 11:11:34 -0700598<dt>volume attenuation curve</dt>
599<dd>
600A device-specific mapping from a generic volume index to a particular attenuation factor
601for a given output.
602</dd>
603
604<dt>volume index</dt>
605<dd>
606A unitless integer that expresses the desired relative volume of a stream.
607The volume-related APIs of
608<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>
609operate in volume indices rather than absolute attenuation factors.
610</dd>
611
Glenn Kasten963fd952013-04-18 17:26:23 -0700612</dl>
613