X11 Audio Extension is a software that enables audio functionality for the X Window System. Its purpose is to improve the audio support of the system by providing seamless integration with audio devices and technologies.
Applications that require strict latency requirements can opt to utilize shared memory. X11 Audio Extension extension provides hooks to an "audio compositing manager" that manages multiple applications simultaneously accessing the audio hardware. This manager is the counterpart to the window manager.
The implementation includes two server extensions; TIME and AUDIO. TIME extension provides server-side clocks and schedulers which clients can use to delegate X requests to the server. XM requests then execute at a later point in time. AUDIO extension builds on top of TIME and brings SampleBuffers and PCMContexts to the forefront.
SampleBuffers are the equivalent of Pixmaps, but instead of pixel values, they store audio samples. Audio samples are scalar values, making it essential to store data for multiple channels in multiple SampleBuffers. The extension provides arithmetic operations to manipulate ranges of samples stored in sample buffers, such as multiplication, accumulation, and convolution. Additionally, it allows up-/download of samples to/from the server.
SampleBuffers realization of a "sliding window" concept supports streaming data through a sample buffer. This buffer can shift the base index, so "used" samples shift out, and "new" samples shift in. However, unlike FIFO buffers, the SampleBuffer provides random access capabilities.
SampleBuffers can be placed in shared memory to minimize latency for applications that interact with a local X server. Applications can instantiate PCMContexts to playback samples stored in SampleBuffers or capture samples to SampleBuffers. PCMContexts contain all information about sample values interpretation and act as time sources. Clients can schedule X requests to execute at specific points in playback/capture time and receive status events about playback/capture progress.
The audio compositing manager with X11 Audio Extension is analogous to the window/compositing manager. Clients create PCMContexts as if they have exclusive access to an audio device. However, the audio compositing manager intercepts and takes appropriate steps to properly mix (or otherwise process) the new audio stream. The audio manager can achieve this by scheduling appropriate operations on the sample buffer to accumulate all "secondary" buffers into "primary" playback buffers.
X11 Audio Extension has strict requirements, including X.Org >=7.1, and the installation of server development headers and ALSA sound system, libasound >=1.0.13. With the new release, numerous enhancements and bugfixes are included.
Version 0.6.1: N/A