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