chiark / gitweb /
plugins/tracklength-gstreamer.c: Rewrite to use `GstDiscoverer'.
[disorder] / CHANGES.html
index b0f27e05847393dea720ef36c54206b287c2ce51..24f2ac0f1fa3c4076eb9a52df501944de55ef549 100644 (file)
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
 <html>
 <head>
 <title>DisOrder Change History</title>
-<style type="text/css">
-body {
-  color: black;
-  background-color: white;
-  font-family: times,serif;
-  font-weight: normal;
-  font-size: 12pt;
-  font-variant: normal
-}
-
-div.section {
-  margin-left:1em
-}
-
-h1 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h2 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h3 {
-  background-color: #f0f0f0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h4 {
-  font-family: helvetica,sans-serif
-}
-
-table.bugs {
-  width: 100%
-}
-
-table.bugs th {
-  text-align: left
-}
-
-span.command {
-  font-family: monospace
-}
-</style>
+<link rel=StyleSheet type="text/css" href="docs.css">
 </head>
 
 <body>
 <h1>DisOrder Change History</h1>
 
-<p>This file documents recent user-visible changes to DisOrder.</p>
+<p>This file documents recent user-visible changes to <a
+ href="http://www.greenend.org.uk/rjk/disorder/">DisOrder</a>.</p>
+
+<p><b>IMPORTANT</b>: you should read <a
+href="README.upgrades.html">README.upgrades</a> before upgrading.</p>
+
+<h2>Changes up to version 5.2</h2>
+
+<div class=section>
+
+  <h3>PulseAudio Support</h3>
+
+  <div class=section>
+
+    <p>PulseAudio is now supported, if the support library is available at
+    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 class=section>
+
+    <p>Disobedience now has a menu to select the network playback API.</p>
+
+    <p><code>disorder-playrtp</code> now selects playback API using
+    a <code>--api</code> option.  The old API-selection options remain
+    available but are deprecated and will be removed in the future.</p>
+
+    <p>RTP playback can now transmit to multiple unicast destinations, added
+    and removed on demand.  This is controlled by the new <code>rtp_mode</code>
+    option.  The motivating use case is a bridged network with high- and
+    low-capacity components.  However it is may also be useful in a routed
+    network without multicast routing support.</p>
+
+  </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 &ldquo;Manage users&rdquo; 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>
+
+    <p>Unicode support has been upgraded to <a
+    href="http://www.unicode.org/versions/Unicode6.0.0/">Unicode
+    6.0.0</a>.</p>
+
+    <p>Client programs no longer depend on libdb.</p>
+    
+    <p>The following have been removed:</p>
+
+    <ul>
+
+      <li>The <tt>allow</tt>, <tt>gap</tt>, <tt>lock</tt>, <tt>prefsync</tt>, 
+      <tt>restrict</tt>, <tt>trust</tt> configuration commands.  If they still
+      appear in your configuration file then the server will not start.</li>
+
+      <li>The <tt>columns</tt> web interface option.  It will generate an
+      message in your error log but otherwise be ignored.</li>
+
+      <li>The <tt>--wait-for-device</tt> player option.  If it still appears in
+      any player commands, they will not work.</li>
+
+      <li>Support for automatically importing pre-3.0 users.</li>
+
+    </ul>
+
+    <p>Various minor bug fixes.</p>
+
+  </div>
+
+</div>
+
+<h2>Changes up to version 5.0.3</h2>
+
+<div class=section>
+
+<p><b>Security</b>: Local connections can no longer create and delete users
+unless they are properly authorized.</p>
+
+</div>
+
+<h2>Changes up to version 5.0.2</h2>
+
+<div class=section>
+
+<p>The login form now indicates that a cookie will be set.</p>
+
+</div>
+
+<h2>Changes up to version 5.0.1</h2>
+
+<div class=section>
+
+<h3>Disobedience</h3>
+
+<div class=section>
+
+<p>The sense of the Control &#x2192; Playing menu item was fixed.</p>
+
+</div>
+
+</div>
+
+<h2>Changes up to version 5.0</h2>
+
+  <div class=section>
+  
+    <h3>Server</h3>
+    <div class=section>
+
+      <p>The <tt>device</tt> configuration option now works under OS X.
+      Devices may
+      be specified either by UID or name.  Fixes <a
+       href="http://code.google.com/p/disorder/issues/detail?id=27">Issue
+      27</a>.</p>
+
+      <p>Gapless play should be more reliable, and playback latency over RTP
+      should be a bit lower.  Note though that all the sound output code has
+      been reorganized and in some cases completely rewritten, so it's possible
+      that bugs may have been (re-)introduced.  Decoding of scratches is also
+      initiated ahead of time, giving more reliable playback.</p>
+      
+      <p>The <tt>command</tt> backend now (optionally) sends silence instead
+      of suspending writes when a pause occurs or no track is playing.</p>
+
+      <p>If <a href="http://www.mega-nerd.com/SRC/">libsamplerate</a> is
+      available at build time then that will be used instead of invoking
+      <a href="http://sox.sourceforge.net/">SoX</a>.  SoX support will be
+      removed in a future version.</p>
+
+      <p>The libao plugin has been removed, because the plugin API is not
+      usable in libao 1.0.0.</p>
+
+      <p>Playlists are now supported.  These allow a collection of tracks to be
+      prepared offline and played as a unit.</p>
+
+    </div>
+      
+    <h3>Disobedience</h3>
+
+    <div class=section>
+
+      <p>Multiple tracks can now be dragged in the queue in a single operation.
+      Furthermore, it is now possible to drag tracks from the
+      &ldquo;Recent&rdquo;, &ldquo;Added&rdquo; and &ldquo;Choose&rdquo; tabs
+      to the queue.</p>
+
+      <p>Disobedience now supports playlist editing and has a compact mode,
+      available from the <b>Control</b> menu.</p>
+
+      <p>Disobedience has a <a href="disobedience/manual/index.html">new
+      manual</a>.</p>
+
+    </div>
+
+    <h3>Web Interface</h3>
+    <div class=section>
+
+      <p>Confirmation URLs should be cleaner (and in particular not end
+      with punctuation).  (Please see <a
+      href="README.upgrades.html">README.upgrades</a> for more about this.)</p>
+
+    </div>
+      
+    <h3>RTP Player</h3>
+  
+    <div class=section>
+
+      <p>There is a new <tt>--command</tt> option which allows the RTP player
+      to send audio data to a user-chosen command instead of an audio API. See
+      the man page for details.</p>
+      
+      <p>The <tt>--device</tt> option to <tt>disorder-playrtp</tt> now works
+      under OS X (as above).</p>
+        
+    </div>
+      
+    <h3>General</h3>
+
+    <div class=section>
+
+      <p>IPv6 should now work.  Network address specifications
+      (<tt>listen</tt>, <tt>connect</tt> etc) can now be prefixed with
+      <tt>-4</tt> or <tt>-6</tt> to force use
+      of IPv4 or IPv6, though normally this should not be needed.</p>
+
+      <p>Unicode support has been upgraded to <a
+      href="http://www.unicode.org/versions/Unicode5.1.0/">Unicode
+      5.1.0</a>.</p>
+
+      <p>Various elements of the source code have been
+      rationalized.</p>
+      
+    </div>
+    
+    <h3>Bugs fixed</h3>
+  
+    <div class=section>
+
+      <table class=bugs>
+        <tr>
+          <th>ID</th>
+          <th>Description</th>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=22">#22</a></td>
+          <td>Background decoders interact badly with server reload</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=27">#27</a></td>
+          <td>Mac DisOrder uses wrong sound device</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=30">#30</a></td>
+          <td>mini disobedience interface</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=32">#32</a></td>
+          <td>Excessively verbose log chatter on shutdown</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></td>
+          <td>(Some) plugins need -lm.</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=39">#39</a></td>
+          <td>Double bind() non-multicast AF_INET</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=40">#40</a></td>
+          <td>Missing stub function</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=41">#41</a></td>
+          <td>Missing includes for timeval</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=42">#42</a></td>
+          <td>syntax error in empeg_host section</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=43">#43</a></td>
+          <td>decoder segfault with FLAC 1.2.1</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=44">#44</a></td>
+          <td>gcc 4.3.2-1ubuntu12 SUYB patch</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=45">#45</a></td>
+          <td>disobedience doesn't configure its back end</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=46">#46</a></td>
+          <td>Sort search results in web interface</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=48">#48</a></td>
+          <td>build-time dependency on <tt>oggdec</tt> removed</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=49">#49</a></td>
+          <td>Disobedience's 'When' column gets out of date</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=51">#51</a></td>
+          <td>Improved speaker process robustness</td>
+        </tr>
+
+        <tr>
+          <td>(none)</td>
+         <td>&ldquo;found track in no collection&rdquo; messages for scratches
+         are now suppressed</td>
+        </tr>
+
+        <tr>
+          <td>(none)</td>
+          <td>Disobedience would sometimes fail to notice when a track
+          started, leading to its display getting out of date.</td>
+        </tr>
+
+      </table>
+    </div>
+  </div>
+
+<h2>Changes up to version 4.3</h2>
+
+  <div class=section>
+
+    <h3>Disobedience</h3>
+
+      <div class=section>
+
+        <p>A bug was fixed in the calculation of how much of the track had
+        played.  This would lead to the counter showing incorrect values in
+        various situations.</p>
+
+        <p>Disobedience's icons have been changed to larger, more colorful
+        ones.  The SVG source is included if you want to fiddle with them.</p>
+
+        <p>&ldquo;Select all&rdquo; is now no longer available in the choose
+        tab.  Instead there is a new &ldquo;Select children&rdquo; option which
+        selects the file children of a single subdirectory.</p>
+
+      </div>
+
+    <h3>Server</h3>
+
+      <div class=section>
+
+        <p>The selection bias for newly added tracks was reduced by half.  You
+        can put it back to the old very neophilic value with
+        &ldquo;<tt>new_bias 900000</tt>&rdquo; in the config file.</p>
+
+        <p>It is now possible to &lsquo;adopt&rsquo; randomly picked tracks.
+        Disobedience and the command-line client support this but the web
+        interface does not.</p>
+
+        <p>The default track name parsing was modified to handle filenames
+        generated by iTunes.</p>
+        
+      </div>
+
+    <h3>Miscellaneous</h3>
+
+      <div class=section>
+
+        <p><tt>disorderfm</tt> now preserves directory permissions.</p>
+
+        <p>DisOrder is now licensed under <a
+         href="http://www.gnu.org/licenses/gpl-3.0.html">GPL v3</a>.  The main
+        goal is to prohibit <a
+         href="http://en.wikipedia.org/wiki/Tivoization">Tivoization</a>.</p>
+
+        <p>The build system will now automatically cope with Fink's broken GTK+
+        packages.  There are a number of improvements to the Debian
+        packaging.</p>
+
+        <p>DisOrder now builds on 64-bit Linux systems.</p>
+
+        <p>There are various minor fixes.</p>
+
+      </div>
+
+  <h3>Bugs fixed</h3>
+  
+    <div class=section>
+
+      <table class=bugs>
+        <tr>
+          <th>ID</th>
+          <th>Description</th>
+        </tr>
+        
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=24">#24</a></td>
+          <td>Fails to build on ubuntu 8.10</td>
+        </tr>
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=26">#26</a></td>
+          <td>Disobedience shows wrong track elapsed time after a pause</td>
+        </tr>
+      </table>
+      
+    </div>
+  </div>
+
+<h2>Changes up to version 4.2</h2>
+
+<div class=section>
+
+  <h3>Disobedience</h3>
+  
+    <div class=section>
+
+      <p>The login window now has a 'remote' switch.  If this is turned off
+      then Disobedience will connect to a local server.  Formerly it would
+      always use TCP/IP.</p>
+
+      <p>The Delete and backspace keys will now remove tracks from the queue.
+      Escape will now dismiss the properties, users or login windows and return
+      now works in the login and properties windows.</p>
+      
+    </div>
+
+  <h3>Documentation</h3>
+  
+    <div class=section>
+
+      <p>Track and global preferences are now described in a new
+      <b>disorder_preferences</b>(5) man page.</p>
+      
+    </div>
+
+  <h3>Bugs fixed</h3>
+  
+    <div class=section>
+
+      <table class=bugs>
+        <tr>
+          <th>ID</th>
+          <th>Description</th>
+        </tr>
+        
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=21">#21</a></td>
+          <td>CGI should use PATH_INFO more sensibly</td>
+        </tr>
+      </table>
+      
+    </div>
+</div>
+
+
+<h2>Changes up to version 4.1.1</h2>
+
+<div class=section>
+
+  <p>Disobedience's &ldquo;Login&rdquo; window now works when you are logged
+  in.</p>
+  
+</div>
+
+<h2>Changes up to version 4.1</h2>
+
+<div class=section>
+
+  <h3>Disobedience</h3>
+  
+    <div class=section>
+  
+      <p>Disobedience has been largely rewritten:</p>
+
+      <ul>
+        
+        <li>All the tabs now use native GTK+ list/tree widgets, resulting in
+        greater speed in some cases and more consistency with other GTK+
+        applications.</li>
+
+        <li>You can now use type-ahead find in the choose tab.  The initiation
+        of a search is delayed slightly to avoid lots of updates when you're
+        half way through entering search terms.</li>
+
+        <li>The choose tab now shows track lengths.</li>
+    
+        <li>Many buttons are now more reliably made insensitive when they can't
+        be used.</li>
+
+        <li>You can now play tracks off the recent tab.</li>
+        
+      </ul>
+      
+      <p>Disobedience attempts to cope with servers from older versions, up to
+      a point, but this is not well tested and it's best to keep the server
+      fully up to date.</p>
+
+    </div>
+     
+  <h3>Server</h3>
+  
+    <div class=section>
+
+      <p>When a track shares a directory with its alias, the real track name is
+      now returned instead of the alias (the opposite way round to the previous
+      behaviour).</p>
+      
+    </div>
+</div>
+
+<h2>Changes up to version 4.0.2</h2>
+
+<div class=section>
+
+  <p>Corrected web browser linked from Disobedience.</p>
+  
+</div>
 
 <h2>Changes up to version 4.0.1</h2>
 
@@ -248,7 +827,7 @@ span.command {
 <div class=section>
   
   <p><b>Important</b>!  See <a
-  href="README.upgrades">README.upgrades</a> when upgrading.</p>
+  href="README.upgrades.html">README.upgrades</a> when upgrading.</p>
   
   <h3>Platforms And Installation</h3>