| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that. That however is
extremely expensive for remote files, and will delay playback for a
long time. Workaround: check only the first 128 frames and try to
extrapolate from here. Fixes Mantis ticket 0004035.
|
|
|
|
| |
.. instead of InputStream::LockRead(). The former is cancellable.
|
|
|
|
|
|
|
|
|
|
| |
Implement a "bulk" edit mode that postpones both UpdateQueuedSong()
and OnModified(). This way, the playlist version gets incremented
only once. More importantly: when adding multiple songs to a queue
that consists of only one song, the first song that got added will
always be played next. By postponing this choice, all newly added
songs get a chance to become the next song. Fixes the second (and
last) part of Mantis ticket 0004005.
|
|
|
|
|
|
| |
Don't restore the current song after shufflung when MPD is stopped
(but still remembers the current song internally). Fixes the first
part of Mantis ticket 0004005.
|
|
|
|
|
|
|
| |
Addresses Mantis ticket 0004015.
[mk: use decoder_read_full() only when needed, and a few formal
changes]
|
|
|
|
|
| |
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
|
|
|
|
|
| |
.. instead of InputStream::LockRead(). The former is cancellable.
|
|
|
|
|
| |
Error message was 'too few arguments for "find"' because the "base"
constraint was not supported, and no other constraints remained.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fixes missing song length on high-latency Opus files.
According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
|
|
|
|
|
|
|
|
|
| |
Turns out the lock-free code using atomics was not thread-safe. The
given callback could be invoked by GLib before the source_id attribute
was assigned. This commit changes the DeferredMonitor class to use a
Mutex to block the event loop until source_id is assigned. This bug
does not exist in the 0.19 branch because it does not use the GLib
main loop anymore.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This corrects a major mistake from commit 724a59aa - there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Don't wait for an optimistic write to fail. This is an improved
workaround for the infamous Raspberry Pi bug (see commit af991765).
It works much better and comes without the negative side effects. The
old workaround is now obsolete.
|
| |
|
| |
|
|
|
|
| |
Fixes hanging child process in the "pipe" output plugin.
|
|
|
|
|
| |
Link libvorbisfile first, followed to libvorbis and finally libogg.
This order is necessary because libvorbisfile depends on libvorbis.
|
|
|
|
| |
Fixes another linker failure. Similar to commit ea406875
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Since the encoder plugin uses a libvorbis function (and not only
libvorbisenc functions), we need to link with libvorbis explicitly.
|
|
|
|
|
| |
Allow semicolons and single quotes in the stream title. This is not
part of any specification, but found in real life.
|
|
|
|
|
| |
Works around a build failure on Solaris because annoyingly, Solaris
reserves the name "queue". This rename was pending anyway.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Look for symbol "mpc_demux_init" which does not exist in SV7. This
avoids build failures when SV7 was found by configure.ac.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
If we have libyajl 2.0.1 (without a pkg-config file), our configure.ac
would assume this is the libyajl 1.0 API, because the function
yajl_alloc() exists in both. This commit changes the library check to
the function yajl_parse_complete() which was removed in the 2.0 API.
This fixes build failure with libyajl 2.0.1.
|
|
|
|
|
| |
We can assume that initgroups() would be a no-op in that case, however
initgroups() is not allowed for unprivileged users anyway.
|
| |
|
| |
|
|
|
|
|
| |
The "mode" of the second ReplayGainFilter was never set, and thus
replay gain was never applied to the new song during cross-fade.
|
| |
|
|
|
|
| |
Some tagging libraries (eg. TagLib) produce that variant.
|
|
|
|
|
| |
This is safer, and works without epoll(). Fixes a build failure with
uClibc, which does not support epoll().
|