Commit Graph

11290 Commits

Author SHA1 Message Date
Max Kellermann
98efb4f6d5 android: raise minSdkVersion to 21
The number of MPD installs on Android < 5.0 is negligible, and that
API version introduces lots of useful features for MPD.
2018-08-17 19:01:37 +02:00
Max Kellermann
4ba3812baf Merge branch 'fchmod_fix' of git://github.com/1848/MPD 2018-08-14 23:14:10 +02:00
1848
4797357fa9 fixed setting unix socket permissions
first call fchmod() to prevent TOCTTOU, then apply permissions using
chmod()
2018-08-14 22:53:19 +02:00
Max Kellermann
f6b3a88723 Merge branch 'master' of git://github.com/skidoo23/MPD 2018-08-14 19:02:37 +02:00
Max Kellermann
fcf487f4e0 playlist/cue: support file type declaration "FLAC" (non-standard)
According to http://wiki.hydrogenaud.io/index.php?title=Cue_sheet FLAC
files should use the "WAVE" file type, but I recently encountered CUE
files declared as "FLAC" which could not be read by MPD.
2018-08-13 08:18:18 +02:00
skidoo23
82e8913c05 decoder/sidplay: support basic and kernal rom (libsidplayfp) 2018-08-12 14:25:11 +02:00
Max Kellermann
c46483a4ab tag/Config: support incremental "metadata_to_use" setting
With a "+" or "-" prefix, the "metadata_to_use" setting can manipulate
the existing default.  This way, one can enable `TAG_COMMENT` without
having to list all the other tags.
2018-08-10 18:46:47 +02:00
Max Kellermann
0f19108ce3 tag/Config: use SplitString() 2018-08-10 18:46:16 +02:00
Max Kellermann
4208fe29b5 tag/Mask: add method Unset() 2018-08-10 18:46:15 +02:00
Max Kellermann
c1b33533da event/ServerSocket: fix get_remote_uid() call
This call was broken since commit
9a5bcc6db0 because the
`UniqueSocketDescriptor` had already been moved.
2018-08-09 13:22:25 +02:00
Max Kellermann
66fcd25b7e command/sticker, sticker/song: embed struct sticker_song_find_data in namespace
Fixes `-Werror=odr`
2018-08-09 12:57:47 +02:00
Max Kellermann
01d3777574 decoder/Thread, ...: log all exceptions 2018-08-09 11:14:40 +02:00
Max Kellermann
87570cdd9b Merge branch 'HttpdOutputPlugin_socket' of git://github.com/1848/MPD 2018-08-08 16:57:24 +02:00
Max Kellermann
0ea6a2dd99 decoder/mpg123: remove obsolete const_cast hack 2018-08-07 22:52:38 +02:00
Max Kellermann
cacc1ffdad decoder/mpg123: use AtScopeExit() to call mpg123_delete() during scan 2018-08-07 22:48:11 +02:00
Max Kellermann
cfe34647e1 decoder/mpg123: use AtScopeExit() to call mpg123_delete() 2018-08-07 22:29:51 +02:00
1848
737267cedc Moved call to fchmod() on socket from OneServerSocket::Open() to socket_bind_listen() 2018-08-07 22:01:13 +02:00
1848
84054203af Use fchmod instead of chmod for unix sockets to prevent TOCTTOU 2018-08-07 21:30:25 +02:00
1848
0c1a899fbe Added unix socket support in HttpdOutputPlugin 2018-08-07 19:28:29 +02:00
1848
52521d02ea Added a function for generic address parsing
Changed listen_add_config_param() to use generic address parsing
2018-08-07 19:18:33 +02:00
Yue Wang
2127a482da
Fix various bugs in OS X DSD playback
the most notable bugs are 

1. osx_output_set_device_format should use the target asbd rather than AudioFormat. This is because asbd's sample rate calculation reflects the real dop target rate of the DAC, white AudioFormat's sample rate is the original DSD format rate.

2. the original code value the highest rate that's the multiple of the target rate. This cause DOP always have the wrong rate chosen. This is also not necessary for PCM playback --- MPD's goal is bit perfect, and it's meaningless to raise to two or four times the PCM sample rate.

