Age | Commit message (Collapse) | Author |
|
|
|
This attribute is not particularly important, but it was
uninitialized.
|
|
Fixes #165.
|
|
When starting playback with a specific song which does not have the
highest priority, the previous highest priority song was skipped
completely because its order was "swapped". This commit changes to a
more expensive operation which inserts the selected song into the
order list.
This fixes a small part of #165
|
|
libupnp 1.6.24 added a few badly designed macros which break the MPD
build:
https://sourceforge.net/p/pupnp/code/ci/8177a4195a4d4a5d6cb095eaf4ca5b65ac446381/
To work around this, we disable our emulation functions (from
714011c81ed6053f7a35812071499356f337dd70) on this libupnp version.
Closes #163
|
|
Signed-off-by: FlashSystems <developer@flashsystems.de>
|
|
|
|
|
|
Closes #155
|
|
|
|
|
|
Fixes a deadlock caused by commit
31ab78ae8e10af948ec95496df0d2abf1ea631a4. That commit was not
actually bad - just these two calls have always been bad, which went
unnoticed for a long time.
|
|
Without the flush, ReadPage() may not return any data, or not all
data. This may result in incomplete ddata the new "header" page,
corrupting streams with some encoders such as Vorbis.
Fixes #145
|
|
Don't require a quality or bitrate setting. If nothing is set, don't
fail startup - just go with a good default. A quality setting of 3 is
what "oggenc" defaults to as well.
|
|
InputStream::Read() and InputStream::Seek() are called with the mutex
locked. That means the implementation must not block, or unlock the
mutex before calling into blocking code.
Previously, a slow CD drive could stall the whole MPD process,
including the main thread, due to this problem.
Closes #149
|
|
|
|
Work around -Werror=catch-value.
|
|
Workaround for #146.
|
|
Fixes hanging playback with soxr resampler.
Closes #139, #141
|
|
Tremor decoder is unusable since commit 2ee43c4. Sound is distorted to
the point where it's nothing but noise.
The data from vorbis_synthesis_pcmout() needs to be scaled and
clipped for 16 bit sample size. For reference see
http://lists.xiph.org/pipermail/tremor/2010-April/001642.html and
http://lists.xiph.org/pipermail/vorbis/2006-October/026513.html.
Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
|
|
|
|
It's not possible to set CURL options after curl_easy_perform(), and
thus the CURLOPT_RANGE had no effect.
|
|
|
|
From the CURLOPT_RANGE documentation: "The application does not have
to keep the string around after setting this option."
|
|
|
|
|
|
Turns out that using CP_ACP is a lousy idea, because only very few
Unicode characters can be represented by it. Instead, switch to UTF-8
(which every sane person on other operating system already uses).
Closes #102
|
|
|
|
Applies the improvements from the previous commit to the "seek"
commands, which are also capable of switching songs.
Closes #119
|
|
Our previous use of Queue::SwapOrders() could cause surprising
results:
- sometimes, the old "current" song would be played again (if the
newly selected song had not been played already)
- sometimes, the old "current" song would not be played again (if the
newly selected song had already been played)
This is inconsistent, because it should not depend on whether the
newly selected song had already been played.
So instead of Queue::SwapOrders() we now use Queue::MoveOrderAfter()
and Queue::MoveOrderBefore(), which is more expensive, but also more
consistent. It attempts to retain as much from the previous order
list as possible, and only moves the newly selected song around.
|
|
|
|
|
|
|
|
If an early exception gets caught (e.g. from
AllocatedPath::FromUTF8Throw()) before
DecoderControl::CommandFinishedLocked() is called, the decoder thread
would go in an endless loop, because DecoderCommand::START is still
set.
Closes #118
|
|
GME starts all track indexes at zero, but subtune prefixes
start at one. This fixes an off-by-one error during track
enumeration.
|
|
|
|
Our IcuCaseFold() fallback using strxfrm() is not actually case
insensitive. This commit fixes the problem by switching to
strcasecmp(). That function is not guaranteed to support UTF-8, but
it's the best we can do in this sparse situation.
Closes #111
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to container duration (fix MusicPlayerDaemon/MPD#110)
|
|
|
|
Closes #107
|
|
|
|
|