Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | input/alsa: use StringAfterPrefix() | Max Kellermann | 2015-11-06 | 1 | -3/+2 |
| | |||||
* | util/UriUtil: use StringAfterPrefix() instead of memcmp() | Max Kellermann | 2015-11-06 | 1 | -9/+9 |
| | |||||
* | util/UriUtil: move code to SkipUriScheme() | Max Kellermann | 2015-11-06 | 1 | -6/+15 |
| | |||||
* | util/UriUtil: make variables more local | Max Kellermann | 2015-11-06 | 1 | -7/+4 |
| | |||||
* | util/StringCompare: add StringIsEmpty() | Max Kellermann | 2015-11-06 | 13 | -16/+37 |
| | |||||
* | util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith() | Max Kellermann | 2015-11-06 | 2 | -3/+4 |
| | | | | | Some optimized implementations of memcmp() may not start from the beginning of the string, and may thus segfault. | ||||
* | util/StringUtil: move comparison functions to StringCompare.cxx | Max Kellermann | 2015-11-06 | 31 | -156/+236 |
| | |||||
* | tag/id3: convert path from "wchar_t*" to "char*" for error message | Max Kellermann | 2015-11-06 | 1 | -1/+3 |
| | |||||
* | player/Thread: call DecoderCommand::SEEK only on existing decoder | Max Kellermann | 2015-11-05 | 1 | -17/+22 |
| | | | | | If the decoder was just started, it already seeks to the desired position. | ||||
* | player/Thread: move code to WaitDecoderStartup() | Max Kellermann | 2015-11-05 | 1 | -7/+21 |
| | |||||
* | player/Thread: move player_command_finished() to PlayerControl | Max Kellermann | 2015-11-05 | 2 | -12/+10 |
| | |||||
* | player/Thread: copy pc.seek_time in ActivateDecoder() | Max Kellermann | 2015-11-05 | 1 | -2/+1 |
| | | | | | If this gets called while seeking, do the right thing. This moves the elapsed_time setter from method Run(), which is now redundant. | ||||
* | player/Control: initialize seek_time in EnqueueSongLocked() | Max Kellermann | 2015-11-05 | 2 | -6/+3 |
| | | | | Allows removing a few special cases in the player thread. | ||||
* | player/Thread: remove decoder error check from ActivateDecoder() | Max Kellermann | 2015-10-28 | 1 | -37/+8 |
| | | | | | | It is futile to check for decoder errors before the decoder has finished startup. At this time, it's unlikely that the decoder has already failed. | ||||
* | player/Thread: rename WaitForDecoder() to ActivateDecoder() | Max Kellermann | 2015-10-28 | 1 | -10/+15 |
| | | | | .. and fix its API documentation. | ||||
* | player/Thread: move code to ForwardDecoderError() | Max Kellermann | 2015-10-27 | 1 | -6/+22 |
| | |||||
* | player/Thread: clear pc.next_song earlier in WaitForDecoder() | Max Kellermann | 2015-10-27 | 1 | -4/+3 |
| | |||||
* | player/Control: use CANCEL to clear next_song in Seek() | Max Kellermann | 2015-10-27 | 1 | -1/+5 |
| | | | | | Assigning nullptr to next_song may disrupt the player thread and render undefined behavior. | ||||
* | player/Thread: merge the cross_fading flag into enum CrossFadeState | Max Kellermann | 2015-10-27 | 1 | -22/+25 |
| | |||||
* | player/Thread: move ResetCrossFade() calls to where pipes are set | Max Kellermann | 2015-10-27 | 1 | -3/+8 |
| | | | | | Move ResetCrossFade() to where cross-fading would actually break, to make the cross-fading state more reliable. | ||||
* | player/Thread: add method ResetCrossFade() | Max Kellermann | 2015-10-27 | 1 | -2/+10 |
| | |||||
* | player/Thread: more CrossFadeState documentation | Max Kellermann | 2015-10-27 | 1 | -1/+16 |
| | |||||
* | player/Thread: automatic CrossFadeState enum values | Max Kellermann | 2015-10-27 | 1 | -4/+4 |
| | |||||
* | player/Thread: move enum CrossFadeState into the Player class | Max Kellermann | 2015-10-27 | 1 | -7/+5 |
| | |||||
* | command/queue: add range parameter to plchanges and plchangesposid | Max Kellermann | 2015-10-27 | 8 | -18/+58 |
| | |||||
* | pcm/Order: new library to convert from FLAC to ALSA channel order | Max Kellermann | 2015-10-27 | 10 | -8/+269 |
| | | | | | | | | | | | This new library is integrated in the PcmExport class and (if enabled) converts MPD's channel order (= FLAC channel order) to ALSA channel order. This fixes: http://bugs.musicpd.org/view.php?id=3147 and http://bugs.musicpd.org/view.php?id=3255 | ||||
* | AudioFormat: define that channel order follows the FLAC convention | Max Kellermann | 2015-10-27 | 1 | -2/+13 |
| | | | | | Basic definition to solve http://bugs.musicpd.org/view.php?id=3147 and http://bugs.musicpd.org/view.php?id=3255 | ||||
* | {android,win32}/build.py: upgrade Boost to 1.59.0 | Max Kellermann | 2015-10-27 | 2 | -4/+4 |
| | |||||
* | {android,win32}/build.py: upgrade FFmpeg to 2.8.1 | Max Kellermann | 2015-10-27 | 2 | -4/+4 |
| | |||||
* | {android,win32}/build.py: upgrade CURL to 7.45.0 | Max Kellermann | 2015-10-27 | 2 | -4/+4 |
| | |||||
* | android/build.py: switch to LLVM/clang 3.6 | Max Kellermann | 2015-10-27 | 1 | -1/+1 |
| | |||||
* | Merge tag 'v0.19.11' | Max Kellermann | 2015-10-27 | 10 | -32/+106 |
|\ | |||||
| * | release v0.19.11 | Max Kellermann | 2015-10-27 | 1 | -1/+1 |
| | | |||||
| * | systemd: remove obsolete ControlGroup settings | Max Kellermann | 2015-10-27 | 1 | -9/+0 |
| | | | | | | | | | | | | | | | | | | | | This systemd feature has been removed a while ago without replacement, and it turns out that systemd developers suggest not using control groups at all to assign real-time privileges. Therfore, a replacement feature will not be implement in future systemd releases, and we can really remove those lines completely. See http://bugs.musicpd.org/view.php?id=4413 | ||||
| * | doc/user: section about real-time scheduling | Max Kellermann | 2015-10-27 | 1 | -0/+52 |
| | | |||||
| * | gme: don't loop forever, fall back to GME's default play length | Max Kellermann | 2015-10-26 | 2 | -3/+4 |
| | | | | | | | | Fixes http://bugs.musicpd.org/view.php?id=4432 | ||||
| * | decoder/gme: free the gme_info_t as early as possible | Max Kellermann | 2015-10-26 | 1 | -6/+7 |
| | | |||||
| * | decoder/gme: call decoder_seek_error() on seek error | Max Kellermann | 2015-10-26 | 1 | -2/+4 |
| | | |||||
| * | output/Command: flush the mixer cache when enabling/disabling output | Max Kellermann | 2015-10-26 | 2 | -0/+10 |
| | | | | | | | | Fixes mixer lag (http://bugs.musicpd.org/view.php?id=4425). | ||||
| * | decoder/ffmpeg: fix crash due to wrong avio_alloc_context() call | Max Kellermann | 2015-10-26 | 2 | -4/+15 |
| | | | | | | | | | | | | | | | | Allocate the buffer dynamically using av_malloc(), and free AVIOContext.buffer in the destructor, as mandated by the libavformat documentation. Fixes http://bugs.musicpd.org/view.php?id=4446 | ||||
| * | decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32> | Max Kellermann | 2015-10-16 | 1 | -11/+13 |
| | | | | | | | | | | | | Eliminates some duplicate code, and as a side effect, this works around clang 3.8 compiler warning because a negative value was shifted. | ||||
| * | decoder/mpcdec: use Clamp() | Max Kellermann | 2015-10-16 | 1 | -6/+2 |
| | | |||||
| * | unix/Daemon, playlist/...: remove unused Domain variables | Max Kellermann | 2015-10-16 | 7 | -21/+0 |
| | | |||||
| * | encoder/flac: fix crash with 32 bit playback | Max Kellermann | 2015-10-16 | 2 | -2/+4 |
| | | | | | | | | | | | | | | Copy to encoder->audio_format *after* adjusting the sample format to S24_P32. Fixes http://bugs.musicpd.org/view.php?id=4433 | ||||
| * | tag/ApeLoader: fix buffer overflow after unterminated key | Max Kellermann | 2015-10-16 | 2 | -6/+8 |
| | | |||||
| * | configure.ac: prepare for 0.19.11 | Max Kellermann | 2015-10-16 | 2 | -2/+4 |
| | | |||||
* | | decoder/gme: log the emulator type | Max Kellermann | 2015-10-26 | 1 | -0/+3 |
| | | |||||
* | | decoder/gme: add option "accuracy" | Max Kellermann | 2015-10-26 | 3 | -1/+47 |
| | | |||||
* | | doc/user: add decoder/gme section | Max Kellermann | 2015-10-26 | 1 | -0/+9 |
| | | |||||
* | | playlist/flac: re-add the plugin | Max Kellermann | 2015-10-26 | 5 | -0/+171 |
| | | | | | | | | | | | | | | | | | | | | This reverts commit d7d9dbd2c2798b6ff39acb07a3bed38b6f99e283 by reimplementing it with the current MPD API. 3 years ago, I was wrong about the "embcue" plugin being able to replace this one, because "embcue" reads a tag named "CUESHEET", while this plugin reads the "CUESHEET" FLAC metablock. There's an important difference between those two! |