3.  if sample_rate cannot be synchronized, the test for falling back to PCM is wrong. If the file format is in DSD format such fallback is necessary, whatever the params.dop setting is.
2018-08-07 01:55:06 -07:00
Max Kellermann
7df0d3b7fc event/SignalMonitor: make SignalMonitorFinish() noexcept 2018-08-06 12:01:46 +02:00
Max Kellermann
fdd101c4c5 event/SignalMonitor: add noexcept 2018-08-06 12:00:49 +02:00
Max Kellermann
4218f56f6c system/SignalFD: add "noexcept" 2018-08-06 11:58:37 +02:00
Max Kellermann
dd18fe34a7 system/SignalFD: throw exception on error 2018-08-06 11:58:29 +02:00
Max Kellermann
5b09504a71 system/Event{FD,Pipe}: add "noexcept" 2018-08-06 11:57:40 +02:00
Max Kellermann
0c1a001622 system/Event{FD,Pipe}: throw exception on error 2018-08-06 11:49:38 +02:00
Max Kellermann
148c38fbb9 Main: use AtScopeExit() to delete the Instance 2018-08-06 11:42:46 +02:00
Max Kellermann
fbfefcc0a3 Main: call daemonize_finish() with AtScopeExit() 2018-08-06 10:47:06 +02:00
Max Kellermann
b4c517c501 song/AudioFormatFilter: add mask support 2018-08-02 21:34:29 +02:00
Max Kellermann
b39bc85e60 AudioFormat: add mask support to ToString() 2018-08-02 21:18:36 +02:00
Max Kellermann
603ce87ac2 AudioFormat: split the printf() calls in ToString()
Prepare for formatting masks.
2018-08-02 21:17:54 +02:00
Max Kellermann
4b16a8bf84 lib/icu: require at least version 50 2018-08-02 21:01:39 +02:00
Max Kellermann
ca4c81dd84 decoder/mikmod: require at least version 3.2 2018-08-02 20:45:14 +02:00
Max Kellermann
e9881bbfc8 configure.ac: detect libmikmod with pkg-config 2018-08-02 20:42:25 +02:00
Max Kellermann
69f4178bff decoder/ffmpeg: require at least version 11.12
This is the version in Debian Jessie (oldstable).
2018-08-02 20:18:19 +02:00
Max Kellermann
027e562f65 song/OptimizeFilter: optimization stage for filters 2018-08-02 19:42:53 +02:00
Max Kellermann
e5e623ffaa SongFilter: add class NotSongFilter 2018-08-02 19:22:55 +02:00
Max Kellermann
592d2ebd26 song/AudioFormatSongFilter: new filter type 2018-08-02 17:28:17 +02:00
Max Kellermann
299c809272 song/Filter: convert LOCATE_TAG_* macros to enum 2018-08-02 17:23:25 +02:00
Max Kellermann
d929d0c26f song/Filter: move each class into a separate source 2018-08-02 13:54:36 +02:00
Max Kellermann
90201e9970 DetachedSong, db/LightSong, SongFilter: move to src/song/ 2018-08-02 13:51:18 +02:00
Max Kellermann
a31da51fd9 lib/systemd/Watchdog: implement the systemd watchdog protocol 2018-08-02 11:15:35 +02:00
Max Kellermann
cf471e830f Merge branch 'v0.20.x' 2018-08-02 11:07:40 +02:00
Max Kellermann
906972973e case-insensitive URI scheme comparison
Required according to RFC 3986:

> An implementation should accept uppercase letters as equivalent to
> lowercase in scheme names

