diff options
author | Glenn Kasten <gkasten@google.com> | 2013-05-13 14:44:32 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-05-13 14:44:32 -0700 |
commit | cb4cdd0fbf8bc93463cd7d3b9c5fef528237d094 (patch) | |
tree | 86be23cf7294e7a5398e1190809b8c107b9c6b35 | |
parent | 3683a6add8bc5b8ebeb77cd1fef983f1a8b46a32 (diff) | |
parent | 143e7260b1fdef552d9b9d16544a6adf12e6d341 (diff) | |
download | source.android.com-cb4cdd0fbf8bc93463cd7d3b9c5fef528237d094.tar.gz |
am 143e7260: am dbffc2b1: Add audio terminology
* commit '143e7260b1fdef552d9b9d16544a6adf12e6d341':
Add audio terminology
-rw-r--r-- | src/devices/audio_terminology.jd | 218 | ||||
-rw-r--r-- | src/devices/devices_toc.cs | 1 |
2 files changed, 219 insertions, 0 deletions
diff --git a/src/devices/audio_terminology.jd b/src/devices/audio_terminology.jd new file mode 100644 index 00000000..f6258502 --- /dev/null +++ b/src/devices/audio_terminology.jd @@ -0,0 +1,218 @@ +page.title=Audio Terminology +@jd:body + +<div id="qv-wrapper"> + <div id="qv"> + <h2>In this document</h2> + <ol id="auto-toc"> + </ol> + </div> +</div> + +<p> +This document provides a glossary of audio-related terminology, including +a list of widely used, generic terms and a list of terms that are specific +to Android. +</p> + +<h2 id="genericTerm">Generic Terms</h2> + +<p> +These are audio terms that are widely used, with their conventional meanings. +</p> + +<dl> + +<dt>bits per sample or bit depth</dt> +<dd> +Number of bits of information per sample. +</dd> + +<dt>channel</dt> +<dd> +A single stream of audio information, usually corresponding to one +location of recording or playback. +</dd> + +<dt>frame</dt> +<dd> +A set of samples, one per channel, at a point in time. +</dd> + +<dt>frames per buffer</dt> +<dd> +The number of frames handed from one module to the next at once; +for example the audio HAL interface uses this concept. +</dd> + +<dt>mono</dt> +<dd> +One channel. +</dd> + +<dt>sample</dt> +<dd> +A number representing the audio value for a single channel at a point in time. +</dd> + +<dt>sample rate or frame rate</dt> +<dd> +Number of frames per second; +note that "frame rate" is thus more accurate, +but "sample rate" is conventionally used to mean "frame rate". +</dd> + +<dt>stereo</dt> +<dd> +Two channels. +</dd> + +</dl> + +<h2 id="androidSpecificTerms">Android-Specific Terms</h2> + +<p> +These are terms that are specific to Android audio framework, or that +may have a special meaning within Android beyond their general meaning. +</p> + +<dl> + +<dt>ALSA</dt> +<dd> +Advanced Linux Sound Architecture. As the name suggests, it is an audio +framework primarily for Linux, but it has influenced other systems. +See Wikipedia article +<a class="external-link" href="http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture" target="_android">ALSA</a> +for the general definition. As used within Android, it refers primarily +to the kernel audio framework and drivers, not to the user-mode API. See +tinyalsa. +</dd> + +<dt>AudioFlinger</dt> +<dd> +The sound server implementation for Android. AudioFlinger +runs within the mediaserver process. See Wikipedia article +<a class="external-link" href="http://en.wikipedia.org/wiki/Sound_server" target="_android">Sound server</a> +for the generic definition. +</dd> + +<dt>AudioMixer</dt> +<dd> +The module within AudioFlinger responsible for +combining multiple tracks and applying attenuation +(volume) and certain effects. The Wikipedia article +<a class="external-link" href="http://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)" target="_android">Audio mixing (recorded music)</a> +may be useful for understanding the generic +concept. But that article describes a mixer more as a hardware device +or a software application, rather than a software module within a system. +</dd> + +<dt>AudioRecord</dt> +<dd> +The primary low-level client API for receiving data from an audio +input device such as microphone. The data is usually in PCM format. +</dd> + +<dt>AudioResampler</dt> +<dd> +The module within AudioFlinger responsible for sample-rate conversion. See Wikipedia article +<a class="external-link" href="http://en.wikipedia.org/wiki/Resampling_(audio)" target="_android">Resampling (audio)</a> +for the generic definition. +</dd> + +<dt>audio policy</dt> +<dd> +Service responsible for all actions that require a policy decision +to be made first, such as opening a new I/O stream, re-routing after a +change and stream volume management. +</dd> + +<dt>AudioTrack</dt> +<dd> +The primary low-level client API for sending data to an audio output +device such as a speaker. The data is usually in PCM format. +</dd> + +<dt>client</dt> +<dd> +Usually same as application or app, but sometimes the "client" of +AudioFlinger is actually a thread running within the mediaserver system +process. An example of that is when playing media that is decoded by a +MediaPlayer object. +</dd> + +<dt>HAL</dt> +<dd> +Hardware Abstraction Layer. HAL is a generic term in Android. With +respect to audio, it is a layer between AudioFlinger and the kernel +device driver with a C API, which replaces the earlier C++ libaudio. +</dd> + +<dt>FastMixer</dt> +<dd> +A thread within AudioFlinger that services lower latency "fast tracks" +and drives the primary output device. +</dd> + +<dt>fast track</dt> +<dd> +An AudioTrack client with lower latency but fewer features, on some devices. +</dd> + +<dt>MediaPlayer</dt> +<dd> +A higher-level client API than AudioTrack, for playing either encoded +content, or content which includes multi-media audio and video tracks. +</dd> + +<dt>mediaserver</dt> +<dd> +An Android system process that contains a number of media-related +services, including AudioFlinger. +</dd> + +<dt>NBAIO</dt> +<dd> +An abstraction for "non-blocking" audio input/output ports used within +AudioFlinger. The name can be misleading, as some implementations of +the NBAIO API actually do support blocking. The key implementations of +NBAIO are for pipes of various kinds. +</dd> + +<dt>normal mixer</dt> +<dd> +A thread within AudioFlinger that services most full-featured +AudioTrack clients, and either directly drives an output device or feeds +it's sub-mix into FastMixer via a pipe. +</dd> + +<dt>OpenSL ES</dt> +<dd> +An audio API standard by The Khronos Group. Android versions since +API level 9 support a native audio API which is based on a subset of +OpenSL ES 1.0.1. +</dd> + +<dt>StateQueue</dt> +<dd> +A module within AudioFlinger responsible for synchronizing state +among threads. Whereas NBAIO is used to pass data, StateQueue is used +to pass control information. +</dd> + +<dt>tinyalsa</dt> +<dd> +A small user-mode API above ALSA kernel with BSD license, recommended +for use by HAL implementations. +</dd> + +<dt>track</dt> +<dd> +An audio stream, controlled by the AudioTrack API. +</dd> + +</dl> + +</p> + diff --git a/src/devices/devices_toc.cs b/src/devices/devices_toc.cs index 36ac8cc2..4e514b6b 100644 --- a/src/devices/devices_toc.cs +++ b/src/devices/devices_toc.cs @@ -36,6 +36,7 @@ <li><a href="<?cs var:toroot ?>devices/audio_warmup.html">Warmup</a></li> <li><a href="<?cs var:toroot ?>devices/audio_avoiding_pi.html">Avoiding Priority Inversion</a></li> <li><a href="<?cs var:toroot ?>devices/latency_design.html">Design For Reduced Latency</a></li> + <li><a href="<?cs var:toroot ?>devices/audio_terminology.html">Terminology</a></li> </ul> </li> <li><a href="<?cs var:toroot ?>devices/camera.html">Camera v1</a></li> |