build time. It is the default for client applications, reflecting its
widespread use in desktop environments.</p>
- <p>Volume setting is not currently supported when PulseAudio is in
- use.</p>
-
</div>
<h3>Changes To RTP Support</h3>
</div>
+ <h3>GStreamer support</h3>
+
+ <div class=section>
+
+ <p>If it's detected at <tt>configure</tt> time, a new decoder
+ program <tt>disorder-gstdecode</tt> and a new tracklength
+ plugin <tt>tracklength-gstreamer</tt> are built. These use the GStreamer
+ library for filetype detection, audio decoding and sample-rate conversion,
+ among other features. Using these, DisOrder can play any audio file
+ supported by GStreamer.
+
+ <p>The decoder has a number of options for controlling the sample-rate and
+ audio format conversion, allowing various tradeoffs between quality and
+ processor time. (High-quality conversion can consume more processor time
+ than decoding, so this is potentially useful on very a small device such as
+ a Raspberry Pi.</p>
+
+ <p>The GStreamer decoder can also use ReplayGain information stored in
+ audio files' metadata to adjust playback volume, so that tracks with very
+ wide dynamic range don't sound really quiet in comparison. This
+ information can be added using tools such as <tt>mp3gain</tt>,
+ <tt>vorbisgain</tt>, or <tt>metaflac</tt>. This is turned on by default if
+ you use the decoder; you can choose between per-album or per-track
+ settings, or turn it off entirely, using command-line options.</p>
+
+ <p>The GStreamer decoder is not used by default, but it can be enabled
+ easily enough by dropping something like the following into the server
+ configuration file:
+ <pre>
+ player
+ player *.flac execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.mp2 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.mp3 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.ogg execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.wav execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+
+ tracklength
+ tracklength *.flac tracklength-gstreamer
+ tracklength *.mp2 tracklength-gstreamer
+ tracklength *.mp3 tracklength-gstreamer
+ tracklength *.ogg tracklength-gstreamer
+ tracklength *.wav tracklength-gstreamer
+ </pre>
+ </p>
+
<h3>Bug fixes</h3>
<div class=section>
<li>The CGI program now checks user passwords even when it runs as the
main jukebox user(!).</li>
- <li>DisObedience doesn't crash when search terms change under its
+ <li>Disobedience doesn't crash when search terms change under its
feet.</li>
<li>The CGI program doesn't crash on some POST requests.