Home | History | Annotate | Download | only in devices
      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