summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-07-06AudioFormat: include cleanupMax Kellermann
2018-07-06input/curl: use new class HttpStatusErrorMax Kellermann
This way, IsFileNotFound() can detect status 404.
2018-07-06db/update/{Walk,ExcludeList}: use InputStream to read .mpdignoreMax Kellermann
Supports .mpdignore on NFS/SMB and others (closes #290).
2018-07-06lib/nfs/Connection: use new class NfsClientErrorMax Kellermann
Allows callers to extract the NFS error code.
2018-07-06input/Error: new library providing IsFileNotFound()Max Kellermann
2018-07-06input/Domain: remove obsolete variableMax Kellermann
2018-07-06util/StringFormat: new utility libraryMax Kellermann
2018-07-06input/Offset: add macro PRIoffsetMax Kellermann
2018-07-06input/curl: remove obsolete Windows sprintf() fallbackMax Kellermann
See commit be137a191e5bb12f44e5c51205b2e5f86ef7117c
2018-07-06util/FormatString: remove obsolete Windows fallbackMax Kellermann
Since 7d353bbe2a70cd7894b1f5954a37e4a07890478d, _GNU_SOURCE is always defined, which implies __USE_MINGW_ANSI_STDIO and thus switches to the mingw implementations of the printf() family. That's standards-compliant, unlike Microsoft's CRT implementations.
2018-07-06db/update/ExcludeList: allow comments only at start of lineMax Kellermann
2018-07-06db/update/ExcludeList: move code to ParseLine()Max Kellermann
2018-07-06output/httpd: remove broken DLNA support codeMax Kellermann
This code was added in 21851c06733080b4c131d553d5d1f8784c12410f but looks completely broken: - the status code is "206 OK" but "206" would be "Partial Content" - the "Content-Length" header has a bogus value - the "Content-RangeX" parameter has different bogus values (why "Content-RangeX" anyway and not "Content-Range"?) Apart from that, there are strange undocumented non-standard headers which are probably there to work around bugs/expectations in one broken proprietary client product. But these days, MPD doesn't bend over to support broken clients. So let's kill this code. Closes #304
2018-05-28db/proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort"Max Kellermann
Closes #284
2018-05-28db/proxy: add "password" settingMax Kellermann
Closes #283
2018-05-12player/Thread: pause all outputs in single modeMax Kellermann
This mostly affects the Pulse output plugin which needs to "cork" the stream (closes #278).
2018-05-07decoder/opus: add support for R128_ALBUM_GAIN tagMichal Koutenský
2018-05-07decoder/dsd: allow 4 MB ID3 tagsMax Kellermann
Closes #277
2018-05-03decoder/{dsdiff,dsf}: support more MIME typesMax Kellermann
These are used by DSD-streaming servers. For example, MiniDLNA uses "audio/x-dsd".
2018-05-03{input,output}/alsa: work around -Wswitch due to SND_PCM_STATE_PRIVATE1Max Kellermann
2018-04-30SongFilter: fix "modified-since" filterMax Kellermann
Error message sent to client was "basic_string::_M_construct null not valid" due to passing nullptr to the std::string constructor. Regression caused by commit 386688b87ac
2018-04-26db/proxy: implement the group_mask parameter in VisitUniqueTags()Max Kellermann
Closes #258
2018-04-26db/proxy: call mpd_search_cancel() after search errorMax Kellermann
Fixes "search already in progress" errors.
2018-04-25lib/ffmpeg/Init: fix av_register_all() deprecation warningMax Kellermann
av_register_all() was deprecated in FFmpeg/FFmpeg@0694d8702421e7aff1340038559c438b61bb30dd
2018-04-25player/Thread: never reuse decoder when switching radio streamsMax Kellermann
When switching to another song manually, the player checks if the decoder is already decoding that song; if so, it will attempt to reuse it by seeking it to the new position. That however fails if the decoder is not seekable (e.g. a radio stream) which leaves the user unable to switch to that song with the bogus error message "Not seekable".
2018-03-15pcm/PcmDop: round down to the nearest multiple of 4 DSD bytesMax Kellermann
There was a discrepancy between what was written to the buffer and the size returned by pcm_dsd_to_dop(): the "for" loop uses num_frames/2, rounding down, while the return value is num_samples which is num_frames*channels, without rounding. This could cause undefined data at the end of the destination buffer if the source buffer size was not aligned to multiples of 8 bytes (4 DSD bytes per channel). The latter however can occur in the 0.21 branch after commit a06bf388d96 Closes #233
2018-03-15pcm/PcmDop: use size_tMax Kellermann
2018-03-15input/thread: move code to Stop()Max Kellermann
Fixes crash due to "pure virtual method called" in the "mms" input plugin. Closes #253
2018-03-14input/thread: set InputStream::ready after Open() failureMax Kellermann
Without setting the "ready" flag, the caller will wait in WaitReady() forever, locking up MPD. Closes #252
2018-03-04protocol/ArgParser: disallow negative seek timesMax Kellermann
Instead of stopping playback (due to seek time overflow), reject the seek command. Closes #240 Relative negative values (with "seekcur") are still allowed, and MPD will fix the resulting position if it turns out to be negative. But the "seek" and "seekid" commands use an unsigned time stamp which must not be negative.
2018-03-04Get rid of GCD on macOS which breaks debug buildsChristian Kröner
With Grand Central Dispatch used in Main.cxx, debug builds on macOS crash as the IsInside() assertion gets triggered in the event loop. As a simple fix, usage of GCD is removed. Plugging and unplugging headphones or changes of the default output device was tested without issues. Whatever the original commit tried to fix by GCD probably does not need fixing anymore.
2018-02-24net/Init: work around -Werror=unused-variableMax Kellermann
2018-02-24storage/nfs: use PathTraitsFS::const_pointer_typeMax Kellermann
2018-02-24storage/nfs: assume UTF-8 when accessing NFS from WindowsMax Kellermann
Fixes two build failures with libnfs on Windows.
2018-02-24Main: move WinSock initialization to class ScopeNetInitMax Kellermann
2018-02-24lib/nfs/FileReader: move sys/stat.h to header because "struct stat" may be macroMax Kellermann
It indeed is a macro on Windows.
2018-02-24lib/nfs/Connection: use winsock2.h instead of poll.h on WindowsMax Kellermann
2018-02-24Fix curl storage plugin failure if the authentication method is different ↵tpoeiras
than basic.
2018-02-24playlist/cue/Parser: parse tags after "INDEX 01"Max Kellermann
Instead of setting state=IGNORE_TRACK, ignore only the following "INDEX" lines. Correction for commit 8461d71b520. Closes #227
2018-02-17decoder/flac: move the SubmitData() call out of the callbackMax Kellermann
This addresses two problems: 1. the libFLAC write callback had to send an error status to its caller when SubmitData() returned a command; this disrupted libFLAC and the resulting command could not be used for anything; 2. the libFLAC function FLAC__stream_decoder_seek_absolute() also calls the write callback, but its result cannot be used, because seeking is still in progress, so we lose all data from one FLAC frame. By moving the SubmitData() call until after CommandFinished(), we avoid losing this data. This fixes another part of #113
2018-02-17decoder/flac: call FlacSubmitToClient() again after seekingMax Kellermann
See code comment.
2018-02-17decoder/flac: move code to FlacSubmitToClient()Max Kellermann
2018-02-17decoder/Bridge: truncate last chunk at the exact end_timeMax Kellermann
Instead of passing whole chunks to the MusicPipe and checking the end_time after each chunk, truncate the last chunk if it would exceed the end_time. This requires keeping track of the absolute PCM frame number. This fixes a problem with gapless CUE song transitions: a small part of the following song was always played twice. Closes #113
2018-02-17encoder/opus: initialize granulepos to 0cathugger
it was uninitialized before
2018-02-10mixer/alsa: work around rounding error at volume 0Max Kellermann
Due to rounding errors, a slightly negative value can be passed to set_normalized_volume(), which will make the log10() call fail. Actually, volume 0 is already failing because log10(0) is illegal. So let's fix this by implementing two corner cases: <=0 and >=100. Closes #212
2018-02-09lib/curl: remove .netrc support on AndroidMax Kellermann
Not needed on Android, and the implementation uses getpwuid_r() which is unavailable on old Android versions.
2018-02-09python/build/libs.py: convert CURL edit to quilt patchMax Kellermann
2018-02-09input/file: don't use posix_fadvise() on AndroidMax Kellermann
Requires Android API 21, but we want to support older versions as well.
2018-02-09SongSave, queue/PlaylistState, tag/ReplayGain: use portable atof() wrappersMax Kellermann
For Android pre-5.0 compatibility (#213).
2018-02-09protocol/ArgParser: move strtof()/strtod() switch to util/NumberParser.hxxMax Kellermann