aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith()Max Kellermann2015-11-062-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.cxxMax Kellermann2015-11-0630-153/+232
|
* tag/id3: convert path from "wchar_t*" to "char*" for error messageMax Kellermann2015-11-061-1/+3
|
* player/Thread: call DecoderCommand::SEEK only on existing decoderMax Kellermann2015-11-051-17/+22
| | | | | If the decoder was just started, it already seeks to the desired position.
* player/Thread: move code to WaitDecoderStartup()Max Kellermann2015-11-051-7/+21
|
* player/Thread: move player_command_finished() to PlayerControlMax Kellermann2015-11-052-12/+10
|
* player/Thread: copy pc.seek_time in ActivateDecoder()Max Kellermann2015-11-051-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 Kellermann2015-11-052-6/+3
| | | | Allows removing a few special cases in the player thread.
* player/Thread: remove decoder error check from ActivateDecoder()Max Kellermann2015-10-281-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 Kellermann2015-10-281-10/+15
| | | | .. and fix its API documentation.
* player/Thread: move code to ForwardDecoderError()Max Kellermann2015-10-271-6/+22
|
* player/Thread: clear pc.next_song earlier in WaitForDecoder()Max Kellermann2015-10-271-4/+3
|
* player/Control: use CANCEL to clear next_song in Seek()Max Kellermann2015-10-271-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 CrossFadeStateMax Kellermann2015-10-271-22/+25
|
* player/Thread: move ResetCrossFade() calls to where pipes are setMax Kellermann2015-10-271-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 Kellermann2015-10-271-2/+10
|
* player/Thread: more CrossFadeState documentationMax Kellermann2015-10-271-1/+16
|
* player/Thread: automatic CrossFadeState enum valuesMax Kellermann2015-10-271-4/+4
|
* player/Thread: move enum CrossFadeState into the Player classMax Kellermann2015-10-271-7/+5
|
* command/queue: add range parameter to plchanges and plchangesposidMax Kellermann2015-10-276-17/+52
|
* pcm/Order: new library to convert from FLAC to ALSA channel orderMax Kellermann2015-10-276-2/+201
| | | | | | | | | | | 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 conventionMax Kellermann2015-10-271-2/+13
| | | | | Basic definition to solve http://bugs.musicpd.org/view.php?id=3147 and http://bugs.musicpd.org/view.php?id=3255
* Merge tag 'v0.19.11'Max Kellermann2015-10-277-23/+43
|\
| * gme: don't loop forever, fall back to GME's default play lengthMax Kellermann2015-10-261-3/+3
| | | | | | | | Fixes http://bugs.musicpd.org/view.php?id=4432
| * decoder/gme: free the gme_info_t as early as possibleMax Kellermann2015-10-261-6/+7
| |
| * decoder/gme: call decoder_seek_error() on seek errorMax Kellermann2015-10-261-2/+4
| |
| * output/Command: flush the mixer cache when enabling/disabling outputMax Kellermann2015-10-261-0/+8
| | | | | | | | Fixes mixer lag (http://bugs.musicpd.org/view.php?id=4425).
| * decoder/ffmpeg: fix crash due to wrong avio_alloc_context() callMax Kellermann2015-10-261-4/+13
| | | | | | | | | | | | | | | | 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 Kellermann2015-10-161-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 Kellermann2015-10-161-6/+2
| |
| * unix/Daemon, playlist/...: remove unused Domain variablesMax Kellermann2015-10-167-21/+0
| |
| * encoder/flac: fix crash with 32 bit playbackMax Kellermann2015-10-161-2/+2
| | | | | | | | | | | | | | 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 keyMax Kellermann2015-10-161-6/+6
| |
* | decoder/gme: log the emulator typeMax Kellermann2015-10-261-0/+3
| |
* | decoder/gme: add option "accuracy"Max Kellermann2015-10-261-1/+24
| |
* | playlist/flac: re-add the pluginMax Kellermann2015-10-263-0/+164
| | | | | | | | | | | | | | | | | | | | 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!
* | LocateUri: new library to classify URIs in a standard wayMax Kellermann2015-10-229-186/+472
| |
* | SongLoader: move code to LoadFromDatabase()Max Kellermann2015-10-222-10/+20
| | | | | | | | Avoids the recursion in LoadFile().
* | Filter out this extra data and leading zeroes in "track" and "disc" tags.Andreas Mair2015-10-211-1/+14
| |
* | PlaylistPrint: fix -Wunused #ifndef ENABLE_DATABASEMax Kellermann2015-10-202-0/+2
| |
* | DetachedSong: check AllocatedPath::FromUTF8() resultMax Kellermann2015-10-201-0/+2
| |
* | DetachedSong: move code from Update() to LoadFile()Max Kellermann2015-10-204-24/+34
| | | | | | | | Avoid duplicate AllocatedPath::FromUTF8() invocations in two callers.
* | command/DatabaseCommands: pass URI to handle_lsinfo2()Max Kellermann2015-10-203-6/+3
| |
* | command/FileCommands: fix access to absolute paths in "readcomments"Max Kellermann2015-10-201-6/+3
| |
* | input/InputStream: remove obsolete method OverrideMimeType()Max Kellermann2015-10-201-7/+0
| |
* | output/httpd: use boost::intrusive::list instead of std::forward_listMax Kellermann2015-10-193-25/+18
| |
* | util/DeleteDisposer: new utility classMax Kellermann2015-10-196-24/+54
| |
* | decoder/mad: reduce memory usage while scanning tagsMax Kellermann2015-10-191-3/+11
| | | | | | | | Allocate the frame pointers only when actually decoding the file.
* | fs/Traits: use StringAfterPrefix() in Relative()Max Kellermann2015-10-191-3/+3
| |
* | util/StringUtil: add StringAfterPrefix()Max Kellermann2015-10-164-0/+49
| |