Closes #330
2018-08-02 11:01:45 +02:00
Max Kellermann
116edf5fce util/ASCII: add StringStartsWithCaseASCII() 2018-08-02 10:42:28 +02:00
Max Kellermann
22192adbc8 lib/icu/Init: add class ScopeIcuInit 2018-08-02 10:17:31 +02:00
Max Kellermann
b8f3de693f lib/icu/Init: add "noexcept" 2018-08-02 10:17:04 +02:00
Max Kellermann
68c023cdd8 config/Path: simplify expression 2018-08-02 09:43:48 +02:00
Max Kellermann
b18b0bf328 config/Path: remove unnecessary IsNull() check
`AllocatedPath::FromUTF8Throw()` will never return a nulled instance.
2018-08-02 09:43:17 +02:00
Max Kellermann
2a2c5d50ff unix/PidFile: add "noexcept" 2018-08-01 20:27:56 +02:00
Max Kellermann
dfda0faac7 unix/{Daemon,PidFile}: throw exception on error
Don't use the bad `FatalError` library.
2018-08-01 20:20:29 +02:00
Max Kellermann
95acc4be07 Main: add "noexcept" 2018-08-01 20:16:40 +02:00
Max Kellermann
330a4cf573 Main: remove exception handler from mpd_main_after_fork()
Let MainOrThrow() forward it to mpd_main().
2018-08-01 20:15:54 +02:00
Max Kellermann
6ffbb151a0 Main: move log_deinit() call to mpd_main()
Deinitialize the logging library after the last exception handler,
because that one could still need it.

Use `AtScopeExit()` to ensure it's always called, even if an exception
was thrown.
2018-08-01 20:14:31 +02:00
Max Kellermann
271e49db5d Main: move code to MainOrThrow(), leaving exception handler in mpd_main() 2018-08-01 20:13:27 +02:00
Max Kellermann
8d2101ccb4 Main: move libdbus cleanup to class ODBus::ScopeInit 2018-08-01 19:24:50 +02:00
Max Kellermann
7aa8497546 SongFilter: implement the AND operator 2018-07-30 10:19:31 +02:00
Max Kellermann
7a8d5070f5 Songfilter: move code to ExpectWord() 2018-07-30 10:18:42 +02:00
Max Kellermann
8707ae6fd4 Songfilter: allow redundant parantheses 2018-07-30 10:00:44 +02:00
Max Kellermann
8786b61636 SongFilter: make ParseExpression() static 2018-07-30 09:57:04 +02:00
Max Kellermann
1b5faf5cbf SongFilter: move code from SongFilter to AndSongFilter 2018-07-29 18:39:47 +02:00
Yue Wang
1e88e71b9a
[OSXOutputPlugin] Fix a bug that the stream sample rate is missing
the code here tried to guard DSD features behind ENABLE_DSD. However, the sample rate setting should be shared between two scenarios. 

40a1ebee29 (diff-ce7ecec9ea9ca3df90d9c290cb3ef9d4R795)


The code runs fine if the dac supports the sample rate, as Mac OS  will use the device rate if stream rate is 0. 
However, when DAC is uncapable of processing the sample rate, a wrong rate (device rate) will be used for the stream rate.
2018-07-28 00:06:56 -07:00
Max Kellermann
e16fd4a09b input/qobuz: initialize the libgcrypt library 2018-07-26 18:26:46 +02:00
Max Kellermann
7db7568dcf lib/gcrypt/MD5: move code to util/HexFormat.cxx 2018-07-26 17:46:56 +02:00
Max Kellermann
409d3c7136 lib/gcrypt/MD5: return a StringBuffer 2018-07-26 17:45:45 +02:00
Max Kellermann
7f81375861 lib/gcrypt/MD5: move code to Hash.hxx 2018-07-26 12:14:31 +02:00
Max Kellermann
0de39a431b lib/gcrypt/MD5: relicense to BSD-2 2018-07-26 12:14:00 +02:00
Max Kellermann
1726278ccc SongFilter: make several macros internal 2018-07-25 11:32:41 +02:00
Max Kellermann
8661a51aba SongFilter: make locate_parse_type() static 2018-07-25 11:30:56 +02:00
Max Kellermann
42ec67168a command/Database: don't use locate_parse_type() 2018-07-25 11:29:14 +02:00
Max Kellermann
91af2ebc2a command/Database: move code to handle_list_file() 2018-07-25 11:27:12 +02:00
Max Kellermann
f7fb8a33d7 db/Print: pass TagType to PrintUniqueTags() 2018-07-25 11:21:47 +02:00
Max Kellermann
0505cb8f7e db/Print: move code to PrintSongUris() 2018-07-25 11:18:45 +02:00
Max Kellermann
2cfccc1c34 SongFilter: make Item an interface
Prepare to allow more complex expressions.
2018-07-25 11:04:41 +02:00
Max Kellermann
438366effc SongFilter: move code to class StringFilter 2018-07-25 11:04:41 +02:00
Max Kellermann
29d5ad667c SongFilter: allow dash in tag name
Required for "modified-since".
2018-07-25 11:04:41 +02:00
Max Kellermann
235ddc0990 util/TimeISO8601: new utility library 2018-07-25 08:43:06 +02:00
Max Kellermann
517f5b1999 util/TimeConvert: new utility library 2018-07-25 08:34:52 +02:00
Max Kellermann
a8ac8b2563 TimePrint: remove unused time_t overload 2018-07-25 08:33:59 +02:00
Max Kellermann
78a65cf281 SongFilter: remove DetachedSong overloads
All DetachedSong instances should be converted to LightSong first,
which is a very cheap operation.
2018-07-25 07:43:05 +02:00
Max Kellermann
96017f58a5 decoder/ffmpeg: skip the av_probe_input_format() call
This is kind of a revert of commit
b2e3c0757b, which is not any longer
necessary since commit 0dd4b52b63
removed the last call to `av_open_input_stream()`.
2018-07-25 00:07:16 +02:00
Max Kellermann
c8e6f50d55 input/buffered: fix bogus offset after Seek()
Instead of copying the offset from our `input`, copy the requested
offset to our `offset` attribute.

