</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> is built. It uses the GStreamer
+ library for audio decoding and sample-rate conversion, among other
+ features.
+
+ <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
+ </pre>
+ </p>
+
+ <h3>Bug fixes</h3>
+
+ <div class=section>
+
+ <ul>
+ <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
+ feet.</li>
+
+ <li>The CGI program doesn't crash on some POST requests.
+ </ul>
+
+ </div>
+
+</div>
+
+<h2>Changes up to version 5.1.1</h2>
+
+ <div class=section>
+
+ <h3>Bug fixes</h3>
+
+ <div class=section>
+
+ <ul>
+ <li><code>player</code> and <code>tracklength</code> can now be used
+ without arguments to clear the lists, as per the documentation.</li>
+
+ <li>Tracks without a player are forgotten upon rescan.</li>
+
+ <li>The speaker process avoids splitting frames.</li>
+ </ul>
+
+ <p>Thanks to Mark Wooding and Joe Birr-Pixton.</p>
+
+ </div>
+
+ </div>
+
+<h2>Changes up to version 5.1</h2>
+
+<div class=section>
+
+ <h3>Removable Device Support</h3>
+
+ <div class=section>
+
+ <p>The server will now automatically initiate a rescan when a filesystem is
+ mounted or unmounted. (Use the <tt>mount_rescan</tt> option if you want to
+ suppress this behavior.)</p>
+
+ <p>The server takes care not to hold audio files open unnecessarily, so
+ that devices can be unmounted even if tracks from them are currently being
+ buffered.</p>
+
+ </div>
+
+ <h3>Disobedience</h3>
+
+ <div class=section>
+
+ <p>You can now edit the <tt>required-tags</tt> and <tt>prohibited-tags</tt>
+ global preferences in Disobedience
+ (<a href="http://code.google.com/p/disorder/issues/detail?id=29">issue
+ #29</a>).</p>
+
+ <p>The “Manage users” option is now more reliably greyed out if
+ it will not work. This depends on a server change too, so it may still be
+ wrong if a new Disobedience is used against an old server.</p>
+
+ <p>A <tt>.desktop</tt> file is now shipped, making Disobedience visible as
+ an application in freedesktop.org-compliant systems.</p>
+
+ </div>
+
+ <h3>Backups</h3>
+
+ <div class=section>
+
+ <p>The Debian package now includes a cronjob that backs up the database
+ daily. See <tt>/etc/cron.d/disorder</tt>. You can put settings
+ in <tt>/etc/default/disorder</tt> to turn this off or to control how long
+ the backups are kept for.</p>
+
+ <p>The <tt>disorder-dump -r</tt> option was broken.</p>
+
+ <p><tt>disorder-dump</tt> now gets permissions right automatically (<a
+ href="http://code.google.com/p/disorder/issues/detail?id=56">issue
+ #56</a>).</p>
+
+ </div>
+
<h3>General</h3>
<div class=section>
AC_DEFINE([WITH_GTK], [1], [define if using GTK+])
fi
AM_CONDITIONAL([GTK], [test x$want_gtk = xyes])
+ AM_CONDITIONAL([GSTDECODE], [test x$want_gstdecode = xyes])
+# Some GCC invocations warn for converting function pointers to void *.
+# This is fair enough, as it's technically forbidden, but we use dlsym()
+# which can pretty much only exist if object and function pointers are
+# interconvertable. So we disable -Werror if need be.
+if test ! -z "$gcc_werror" && test "$ac_cv_func_dlfunc" != yes; then
+ CFLAGS="${CFLAGS} $gcc_werror"
+ AC_CACHE_CHECK([whether function pointers can be converted to void * without a warning],
+ [rjk_cv_function_pointer_cast],[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
+ void somefunction(void);],
+ [(void *)somefunction])],
+ [rjk_cv_function_pointer_cast=yes],
+ [rjk_cv_function_pointer_cast=no])])
+ if test $rjk_cv_function_pointer_cast = no; then
+ gcc_werror=""
+ fi
+ CFLAGS="${old_CFLAGS}"
+fi
+
if test "x$GCC" = xyes; then
# We need LLONG_MAX and annoyingly GCC doesn't always give it to us
# by default.
Section: sound
Priority: optional
Standards-Version: 3.8.1.0
- Build-Depends: libgc6-dev | libgc-dev, libgcrypt-dev, libdb4.3-dev | libdb4.5-dev | libdb4.7-dev | libdb4.8-dev | libdb5.1-dev, libpcre3-dev, libvorbis-dev, libmad0-dev, libasound2-dev, libpulse-dev, python, libflac-dev, libgtk2.0-dev (>= 2.12.12)
-Build-Depends: libgc6-dev | libgc-dev, libgcrypt-dev, libdb4.3-dev | libdb4.5-dev | libdb4.7-dev | libdb4.8-dev, libpcre3-dev, libvorbis-dev, libmad0-dev, libasound2-dev, libao-dev, python, libflac-dev, libgtk2.0-dev (>= 2.12.12), pkg-config, libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev
++Build-Depends: libgc6-dev | libgc-dev, libgcrypt-dev, libdb4.3-dev | libdb4.5-dev | libdb4.7-dev | libdb4.8-dev | libdb5.1-dev, libpcre3-dev, libvorbis-dev, libmad0-dev, libasound2-dev, libpulse-dev, python, libflac-dev, libgtk2.0-dev (>= 2.12.12), pkg-config, libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev
Vcs-Git: https://code.google.com/p/disorder/
Homepage: http://www.greenend.org.uk/rjk/disorder/