1. 14 Mar, 2009 1 commit
    • Max Kellermann's avatar
      pcm_resample: choose the fallback resampler at runtime · e12140cf
      Max Kellermann authored
      Even if libsamplerate support is enabled, compile the fallback
      resampler.  When the user specifies the option
      "samplerate_converter=internal", it is chosen in favor of
      libsamplerate.  This may help users with a weak FPU who don't want to
      compile a custom MPD from source, because the fallback resampler does
      not use floating point operations.
      e12140cf
  2. 10 Mar, 2009 1 commit
  3. 09 Mar, 2009 1 commit
  4. 08 Mar, 2009 1 commit
    • Max Kellermann's avatar
      alsa: better period_time default value for high sample rates · 554a34fb
      Max Kellermann authored
      The default values for buffer_time and period_time were both capped by
      the hardware limits on practically all chips.  The result was a
      period_time which was half as big as the buffer_time.  On some chips,
      this led to lots of underruns when using a high sample rate (192 kHz),
      because MPD had very little time to send new samples to ALSA.
      
      A period time which is one fourth of the buffer time turned out to be
      much better.  If no period_time is configured, see how much
      buffer_time the hardware accepts, and try to configure one fourth of
      it as period_time, instead of hard-coding the default period_time
      value.
      
      This is yet another attempt to provide a solution which is valid for
      all sound chips.  Using the SND_PCM_NONBLOCK flag also seemed to solve
      the underruns, but put a lot more CPU load to MPD.
      554a34fb
  5. 03 Mar, 2009 1 commit
  6. 02 Mar, 2009 3 commits
  7. 01 Mar, 2009 2 commits
  8. 28 Feb, 2009 3 commits
  9. 27 Feb, 2009 1 commit
    • Max Kellermann's avatar
      song_print: hide HTTP password in playlist · eae02874
      Max Kellermann authored
      Added the uri_remove_auth() library function which strips username
      and password from a HTTP URI, and use it in song_print_url().  This
      allows you to add HTTP URIs to the playlist including secret username
      and password, without disclosing it to all MPD clients.
      eae02874
  10. 26 Feb, 2009 1 commit
  11. 25 Feb, 2009 3 commits
  12. 15 Feb, 2009 2 commits
  13. 14 Feb, 2009 1 commit
  14. 12 Feb, 2009 5 commits
    • Max Kellermann's avatar
      update: free deleted subdirectories · df9245c2
      Max Kellermann authored
      Use delete_directory() for removing sub directories instead of
      dirvec_clear().  This ensures that all memory occupied by
      subdirectories of deleted directories is freed.
      df9245c2
    • Max Kellermann's avatar
      update: recursively purge deleted directories · 16bab601
      Max Kellermann authored
      When a directory is deleted, MPD deleted only the directory from the
      database; it did not bother to walk the full tree to free all memory
      and to remove deleted songs from the playlist.  Replace a
      dirvec_delete() with delete_directory().
      16bab601
    • Max Kellermann's avatar
      aac: fix stream metadata · a06e2814
      Max Kellermann authored
      Pass the input_stream object to decoder_data().  Without it, the MPD
      core does not see stream tags.
      a06e2814
    • Max Kellermann's avatar
      14923394
    • Max Kellermann's avatar
      fluidsynth: new decoder plugin for MIDI files · e56a90f3
      Max Kellermann authored
      There are a few problems left in this plugin:
      
      - fluidsynth decodes in real time, while MPD prefers to buffer as
        quickly as possible; as a workaround, this plugin uses a timer
        object to synchronize with real-time playback
      
      - I don't know yet how fluidsynth tells me when the song has ended
      
      - the "soundfont" configuration setting is not yet documented, and it
        will likely change soon (in favor of a per-decoder configuration
        block)
      e56a90f3
  15. 11 Feb, 2009 2 commits
  16. 09 Feb, 2009 5 commits
  17. 03 Feb, 2009 3 commits
    • Max Kellermann's avatar
      ffmpeg: fixed seek integer overflow · 824d299e
      Max Kellermann authored
      The "current" variable is used for calculating the seek destination,
      and was declared as "int".  With very long song files, the 32 bit
      integer can overflow.  ffmpeg expects an int64_t, which is very
      unlikely to overflow.  Switch to int64_t.
      824d299e
    • Max Kellermann's avatar
      ffmpeg: check if the time stamp is valid · f3b73b82
      Max Kellermann authored
      When ffmpeg cannot estimate the elapsed time, it sets
      AVPacket.pts=AV_NOPTS_VALUE.  Our ffmpeg decoder plugin did not check
      for that special value.
      f3b73b82
    • Max Kellermann's avatar
      ffmpeg: don't warn of empty packet output · 81b6c0d7
      Max Kellermann authored
      If avcodec_decode_audio2() returns no output for an AVPacket,
      libavcodec may buffer some data, and return a larger chunk of output
      later.  This patch disables a lot of bogus warnings.
      81b6c0d7
  18. 02 Feb, 2009 2 commits
    • Max Kellermann's avatar
      shout_mp3: call lame_close() in clear_encoder() method · 3b0a78fe
      Max Kellermann authored
      The shout_mp3 encoder had two bugs: when no song was ever played, MPD
      segfaulted during cleanup.  Second bug: memory leak, each time the
      shout device was opened, lame_init() was called again, and
      lame_close() is only called once during shutdown.
      
      Fix this by shutting down LAME each time the clear_encoder() method is
      called.
      3b0a78fe
    • Max Kellermann's avatar
      player_thread: set player error when output device fails · 4b7c28f9
      Max Kellermann authored
      When the output device fails to play a chunk, set pc.error to
      PLAYER_ERROR_AUDIO.  This way, the playlist knows that it should not
      queue the next song.
      4b7c28f9
  19. 30 Jan, 2009 2 commits
    • Matthias Drochner's avatar
      mikmod: call MikMod_Exit() only in the finish() method · 5b852886
      Matthias Drochner authored
      Hi -
      independently of libmikmod's other problems - there seems
      to be a problem in mpd's wrapper: MikMod_Exit() is called
      after the first file is decoded, which frees some ressources
      within the mikmod library. An attempt to play a second file
      leads to a crash. The appended patch fixes this for me.
      (I don't know what the "dup" entry is good for - someone
      who knows should review that too.)
      best regards
      Matthias
      
      [mk: removed 3 more MikMod_Exit() invocations]
      5b852886
    • Max Kellermann's avatar
      wavpack: pass NULL if the .wvc file fails to open · 02bfb0c4
      Max Kellermann authored
      The wavpack library seems to use the .wvc stream even if the OPEN_WVC
      flag is not set.  In this case, pass NULL to be sure libwavpack won't
      use it.
      02bfb0c4