By the time Seek() finishes, our input's offset may have advanced
already, having read some more data, thus giving us a bogus offset.

This fixes spurious decoder failues (closes #320).
2018-07-25 00:01:43 +02:00
Max Kellermann
9263d6d07d SongFilter: implement operator "!="
Closes #89
2018-07-24 23:24:42 +02:00
Max Kellermann
5271e81ebe SongFilter: new extensible filter syntax
Will allow more complex fitler expression, such as negation (#89).
2018-07-24 23:05:36 +02:00
Max Kellermann
efb2051b30 SongFilter: add ToExpression() 2018-07-24 23:04:44 +02:00
Max Kellermann
a2b24cb5a2 SongFilter: pass std::string&& to Item constructor 2018-07-24 23:03:35 +02:00
Max Kellermann
a54f9ede2e SongFilter: use std::list::emplace_back() 2018-07-24 23:03:33 +02:00
Max Kellermann
7f1b134137 SongFilter: basic support for negated items
Not yet wired to the protocol.
2018-07-21 11:20:50 +02:00
Max Kellermann
b34fd905c8 SongFilter: simplify Parse() loop
Consume the ConstBuffer instead of iterating it.  This will allow
adding more complex parsers.
2018-07-21 07:36:42 +02:00
Max Kellermann
821f77325c SongFilter: Parse() throws exception on error 2018-07-21 07:24:42 +02:00
Max Kellermann
bd8cf7c53d SongFilter: make internal Parse() overload private 2018-07-21 07:21:27 +02:00
Max Kellermann
88c19c21ee SongFilter: remove obsolete prototype 2018-07-21 07:15:43 +02:00
Max Kellermann
40ec819330 SongFilter: make a few methods private 2018-07-21 07:15:09 +02:00
Max Kellermann
34dbd03be1 SongFilter: convert "tag" to "unsigned"
Having this as one-byte integer actually adds overhead and saves no
memory due to padding.
2018-07-21 07:04:01 +02:00
Max Kellermann
b98263e86f fs/io/OutputStream: relicense under BSD-2 2018-07-19 14:02:37 +02:00
Max Kellermann
f30265a9ee config/File: support wildcards in "include" 2018-07-18 17:28:30 +02:00
Max Kellermann
fcbcec6856 fs/List: new library exporting ListWildcard() 2018-07-18 17:18:38 +02:00
Max Kellermann
b778fb38a9 util/StringAPI: add raw strcmp() wrapper 2018-07-18 17:18:34 +02:00
Max Kellermann
32290d5eb8 fs/Path: add method ToUTF8Throw() 2018-07-18 16:51:29 +02:00