

This document tries to be neutral and provide an unbiased overview of the implemented features and design. PulseAudio tends to trigger flame wars, which I believe are non-constructive.

This document reflects my personal understanding of PulseAudio, obtained from the source code, experiments, official wiki, mailing lists, and blog articles. Further details can be obtained from the official documentation (for configuration and client APIs) and from the source code (for internal interfaces). It does not provide a detailed reference or tutorial for PulseAudio configuration and APIs.

Unfortunately, the available documentation doesn’t give a bird-eye view and an explanation of PulseAudio features and design and doesn’t cover many implementation details.

D-Bus API and C API are also documented well. Modules page contains a complete list of existing modules with parameters. PulseAudio has Documentation page covering many specific problems that may be encountered by user and developer. This led me to dig into PulseAudio internals and eventually to this document. Many Linux distros employ PulseAudio, and their users will be able to improve network service quality without changing the workflow. We decided to implement a set of PulseAudio modules that will allow PulseAudio to use Roc as a network transport. You can read more about the project in these two articles: 1, 2. I’m working on the Roc Toolkit open-source project, a development kit for realtime audio streaming over the network.
