PulseAudio comes with many plugin modules. All audio from/to clients and audio interfaces goes through modules.

Manuel Amador created a diagram describing how the different parts of PulseAudio play together. (Not all modules are shown.) Another, simpler architecture diagram is attached to this page (scroll to the bottom).

PulseAudio clients can send audio to "sinks" and receive audio from "sources". A client can be GStreamer, xinelib, MPlayer or any other audio application. Only the device drivers/audio interfaces can be either sources or sinks (they are often hardware in- and out-puts).

Current Status

The PulseAudio daemon and utilities are still under development, but are generally considered stable. API, ABI and the protocol are considered release worthy so effort is spent to not break these. Application developers should not feel uneasy using the client library at this point.

Features

Licensed under LGPL 2.1+ (might effectively be downgraded to GPL if you link against libsamplerate -- which his optional however)