1. 05 Nov, 2010 4 commits
  2. 25 Sep, 2010 1 commit
    • Thomas Jansen's avatar
      eliminate g_error() usage · 28bcb8bd
      Thomas Jansen authored
      Replaced all occurrences of g_error() with MPD_ERROR() located in a new header
      file 'mpd_error.h'. This macro uses g_critical() to print the error message
      and then exits gracefully in contrast to g_error() which would internally call
      abort() to produce a core dump.
      
      The macro name is distinctive and allows to find all places with dubious error
      handling. The long-term goal is to get rid of MPD_ERROR() altogether. To
      facilitate the eventual removal of this macro it was added in a new header
      file rather than to an existing header file.
      
      This fixes #2995 and #3007.
      28bcb8bd
  3. 08 May, 2010 1 commit
  4. 02 May, 2010 1 commit
  5. 21 Mar, 2010 1 commit
    • Tim Phipps's avatar
      Add support for MixRamp tags · e7a515c8
      Tim Phipps authored
      Adds mixrampdb and mixrampdelay commands.  Reads MIXRAP_START and
      MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
      e7a515c8
  6. 17 Mar, 2010 1 commit
    • Max Kellermann's avatar
      player_thread: postpone song tags during cross-fade · cbfaa4a2
      Max Kellermann authored
      Previously, tags of the new song being cross-faded in were sent
      immediately.  That can cause wrong information being displayed,
      because the "previous" song might send its tag at the end again,
      overriding the "next" song's tag.  This patch saves & merges the tag
      of the next song, and sends it when cross-fading is finished, and the
      next song really starts.
      cbfaa4a2
  7. 10 Mar, 2010 1 commit
    • Max Kellermann's avatar
      output: added option "always_on" for radio stations · e686d191
      Max Kellermann authored
      Did you ever accidently click "stop" while feeding a radio station?
      This option sets the output device to "pause" to disable the "close"
      method.  It falls back to "pause" then, which is specific to the
      plugin.  Some plugins implement it by feeding silence.
      e686d191
  8. 02 Jan, 2010 1 commit
    • Max Kellermann's avatar
      output_all: reset elapsed_time at song border · 915182bc
      Max Kellermann authored
      Another quirk fixed: after the last chunk of a song has been played,
      the "elapsed_time" variable is set to the chunk's time stamp.  When
      the client receives the PLAYER idle event and asks MPD for the current
      time stamp, MPD will return the last time stamp of the previous song
      when it hasn't played the first chunk of the current song yet.
      915182bc
  9. 01 Jan, 2010 1 commit
  10. 27 Dec, 2009 1 commit
    • Max Kellermann's avatar
      decoder, player: support song ranges · 5787f737
      Max Kellermann authored
      Seek the decoder to the start of the range before beginning with
      playback.  Stop the decoder when the end of the range has been
      reached.  Add the start position to the seek position.  Expose the
      duration of the range, not the full song file.
      5787f737
  11. 26 Dec, 2009 1 commit
  12. 14 Dec, 2009 1 commit
  13. 13 Nov, 2009 1 commit
  14. 12 Nov, 2009 2 commits
    • Max Kellermann's avatar
      player_thread: initialize chunk->times in silence generator · 76283c25
      Max Kellermann authored
      When waiting for the decoder to provide more data, the player thread
      generates silence chunks if needed.  However, it forgot to initialize
      the chunk.times attribute, which had now an undefined value.  This
      patch sets it to -1.0, meaning "value is undefined".  Add a ">= 0.0"
      check to audio_output_all_check().  This fixes spurious relative
      seeking errors, because sometimes, the "elapsed" value falls back to
      0.0.
      76283c25
    • Max Kellermann's avatar
      include config.h in all sources · 5b82ffc2
      Max Kellermann authored
      After we've been hit by Large File Support problems several times in
      the past week (which only occur on 32 bit platforms, which I don't
      have), this is yet another attempt to fix the issue.
      5b82ffc2
  15. 09 Nov, 2009 1 commit
    • Max Kellermann's avatar
      player_thread: drain audio outputs at the end of the playlist · 8420f142
      Max Kellermann authored
      When there's no queued song, and the current one has finished playing,
      first make sure that the hardware outputs have really finished playing
      the last chunk: call the drain() method in all audio outputs.  Without
      this patch, MPD stopped playback shortly before the ALSA sound card
      had finished playing.
      8420f142
  16. 03 Nov, 2009 10 commits
  17. 02 Nov, 2009 1 commit
    • Max Kellermann's avatar
      player_thread: check command before waiting during pause · 408d52fe
      Max Kellermann authored
      While paused, the player thread re-locks its mutex and waits for a
      signal.  This is racy: when the command is set while the thread is
      waiting for the lock, it may wait forever.  This patch adds another
      command check before player_wait().
      408d52fe
  18. 31 Oct, 2009 3 commits
  19. 30 Oct, 2009 1 commit
    • Max Kellermann's avatar
      {player,output}_thread: fixed elapsed_time quirks · 73cff374
      Max Kellermann authored
      Right after seeking and song change, the elapsed_time shows old
      information, because the output thread didn't finish a full chunk
      yet.  This patch re-adds a second elapsed_time variable, and keeps
      track of a fallback value, in case the output thread can't provide a
      reliable value.
      73cff374
  20. 29 Oct, 2009 1 commit
  21. 23 Oct, 2009 1 commit
    • Max Kellermann's avatar
      output_plugin: added methods enable() and disable() · e53ca368
      Max Kellermann authored
      With these methods, an output plugin can allocate some global
      resources only if it is actually enabled.  The method enable() is
      called after daemonization, which allows for more sophisticated
      resource allocation during that method.
      e53ca368
  22. 15 Oct, 2009 1 commit
  23. 13 Oct, 2009 1 commit
  24. 08 Oct, 2009 2 commits
    • Max Kellermann's avatar
      player_thread: get "elapsed" from audio outputs · 448aefaa
      Max Kellermann authored
      Tracking the "elapsed" time from the chunks which we have sent to the
      output pipe is very imprecise: since we have implemented the music
      pipe, we're sending large number of chunks at once, giving the
      "elapsed" time stamp a resolution of usually more than a second.
      
      This patch changes the source of this information to the outputs.  If
      a chunk has been played by all outputs, the "elapsed" time stamp is
      updated.
      
      The new command PLAYER_COMMAND_REFRESH makes the player thread update
      its status information: it tells the outputs to update the chunk time
      stamp.  After that, player_control.elapsed_time is current.
      448aefaa
    • Max Kellermann's avatar
      player_thread: always clear player_control.next_song on return · 47b5e73a
      Max Kellermann authored
      pc.next_song might be non-NULL even if player.queued==true: when the
      decoder has started decoding the next song, but the result hasn't been
      read yet.
      47b5e73a