| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
ffmpeg_tag_internal() does not look for a few tags that mpd
supports. Most noteably:
comment -> TAG_ITEM_COMMENT -> Description
genre -> TAG_ITEM_GENRE -> WM/Genre (not WM/GenreID)
year -> TAG_ITEM_DATE -> WM/Year
I *think* that this is the last of the tags that AVFormatContext() in
ffmpeg supports that mpd also uses.
|
|
|
|
|
|
|
|
|
|
| |
When waiting for free space in the ring buffer, the JACK plugin
sleeped 10ms until there is enough space. This delay was too large
for low-latency setups (<10ms), and created a lot of xruns. Work
around that by reducing the sleep time to 1ms.
A proper solution for this would be to use an event based approach,
and we will do it, just not now.
|
|
|
|
|
|
|
| |
When the connection failed once, you had to restart MPD, because it
never cleared the jack_data.shutdown flag. Instead, it refused to
play anything "because there is no client thread" (which is wrong at
that point).
|
|
|
|
|
| |
If the ring buffers are allocated after jack_activate(),
mpd_jack_process() might segfault because it attempts to access them.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When libvorbis knows that a song is seekable, it seeks around like
crazy in the file before starting to decode it. This is very
expensive on remote HTTP resources, and delays MPD for 10 or 20
seconds.
This patch disables seeking on remote songs, because the advantages of
quickly playing a song seem to weigh more than the theoretical ability
of seeking for most MPD users. If users feel this feature is needed,
we will make a configuration option for that.
|
|
|
|
|
| |
Due to rounding errors, it was possible that the fallback resampler
returned partial frames.
|
|
|
|
| |
When tremor (libvorbisidec) is used, HAVE_OGGVORBIS was not defined.
|
|
|
|
| |
Set the "ready" flag for empty resources.
|
|
|
|
|
| |
To check for early connect failures, call curl_multi_info_read() in
the constructor input_curl_open(). This fixes an assertion failure.
|
|
|
|
|
|
|
|
| |
When a song file is deleted during database update, all pointers to it
must be removed from the playlist. The "for" loop in
deleteASongFromPlaylist() did not deal with multiple copies of the
deleted song properly, and left instances of the (to-be-invalidated)
pointer in. Fix this by reversing the loop.
|
|
|
|
|
|
|
|
|
|
| |
If http_proxy_{host, port, user, password} are provided in mpd.conf
they are not passed on to libcurl. As a result mpd cannot stream from
behind an http proxy.
The attached patch `http_proxy.patch` makes the relevant calls to
curl_easy_setopt(...) for all proxy configuration parameters, but is
only tested for host and port.
|
|
|
|
|
|
|
|
| |
MPD's shuffling algorithm was not implemented well: it considers songs
which were already swapped, making it somewhat non-random.
Fix the Fisher-Yates shuffle algorithm by passing the proper bounds to
the PRNG.
|
|
|
|
|
|
|
| |
When decoder_run_song() (decoder_thread.c) waits for the input stream
to become ready, it did that in a busy loop. Add a select() call to
input_curl_buffer() during connect/handshake (i.e. before the first
chunk of body data was received), to let the CPU relax.
|
|
|
|
| |
Save an empty database, even if the music directory is empty.
|
|
|
|
|
| |
Don't use libc's rand() function, because it is slow. Our own trivial
linear congruential generator is good enough for dithering.
|
| |
|
|
|
|
|
|
| |
libid3tag comes without a pkg-config file, and it is usually added by
distribution packages. For those without .pc file, attempt to
auto-detect the library with AC_CHECK_LIB.
|
|
|
|
|
|
| |
Don't call command_error() if loading a song from the playlist fails.
This may result in assertion failures, since command_error() may be
called more than once.
|
|
|
|
|
|
|
|
| |
When the decoder of the new song is not fast enough, the player thread
has to wait for it for a moment. However the variable "nextChunk" was
reset to -1 during that, making the next loop iteration assume that
cross-fading has not begun yet. This patch overwrites it with "0"
while waiting.
|
|
|
|
|
|
|
| |
This patch fixes a minor memory leak: when decoder_tag() attempted to
send a merged tag object (created by tag_add_stream_tags()), and was
interrupted by a decoder command, it did not free the temporary merged
tag object.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
libmikmod seems to be unmaintained, and has several critical bugs
which make MPD crash.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=461519
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=476339
Disable the plugin by default to minimize harm. Users should
explicitly enable the mikmod decoder (--enable-mod) if they wish to
have it anyway.
|
| |
|
| |
|
| |
|
|
|
|
| |
Adding some of the most important changes since 0.13.
|
|
|
|
| |
Trying to bring a little bit of structure into that list.
|
|
The file name "NEWS" is standardized.
|