aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* PcmConvert: add methods Open(), Close()Max Kellermann2013-11-139-74/+151
| | | | | Replaces Reset() and eliminates the AudioFormat parameters from the Convert() method.
* DecoderAPI: stop decoder on MPD errorMax Kellermann2013-11-133-1/+17
| | | | | This commit adds the basic infrastructure for reporting bugs from DecoderAPI.cxx via DecoderThread.cxx to DecoderControl.
* DecoderInternal: allocate PcmConvert dynamicallyMax Kellermann2013-11-133-14/+30
| | | | Reduce header dependencies and allow it to be nullptr to disable it.
* DecoderInternal: move functions into the classMax Kellermann2013-11-134-44/+37
|
* PcmResampleFallback: use PcmBuffer instead of PcmResamplerMax Kellermann2013-11-133-9/+9
| | | | Lighter API.
* configure.ac: prepare version 0.19Max Kellermann2013-11-131-1/+1
|
* release v0.18.4Max Kellermann2013-11-131-1/+1
|
* doc/example: remove "format" and "audio_output_format"Max Kellermann2013-11-111-8/+0
| | | | | Just an attempt to prevent users from shooting themselves in the foot by uncommenting these lines without knowing what they're doing.
* util/RefCount: no "constexpr" with libc++Max Kellermann2013-11-112-1/+7
| | | | Not supported by libc++.
* util/LazyRandomEngine: make min()/max() static+constexprMax Kellermann2013-11-111-4/+4
| | | | Required for building with libc++.
* output/httpd: don't use incomplete template argument with libc++Max Kellermann2013-11-111-0/+5
|
* filter/route, ...: add missing stdlib.h includesMax Kellermann2013-11-115-0/+5
|
* DespotifyUtils: add missing stdio.h includeMax Kellermann2013-11-111-0/+2
|
* DecoderAPI: add missing math.h includeMax Kellermann2013-11-111-0/+1
|
* decoder/dsdiff: fix byte order bugJurgen Kramer2013-11-103-2/+15
|
* DecoderThread: add missing <functional> includeMax Kellermann2013-11-091-0/+2
|
* configure.ac: prepare for 0.18.4Max Kellermann2013-11-092-1/+3
|
* release v0.18.3Max Kellermann2013-11-081-1/+1
|
* doc/developer: add text from the wikiMax Kellermann2013-11-081-1/+64
|
* Makefile.am: disable dist-bzip2Max Kellermann2013-11-082-2/+2
| | | | | bzip2-compressed tarballs are obsolete, xz is better and widely understood.
* doc: show .tar.xz in sample unpack commandMax Kellermann2013-11-082-7/+3
|
* doc: replace the remaining wikia linksMax Kellermann2013-11-083-11/+9
|
* DecoderAPI: log without holding mutexMax Kellermann2013-11-081-2/+2
|
* PlayerThread: fix stuck MPD after song change (0.18.2 regression)Max Kellermann2013-11-082-4/+9
| | | | | | | | | | | | | Commit 77c63511 caused MPD to become stuck right after a song change. The problem was that at some point, the MusicBuffer became full, and the DecoderThread working on the next song waits for the PlayerThread. However, the PlayerThread was stuck in a loop of g_usleep() calls, and never bothered to tell the DecoderThread that the MusicBuffer is not full anymore. This bug is very old, but its chance to occur went from nearly 0% to nearly 100%. The fix is to wake up the DecoderThread before waiting for it. As a side effect, I replaced the g_usleep() call with a Cond::Wait() call.
* DecoderInternal: simplify need_chunks()Max Kellermann2013-11-081-11/+4
| | | | | Remove the "do_wait" parameter which is always true. Check only command==NONE and merge the "return" statements.
* DecoderInternal: don't wake up player in need_chunksMax Kellermann2013-11-081-1/+0
| | | | Nothing of interest happens here. No need to wake up the player.
* configure.ac: prepare for 0.18.3Max Kellermann2013-11-082-1/+3
|
* release v0.18.2Max Kellermann2013-11-071-1/+1
|
* doc: more information about "close"Max Kellermann2013-11-071-1/+4
|
* doc: remove documentation on obsolete tcp_keep_alive optionsMax Kellermann2013-11-072-45/+0
|
* doc: add link to user manualMax Kellermann2013-11-071-0/+4
|
* doc: update current maintainerMax Kellermann2013-11-071-1/+1
|
* doc: update Mantis linkMax Kellermann2013-11-071-1/+1
|
* doc/user: add more documentation for the proxy database pluginMax Kellermann2013-11-072-1/+13
|
* input/cdio_paranoia: add setting "default_byte_order"Max Kellermann2013-11-073-2/+51
| | | | | | Allows big-endian users to configure the fallback byte order to little-endian. Without this setting, MPD assumes native byte order if the CD drive can't decide.
* AvahiPoll: don't close the dbus socketMax Kellermann2013-11-071-0/+4
| | | | Avoid closing it twice.
* input/curl: unregister removed sockets from epollMax Kellermann2013-11-071-1/+9
| | | | Fixes a crash bug. See code comment.
* OutputControl: reduce the number of OutputThread wakeupsMax Kellermann2013-11-064-2/+30
| | | | | Wake up the OutputThread only if it hasn't already been woken up and if it isn't already in the playback loop.
* PlayerThread: reduce the number of DecoderThread wakeupsMax Kellermann2013-11-061-2/+14
| | | | | | | After the number of decoded chunks has fallen below the threshold, the PlayerThread woke up the DecoderThread over and over. This commit adds a boolean flag that avoids these duplicate wakeups, and thus reduces the number of system calls.
* DecoderControl: reduce the number of PlayerThread wakeupsMax Kellermann2013-11-063-4/+26
| | | | | Wake up the PlayerThread only if it is really waiting for the decoder. This greatly reduces the number of system calls in the DecoderThread.
* DecoderInternal: lock DecoderControl in _flush_chunk()Max Kellermann2013-11-062-0/+4
| | | | Must hold the Mutex to signal the Cond object safely.
* DecoderInternal: wake up the player thread in _flush_chunk()Max Kellermann2013-11-062-4/+2
| | | | Merge duplicate code.
* event/FullyBufferedSocket: remove obsolete TODO commentMax Kellermann2013-11-061-16/+0
| | | | We have a better solution now.
* ClientRead: "close" flushes the output bufferMax Kellermann2013-11-064-1/+14
| | | | | | Add a new CommandResult code called "FINISH" which, unlike "CLOSE", will attempt to flush the output buffer. This is a one-shot attempt; it will do one write, and not try again.
* event/FullyBufferedSocket: try to write without extra roundtripMax Kellermann2013-11-062-17/+33
| | | | | | Postpone the write using IdleMonitor instead of scheduling a write event. This reduces the number of system calls, because we don't need to register and unregister the write event in epoll.
* event/FullyBufferedSocket: make WriteFromBuffer() protectedMax Kellermann2013-11-062-4/+4
| | | | .. and rename it to Flush().
* PlayerThread: enable buffering when starting playbackMax Kellermann2013-11-062-1/+2
| | | | | | For some reason, this got lost in commit 975deca8. Re-enabling this fixes stuttering at the beginning of radio streams.
* configure.ac: require libaudiofile 0.3 due to API breakageMax Kellermann2013-11-062-1/+2
| | | | | | Prior to version 0.3, the "length" callback returned a "long" instead of AFfileoffset. Now that this API bug fix is a few years old, let's drop 0.2 support for good.
* input/curl: fix bug with redirected streamsMax Kellermann2013-11-062-110/+140
| | | | | | | | | | | Migrate from the old curl_multi_perform() API to the newer curl_multi_socket_action() API (since CURL 7.16). This allows working around a bug with HTTP redirections with epoll: when CURL closes a socket and the new one happens to have the same file number, MPD did not have a chance to remove the old one from epoll and subsequently attempted to use EPOLL_CTL_MOD, which was not allowed by epoll, because it's a new socket now.
* input/curl: move code into class CurlMultiMax Kellermann2013-11-061-43/+66
| | | | | Move all global variables there, and keep just one global variable: the pointer to the CurlMulti instance. Prepares for the next commit.