From dbffc2b1014c98d2421d03e8e928ba78c295a9d7 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Thu, 18 Apr 2013 17:26:23 -0700 Subject: Add audio terminology Change-Id: I75533232275c24d0413931296b7f132efc40d6dc --- src/devices/audio_terminology.jd | 218 +++++++++++++++++++++++++++++++++++++++ src/devices/devices_toc.cs | 1 + 2 files changed, 219 insertions(+) create mode 100644 src/devices/audio_terminology.jd 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 + +
+
+

In this document

+
    +
+
+
+ +

+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. +

+ +

Generic Terms

+ +

+These are audio terms that are widely used, with their conventional meanings. +

+ +
+ +
bits per sample or bit depth
+
+Number of bits of information per sample. +
+ +
channel
+
+A single stream of audio information, usually corresponding to one +location of recording or playback. +
+ +
frame
+
+A set of samples, one per channel, at a point in time. +
+ +
frames per buffer
+
+The number of frames handed from one module to the next at once; +for example the audio HAL interface uses this concept. +
+ +
mono
+
+One channel. +
+ +
sample
+
+A number representing the audio value for a single channel at a point in time. +
+ +
sample rate or frame rate
+
+Number of frames per second; +note that "frame rate" is thus more accurate, +but "sample rate" is conventionally used to mean "frame rate". +
+ +
stereo
+
+Two channels. +
+ +
+ +

Android-Specific Terms

+ +

+These are terms that are specific to Android audio framework, or that +may have a special meaning within Android beyond their general meaning. +

+ +
+ +
ALSA
+
+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 +ALSA +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. +
+ +
AudioFlinger
+
+The sound server implementation for Android. AudioFlinger +runs within the mediaserver process. See Wikipedia article +Sound server +for the generic definition. +
+ +
AudioMixer
+
+The module within AudioFlinger responsible for +combining multiple tracks and applying attenuation +(volume) and certain effects. The Wikipedia article +Audio mixing (recorded music) +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. +
+ +
AudioRecord
+
+The primary low-level client API for receiving data from an audio +input device such as microphone. The data is usually in PCM format. +
+ +
AudioResampler
+
+The module within AudioFlinger responsible for sample-rate conversion. See Wikipedia article +Resampling (audio) +for the generic definition. +
+ +
audio policy
+
+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. +
+ +
AudioTrack
+
+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. +
+ +
client
+
+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. +
+ +
HAL
+
+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. +
+ +
FastMixer
+
+A thread within AudioFlinger that services lower latency "fast tracks" +and drives the primary output device. +
+ +
fast track
+
+An AudioTrack client with lower latency but fewer features, on some devices. +
+ +
MediaPlayer
+
+A higher-level client API than AudioTrack, for playing either encoded +content, or content which includes multi-media audio and video tracks. +
+ +
mediaserver
+
+An Android system process that contains a number of media-related +services, including AudioFlinger. +
+ +
NBAIO
+
+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. +
+ +
normal mixer
+
+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. +
+ +
OpenSL ES
+
+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. +
+ +
StateQueue
+
+A module within AudioFlinger responsible for synchronizing state +among threads. Whereas NBAIO is used to pass data, StateQueue is used +to pass control information. +
+ +
tinyalsa
+
+A small user-mode API above ALSA kernel with BSD license, recommended +for use by HAL implementations. +
+ +
track
+
+An audio stream, controlled by the AudioTrack API. +
+ +
+ +

+ 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 @@
  • Warmup
  • Avoiding Priority Inversion
  • Design For Reduced Latency
  • +
  • Terminology
  • Camera v1
  • -- cgit v1.2.3