PulseAudio is a networked sound server, similar in theory to the Enlightened Sound Daemon (EsounD). PulseAudio is however much more advanced and has numerous features.

A sound server can serve many functions:

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

 

OI-Hipster, PulseAudio-10.0 port:

→ /export/home/kmays$ uname -a

SunOS external 5.11 illumos-fd3bae1 i86pc i386 i86pc Solaris

→ /export/home/kmays$ /opt/pulseaudio-10.0/bin/pulseaudio --version

pulseaudio 10.0

 

→ /export/home/kmays$ /opt/pulseaudio-10.0/bin/pulseaudio --dump-modules

→ /opt/pulseaudio-10.0/bin/pulseaudio --dump-resample-methods

 

Troubleshooting

After an update, the PulseAudio daemon may fail to start, for example:

$ uname -rosv
SunOS 5.11 illumos-63982b82e6 Solaris

$ pkg info pulseaudio
          Name: library/audio/pulseaudio
       Summary: Sample Rate Converter for audio
      Category: System/Multimedia Libraries
         State: Installed
     Publisher: openindiana.org
       Version: 10.0
        Branch: 2017.0.0.0
Packaging Date: Sun Apr 23 08:35:43 2017
          Size: 12.60 MB
          FMRI: pkg://openindiana.org/library/audio/pulseaudio@10.0-2017.0.0.0:20170423T083543Z
   Project URL: http://www.freedesktop.org/wiki/Software/PulseAudio/
    Source URL: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.gz

From syslog:

[2017-04-25 14:59:10] xxx pulseaudio[2731]: [ID 295310 user.error] [solaris] sink.c: Assertion '!pa_thread_mq_get()' failed at pulsecore/sink.c:2229, function pa_sink_set_mute(). Aborting.
[2017-04-25 14:59:10] xxx genunix: [ID 603404 kern.notice] NOTICE: core_log: pulseaudio[2731] core dumped: /export/tmp/cores/core.pulseaudio.2731

and you see no elements in mate-volume-control-applet preferences (see ticket: https://www.illumos.org/issues/8110).

This is usually due to regressions in PulseAudio for handling modules and configuration databases: the only known workaround is to make sure the configuration files match the default Hipster files and remove the configuration in the user's home directory. Similar issues have been reported in Linux distributions.