Commit Graph

15095 Commits

Author SHA1 Message Date
Max Kellermann
91437d9e63 util/IntrusiveList: add insert_after() 2023-07-21 19:41:40 +02:00
Max Kellermann
f1b497fb0c util/IntrusiveList: document insert() 2023-07-21 19:41:36 +02:00
Max Kellermann
cc9d061e51 util/IntrusiveList: pop_front() and pop_back() return reference 2023-07-21 19:41:13 +02:00
Max Kellermann
62ee9a4d60 util/DynamicFifoBuffer: use T instead of std::byte
Mistake added by commit b528b467649754
2023-07-21 19:40:38 +02:00
jcorporation
082f72dd20 Add support of TAG_MUSICBRAINZ_RELEASEGROUPID
Closes #1767
2023-07-12 19:43:37 +02:00
Max Kellermann
9c19368fc7 Merge branch 'v0.23.x' 2023-06-02 14:36:02 +02:00
Shen-Ta Hsieh
38f1237d49 output/wasapi: cast to const char * for fmt 10 compatible 2023-06-02 14:29:43 +02:00
Shen-Ta Hsieh
fef6b9df80 flac: Try InputStream interface if flac failed to read through a wchar_t path 2023-06-02 14:28:22 +02:00
Shen-Ta Hsieh
70879f0abc thread/WindowsFuture: remove wrong address_of operator 2023-06-02 14:27:24 +02:00
Shen-Ta Hsieh
bcb393628e win32/ComWorker: rename variable name to prevent ambiguous 2023-06-02 14:22:11 +02:00
Max Kellermann
18d3a5c12b decoder/flac: add noexcept and inline 2023-06-02 14:22:11 +02:00
Simon Arlott
6ee3d0102b decoder/mad: Fix decode of LAME peak value
6d91b5c7b2 ("fix double promotions") changed
how LAME peak values are decoded, producing large incorrect values that
cause some MP3 files to play silently.

Restore the original decode from MAD fixed-point format to double and
document what it's doing.

Fixes #1823
2023-06-02 14:15:48 +02:00
Max Kellermann
45f81cde6d Merge branch 'null-always-off' of https://github.com/nomis/MPD 2023-05-25 10:42:58 +02:00
John Regan
a482c798ad pcm: declare IsSilentSample as const
GNU libstdc++ declares cmath functions as constexpr, but libc++ does
not. The C++ standards state the standard library functions should not
be declared constexpr unless explicitly required.
2023-05-24 15:05:19 -04:00
Max Kellermann
d9b1f6223e io/uring/Close: wrapper for io_uring_prep_close() 2023-05-22 21:59:44 +02:00
Max Kellermann
26577d1301 io/uring/Queue: make Submit() virtual, Push() not
This allows submitting io_uring calls without an `Operation` instance
(fire & forget).  We'll do that for close().
2023-05-22 21:57:18 +02:00
Max Kellermann
6496c1b806 util/ScopeExit: convert the function from base class to member
This allows using `final` callables.
2023-05-22 21:20:49 +02:00
Max Kellermann
7bb251dad8 db/update/Walk: use marker to remove deleted items
This eliminates all `Storage::GetInfo()` calls from
`UpdateWalk::PurgeDeletedFromDirectory()` and instead uses a "marker"
field to mark items that have been visited; later, all unmarked items
can be deleted.

This eliminates a lot of redundant I/O which is noticable with the
`curl` storage plugin (i.e. WebDAV).
2023-05-22 20:13:01 +02:00
Max Kellermann
9027e5c5bb release v0.23.13
-----BEGIN PGP SIGNATURE-----
 
 iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmRrqn4NHG1heEBibGFy
 Zy5kZQAKCRAjbopYxttFErXiD/9QIaeO5d+U7BJK1yGkQgu5vHo4Pm34ewP8LTxs
 K2MYxQQ2jZc7PXqi5Z04wmUw8ymq1BVA2D0ytMdl1Ejcbrste7UrP+1TuD8L9JBj
 WCE+4otNVYDpx1PB32BN+gxCmJqiFtAQS+eMIz/SXdEXZ9sJvIgYRRkSiSFd0WHM
 dT3OeeZ0V8cANbXpgI+RLghRGkVdpZJo4uXh3c0OHog1fjEBWPw6+7tH/mkotM0n
 /hQjI5j14wnzZuIpkDR1kuzvGYmxJKG6LkuUqcm1WexNFbxMqDSbAlXeCmzJn7eK
 NQvtROOGNjQ84thxRPLlDlYa6vbxoTqdYgZsVHzsQZWejhqw8zsPsF+Ea0A4tkLd
 UKDQFTphZMVqx74+1u7IjQyW7x+k02iXWLwH2IheEl+BJhvEB7zEflN9TR81jek4
 RrGx7jcTArdpt7okAe2ONkHvTYtIpaK5E2voza8K4TGOMzpkVlOkyvJ+rpn8CDRf
 w0faVvmCQdSrgHKfwUUY8Z47a7d+kkKpFLlvvzNoDV8drQXfgIj5t9HOLATSVVux
 l2pbgauXFsKyd4IsByXj+m8cBSvmy2C4eLJCsmguiZEvcobdJtzwOr4KuwQDjBsC
 8HW0BD0t9S1dSL59vJdMG+CfK/QU5rmAIkxdydD42uo9UmSS78xw1uQgi9oDaPa8
 XNCGdQ==
 =nOGh
 -----END PGP SIGNATURE-----

Merge tag 'v0.23.13'

release v0.23.13
2023-05-22 19:52:08 +02:00
Max Kellermann
d5bf128cee storage/curl: throw HttpStatusError 2023-05-22 19:29:46 +02:00
Max Kellermann
5cd86e272f input/curl: disable CURLOPT_FAILONERROR
Let OnHeaders() check the status.

The status checking code was added by commit 4f021cbced in 2011,
but in 2008, commit a8e81326d0 enabled `CURLOPT_FAILONERROR`, which
means the status checking code never had any effect.

This allows `LoadExcludeListOrLog()` to hide boring "404 Not Found"
log messages via `IsFileNotFound()`.
2023-05-22 19:03:12 +02:00
Max Kellermann
740cbe9e02 event/Loop: remove failing assert()
The `assert(!quit)` can fail if the `EventThread` gets stopped before
it enters `EventLoop::Run()`. There is a similar problem with `alive`,
which gets reset by `EventThread::Stop()`.

If that happens, then `EventLoop::Run()` should return immediately
without handling any events.
2023-05-22 18:14:25 +02:00
Max Kellermann
068cd559e1 db/update/Walk: clear Song::in_playlist
Without clearing all `in_playlist` flags, the songs will never be
revealed again if they were hidden once by a CUE sheet, not even after
the CUE sheet gets deleted or modified.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1784
2023-05-22 15:41:58 +02:00
Max Kellermann
dc127f39a7 util/ScopeExit: use std::declval()
Fixes GCC 10 error:

 error: cannot call member function `Foo` without object
2023-05-22 15:01:25 +02:00
Max Kellermann
7a99a7008c util/ScopeExit: use std::exchange() 2023-05-22 14:44:45 +02:00
Max Kellermann
70b451db7b util/ScopeExit: add noexcept 2023-05-22 14:44:17 +02:00
Max Kellermann
2ab03a0914 util/ScopeExit: allow the function to throw
Fixes crash inside AtScopeExit() in the WASAPI output plugin.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1759
2023-05-22 14:43:23 +02:00
Max Kellermann
2fa8c7d2db lib/crypto/meson.build: link with ffmpeg_util_dep
This adds `MakeFfmpegError()` to the executable and fixes a linker
failure when `libavutil` is available, but `libavformat` and
`libavcodec` are not.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1786
2023-05-22 14:05:13 +02:00
Max Kellermann
7c759ba8b0 lib/ffmpeg/meson.build: move libavutil helpers into separate library 2023-05-22 14:03:47 +02:00
Max Kellermann
6d9b452fde lib/ffmpeg/LogError: remove unused library 2023-05-22 13:48:33 +02:00
Max Kellermann
8ba68fdb47 io/OutputStream: use std::span 2023-05-21 21:35:11 +02:00
Max Kellermann
e72d27566c io/BufferedOutputStream: use std::string_view 2023-05-21 21:31:32 +02:00
Max Kellermann
01c02a1ef8 util/StaticFifoBuffer: add method MoveFrom() 2023-05-21 21:26:20 +02:00
Max Kellermann
e1e37cfe3c TagPrint, command/File: two more libfmt 10 workarounds
libfmt 10 doesn't know how to format a StringView, and doesn't cast to
std::string_view anymore.  The StringView class has been removed from
MPD 0.24 completely, and this is a stable-branch-only workaround.

Closes https://github.com/MusicPlayerDaemon/MPD/pull/1814
2023-05-21 21:03:20 +02:00
latex
381934985a reorder ffmpeg to be lower priority than gme
This should prevent ffmpeg from taking priority over the gme plugin.
The ffmpeg plugin is more buggy than gme.
One of the prominent bugs of preferring ffmpeg over gme is that ffmpeg
cannot seek SAP files while gme can. This should prevent that from
happening.
2023-05-21 20:58:53 +02:00
Max Kellermann
a8042885ac TimePrint: minor fixup for libfmt 10
libfmt version 10 has difficulties formatting a `StringBuffer`, and we
need to help it by explicitly invoking the `c_str()` method.
2023-05-21 20:58:19 +02:00
Max Kellermann
a71e68db50 command/player, SongPrint: use AudioFormatFormatter()
libfmt version 10 apparently doesn't know how to format a
`StringBuffer`, failing the MPD build.  Since we have a formatter
specialization for `AudioFormat`, let's use that - it's better and
easier to use.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1807
2023-05-21 20:57:59 +02:00
Max Kellermann
1417578b3d db/update/Archive: validate directory names
Fixes assertion failure if the ZIP file contains a path that begins
with a slash.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1793
2023-05-21 20:57:38 +02:00
Max Kellermann
96befa138c db/update/Archive: ignore filenames with newline character 2023-05-21 20:56:38 +02:00
Max Kellermann
16a99804de db/update/Archive: move check to IsAcceptableFilename() 2023-05-21 20:56:32 +02:00
Max Kellermann
75a39ed279 db/update/Archive: remove useless log message 2023-05-21 20:55:59 +02:00
datasone
d4f3dd49b4 db/SimpleDatabasePlugin: store in_playlist value of songs into database
Fixes hide_playlist_targets not working after server restart

Currently, `hide_playlists_targets` works by skipping songs with
`in_playlist` value set to true in
[`Directory::Walk`](a57bcd0238/src/db/plugins/simple/Directory.cxx (L237)). But
`in_playlist` is not stored and only updated in
[`UpdateWalk::PurgeDanglingFromPlaylists`](a57bcd0238/src/db/update/Playlist.cxx (L139)),
which will only be executed while updating DB.

This causes the problem that playlist target songs are correctly
hidden after database update, but will remain visible after mpd server
restarted. This pr solves the problem by storing `in_playlist` value
of songs into the `SimpleDatabase` file.
2023-05-21 20:51:47 +02:00
Max Kellermann
0206a46d39 decoder/gme: require GME 0.6 or later
This allows dropping a few compile-time version checks and we can use
pkg-config to detect the library.
2023-05-21 20:50:03 +02:00
Max Kellermann
9475ef2202 fs/Charset: assign fs_charset
This got lost 8 years ago in commit 87c88fcb27

D'oh!
2023-05-21 20:50:03 +02:00
Max Kellermann
edae00e719 fs/Charset: remove useless log message 2023-05-21 20:50:03 +02:00
Max Kellermann
fb695bc55f command/{file,storage}: remove stray "#pragma GCC diagnostic pop" 2023-05-21 20:50:03 +02:00
Max Kellermann
a0f6932ebe unix/SignalHandlers: shut down if parent process dies in --no-daemon mode
By default, if the parent of a process dies, the process gets SIGHUP
and is supposed to shut down.  This however doesn't work for MPD,
because MPD redefines SIGHUP with a different meaning (like most
daemons do).

To work around this, we configure the kernel to send SIGTERM instead
of SIGHUP.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1706
2023-05-21 20:40:47 +02:00
Max Kellermann
6e700dab69 CommandLine: hard-code daemon=false if ENABLE_DAEMON is not set 2023-05-21 20:40:39 +02:00
Naïm Favier
949d72e368 output/PipeWire: lock thread loop in SendTag 2023-05-21 20:40:29 +02:00
Max Kellermann
541468f0ca input/async: check for errors in Seek()
Fixes a busy loop in BufferingInputStream::RunThreadLocked() because
the method never learns that seeking is ignored, even though the HTTP
stream is already broken and can never be read; nobody cared to check
for errors.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1727
2023-05-21 20:34:19 +02:00
Max Kellermann
d2797effa3 command/database: add missing include for UINT_MAX 2023-05-21 20:33:34 +02:00
Max Kellermann
1170fb1e1e output/osx: change type to std::size_t to fix -Wc++11-narrowing 2023-05-21 20:33:03 +02:00
Max Kellermann
65b9b3195c lib/dbus/AppendIter: add missing include 2023-05-21 20:33:03 +02:00
Max Kellermann
c69b9780df Merge branch 'reorder-decoder-plugins' of https://github.com/fuck-shithub/MPD 2023-05-15 21:03:35 +02:00
Max Kellermann
f869593ac8 TimePrint: minor fixup for libfmt 10
libfmt version 10 has difficulties formatting a `StringBuffer`, and we
need to help it by explicitly invoking the `c_str()` method.
2023-05-15 21:00:24 +02:00
Max Kellermann
181b96dd2d command/player, SongPrint: use AudioFormatFormatter()
libfmt version 10 apparently doesn't know how to format a
`StringBuffer`, failing the MPD build.  Since we have a formatter
specialization for `AudioFormat`, let's use that - it's better and
easier to use.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1807
2023-05-15 20:59:05 +02:00
latex
4e9f463bb6 reorder ffmpeg to be lower priority than gme
This should prevent ffmpeg from taking priority over the gme plugin.
The ffmpeg plugin is more buggy than gme.
One of the prominent bugs of preferring ffmpeg over gme is that ffmpeg
cannot seek SAP files while gme can. This should prevent that from
happening.
2023-05-12 00:28:56 +02:00
skidoo23
4345a656aa
output/httpd: fix libfmt icy-metaint replacement field
Since using libfmt (commit: dfc5b49) ICY MetaData was broken. Eg MP3 streams encoded with LAME were affected resulting in missing stream titles on VLC or strange noises on Sonos hardware. This commit fixes the icy-metaint field.
2023-05-04 18:15:13 +02:00
Max Kellermann
31dc8b73b7 db/update/Archive: validate directory names
Fixes assertion failure if the ZIP file contains a path that begins
with a slash.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1793
2023-04-30 08:46:52 +02:00
Max Kellermann
e84db4f411 db/update/Archive: ignore filenames with newline character 2023-04-30 08:45:34 +02:00
Max Kellermann
395bf34a91 db/update/Archive: move check to IsAcceptableFilename() 2023-04-30 08:42:16 +02:00
Max Kellermann
dcc7628b67 db/update/Archive: remove useless log message 2023-04-30 08:39:34 +02:00
Max Kellermann
f2a4ae15aa db/update: pass filenames as std::string_view 2023-04-30 08:28:43 +02:00
Max Kellermann
434bcb08ee db/simple/Song: pass std::string_view to Load{File,FromArchive}() 2023-04-30 08:21:20 +02:00
Max Kellermann
99885c4cbc util/IntrusiveHashSet: add method remove_and_dispose() 2023-04-22 08:40:53 +02:00
Simon Arlott
ab196f7afc
output/Control: Support always_off outputs that are never used for playback
Add an `always_off` option to outputs that causes them to never start
playback even if they're enabled.

This allows placeholder `null` outputs to be defined for the purpose
of having an external client react to the enabled state without the
side effects of real outputs. Like an external mixer, the client can
perform some action when an output is enabled.

Normally `null` outputs can be used for playback so it's possible for
MPD to continue playback silently if a problem occurs with all the real
outputs (or there are none enabled).
2023-04-21 20:54:37 +01:00
Max Kellermann
90c3fe22f5 decoder/openmpt: check libopenmpt version at compile time, not at configure time 2023-04-21 17:29:20 +02:00
Simon Arlott
ad8117e7c8 decoder/openmpt: Fix build error with libopenmpt < 0.5
openmpt_at_end is a string, not an integer

Fixes build error:

 src/decoder/plugins/OpenmptDecoderPlugin.cxx: In function 'void mod_decode(DecoderClient&, InputStream&)':
 src/decoder/plugins/OpenmptDecoderPlugin.cxx:85:44: error: invalid cast from type 'std::string_view' {aka 'std::basic_string_view<char>'} to type 'unsigned in '
   85 |  mod.ctl_set("play.at_end", std::to_string((unsigned)openmpt_at_end));
      |                                            ^~~~~~~~~~~~~~~~~~~~~~~~
2023-04-21 17:24:42 +02:00
datasone
838b19c2b5 db/SimpleDatabasePlugin: store in_playlist value of songs into database
Fixes hide_playlist_targets not working after server restart

Currently, `hide_playlists_targets` works by skipping songs with
`in_playlist` value set to true in
[`Directory::Walk`](a57bcd0238/src/db/plugins/simple/Directory.cxx (L237)). But
`in_playlist` is not stored and only updated in
[`UpdateWalk::PurgeDanglingFromPlaylists`](a57bcd0238/src/db/update/Playlist.cxx (L139)),
which will only be executed while updating DB.

This causes the problem that playlist target songs are correctly
hidden after database update, but will remain visible after mpd server
restarted. This pr solves the problem by storing `in_playlist` value
of songs into the `SimpleDatabase` file.
2023-04-12 05:18:21 +02:00
Max Kellermann
a57bcd0238 thread/Mutex: add RecursiveMutex 2023-04-06 21:32:18 +02:00
Max Kellermann
76497bd5f7 util/IntrusiveSortedList, event/TimerList: include cleanup 2023-04-06 10:24:53 +02:00
Max Kellermann
53ec02d5e9 net/SocketDescriptor: decouple from FileDescriptor on Windows
On Windows, a socket is not a file descriptor; it is a different beast
(and anyway, Windows doesn't have file descriptors).
2023-03-29 10:12:50 +02:00
Max Kellermann
7a5f485cf8 event/ServerSocket: use class UniqueSocketDescriptor in SupportsIPv6() 2023-03-29 10:06:48 +02:00
Max Kellermann
6f7c7a2149 event/EpollBackend: add missing header guard 2023-03-21 11:00:41 +01:00
Max Kellermann
a20d467bf1 event/Loop: move quit_injected check to inside #ifdef HAVE_THREADED_EVENT_LOOP 2023-03-20 15:02:32 +01:00
Max Kellermann
102dc123e8 LogBackend: log to stderr (regression fix) 2023-03-14 20:25:28 +01:00
Max Kellermann
b4d0b23369 LogBackend: use fmt::print() 2023-03-14 20:24:14 +01:00
Max Kellermann
119a949bb5 ls: use fmt::print() 2023-03-14 20:20:46 +01:00
Max Kellermann
f5b22bf2c3 input/Offset: remove unused macro PRIoffset 2023-03-14 20:20:10 +01:00
Max Kellermann
5b7a89d714 mixer/plugins/volume_mapping: convert to C++ 2023-03-14 20:18:41 +01:00
Max Kellermann
5b41857a22 mixer/plugins/volume_mapping: add SPDX header 2023-03-14 20:08:43 +01:00
Max Kellermann
688d9ff114 util/UriExtract: add uri_get_path_query_fragment()
Rename uri_get_path() to uri_get_path_query_fragment() and add a new
uri_get_path() function.
2023-03-14 20:03:17 +01:00
Max Kellermann
bc51bc2933 pcm/Normalizer: add method Reset() 2023-03-13 13:54:12 +01:00
Max Kellermann
f547a56b1d pcm/Normalizer: use Traits::long_type 2023-03-13 13:51:27 +01:00
Max Kellermann
1f6637d49a pcm/Normalizer: add constant SHIFT 2023-03-13 13:49:25 +01:00
Max Kellermann
de155a740c pcm/Normalizer: convert peakPos to std::size_t 2023-03-13 13:47:04 +01:00
Max Kellermann
f323fc48d7 pcm/Normalizer: eliminate the local variable slot 2023-03-13 13:45:28 +01:00
Max Kellermann
2ea634c302 pcm/Normalizer: replace the gain array with a simple prev_gain variable 2023-03-13 13:44:45 +01:00
Max Kellermann
c0d38d941a pcm/Normalizer: split the normalization loop
Performance improvement because the ramp code is now moved out of the
hot code path, allowing the compiler to vectorize.
2023-03-13 13:38:19 +01:00
Max Kellermann
d7f2d90fd3 pcm/Normalizer: no in-place editing, separate src/dest parameters
This eliminates the memcpy() call from NormalizeFilter::FilterPCM().
2023-03-13 13:37:49 +01:00
Max Kellermann
8ea9b89321 pcm/Normalizer: use std::span 2023-03-13 13:16:44 +01:00
Max Kellermann
738254b2fc pcm/Normalizer: use SampleTraits 2023-03-13 12:42:37 +01:00
Max Kellermann
fcc9a98cad pcm/Normalizer: use PcmClamp() 2023-03-13 12:42:36 +01:00
Max Kellermann
dcf0a3e475 pcm/Normalizer: remove clipped (only written to, never read) 2023-03-13 12:42:34 +01:00
Max Kellermann
e990d6eecc pcm/Normalizer: make variables more local 2023-03-13 12:42:31 +01:00
Max Kellermann
941636b87b pcm/Normalizer: eliminate local variable ap 2023-03-13 12:31:16 +01:00
Max Kellermann
1298a82f4f pcm/Normalizer: use std::size_t 2023-03-13 12:31:16 +01:00
Max Kellermann
e6fedcbd10 pcm/Normalizer: expose the class, convert functions to methods 2023-03-13 12:25:09 +01:00
Max Kellermann
48c8c7daf5 pcm/Normalizer: move code to ctor/dtor 2023-03-13 12:25:09 +01:00
Max Kellermann
6e5d9d4490 pcm/Normalizer: hard-code the preferences 2023-03-13 12:25:09 +01:00
Max Kellermann
d2f2dde2e1 pcm/Normalizer: eliminate struct CompressorConfig 2023-03-13 12:25:09 +01:00
Max Kellermann
d0dd035075 pcm/Normalizer: use new/delete instead of malloc()/free() 2023-03-13 12:25:09 +01:00
Max Kellermann
7702643e1b pcm/Normalizer: remove Compressor_setHistory(), no resize possible
This feature was never used.
2023-03-13 12:25:09 +01:00
Max Kellermann
984c9c317a pcm/Normalizer: add noexcept 2023-03-13 12:25:09 +01:00
Max Kellermann
2d7068a09d pcm/AudioCompress: convert to C++ 2023-03-13 12:25:01 +01:00
Max Kellermann
d712c3b408 pcm/AudioCompress: fold config.h into compress.c 2023-03-13 11:55:44 +01:00
Max Kellermann
0a623122dc pcm/AudioCompress: add SPDX header 2023-03-13 11:40:46 +01:00
Max Kellermann
68c36c0d3f decoder/dsf: use PackedLE64 instead of DsdUint64 2023-03-12 20:27:05 +01:00
Max Kellermann
f3ebaf8bdd util/ByteOrder: add class PackedLE64 2023-03-12 20:25:49 +01:00
Max Kellermann
c472046cbb decoder/dsdiff: use PackedBE64 instead of DffDsdUint64 2023-03-12 20:22:50 +01:00
Max Kellermann
02296adbba io/FileDescriptor: include cleanup 2023-03-12 20:18:13 +01:00
Max Kellermann
a375f0f160 io/BufferedReader: add method ReadFullT() 2023-03-12 20:15:41 +01:00
Max Kellermann
fb961e89da util/StringCompare: add constexpr 2023-03-12 20:14:23 +01:00
Max Kellermann
3e2bff296f event/SocketEvent: add method GetReadyFlags() 2023-03-12 20:12:15 +01:00
Max Kellermann
cf01db4d08 event/Chrono, ...: relicense to BSD-2 2023-03-12 20:02:54 +01:00
Max Kellermann
08dbb4a69a event/BackendEvents: relicense to BSD-2
These headers contain only trivial integer constants and these are
probably not even copyrightable.
2023-03-12 19:53:03 +01:00
Max Kellermann
b5eff3cecd decoder/plugin: kludge for Android NDK r25c 2023-03-12 19:53:03 +01:00
Max Kellermann
89d66b6100 decoder/ffmpeg: check for DST codec
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1756
2023-03-12 19:39:49 +01:00
Max Kellermann
c53ee41855 decoder/ffmpeg: check for DSD codec
DSD uses a generic demuxer, therefore it does not appear in the
demuxer list.
2023-03-12 19:37:09 +01:00
Max Kellermann
3c798b4907 decoder/ffmpeg: query supported demuxers at runtime 2023-03-12 19:37:09 +01:00
Max Kellermann
78a9c17bc6 decoder/plugin: add "suffixes" function
For decoder plugins like FFmpeg where the supported codecs cannot be
determined at compile time.
2023-03-12 09:17:38 +01:00
Max Kellermann
8b77da545d *: use transparent comparison for std::{map,set} with std::string keys
This avoids many std::string temporaries for lookups.
2023-03-12 09:12:02 +01:00
Max Kellermann
27d3dcf14c CommandLine: use libfmt 2023-03-12 09:02:21 +01:00
Max Kellermann
5388759bd5 db/proxy: require libmpdclient 2.15 or later 2023-03-10 13:45:37 +01:00
Max Kellermann
e927655774 db/proxy: require MPD 0.21 or later 2023-03-10 13:43:49 +01:00
Max Kellermann
27ba8c181f pcm/SoxrResampler: require libsoxr 0.1.2 or later 2023-03-10 12:49:57 +01:00
Max Kellermann
1410bcbce9 lib/alsa: require alsa-lib 1.1 or later 2023-03-10 12:49:40 +01:00
Max Kellermann
43b26ee612 {de,en}coder/flac: remove obsolete FLAC_API_VERSION_CURRENT checks
We check the libFLAC version via pkg-config at configure time, no need
to do it again.
2023-03-10 12:43:19 +01:00
Max Kellermann
7e2538e07a decoder/sidplay: require libsidplayfp (drop support for the original sidplay)
The original sidplay project has been mostly unmaintained for nearly
12 years, and the most recent release was in 2016, while the
libsidplayfp project has been actively maintained all the time.
2023-03-09 18:27:05 +01:00
Max Kellermann
851fcf4823 decoder/gme: require GME 0.6 or later
This allows dropping a few compile-time version checks and we can use
pkg-config to detect the library.
2023-03-09 18:27:05 +01:00
Max Kellermann
63b9fb3d2b event/meson.build: add missing dependency on libio.a 2023-03-09 18:27:05 +01:00
Max Kellermann
a79454f6a6 io/FileDescriptor: fold CreateSignalFD() into the SignalFD constructor 2023-03-09 18:04:58 +01:00
Max Kellermann
b5fbfe9aa6 io/FileDescriptor: fold CreateEventFD() into the EventFD constructor 2023-03-09 17:59:56 +01:00
Max Kellermann
598894211f decoder/ffmpeg: require FFmpeg 4.0 or later 2023-03-08 20:32:35 +01:00
Max Kellermann
dbfd0a833d io/meson.build: move sources to libio_fs.a
Only that one has a dependency on libfs.a (for class AllocatedPath
etc.).
2023-03-07 12:48:47 +01:00
Max Kellermann
d45994268f system/PeriodClock: move to time/ 2023-03-07 12:08:44 +01:00
Max Kellermann
815b248990 */Registry: use constinit 2023-03-07 12:04:16 +01:00
Max Kellermann
333b36f090 output/Registry: add noexcept 2023-03-07 11:57:55 +01:00
Max Kellermann
b18ef61361 output/Registry: rename function 2023-03-07 11:57:36 +01:00
Max Kellermann
86ae45108c output/Finish: fold into Filtered.cxx 2023-03-07 11:54:46 +01:00
Max Kellermann
5ef29c424d output/meson.build: add liboutput_registry.a 2023-03-07 11:53:16 +01:00
Max Kellermann
c8dfb57408 output/meson.build: move OutputPlugin.cxx to liboutput_api.a 2023-03-07 11:52:32 +01:00
Max Kellermann
b773ef3f0f win32/HResult: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
c8f54b3509 lib/pcre/UniqueRegex: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
00d5e6e9c7 lib/avahi/Publisher: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
1132a1c9a7 protocol/ArgParser: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
149d1a2f47 output/shout: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
17f2c0ae88 output/httpd: use libfmt 2023-03-06 20:10:06 +01:00
Max Kellermann
ce0b4d5c19 system/Error: remove unused function FormatSystemError() 2023-03-06 20:10:06 +01:00
Max Kellermann
0c102a8f2f meson.build: add missing libfmt dependencies 2023-03-06 20:10:06 +01:00
Max Kellermann
415de497d3 use more libfmt instead of sprintf() 2023-03-06 19:50:53 +01:00
Max Kellermann
02d108774c test/meson.build: add missing dependencies on libio.a 2023-03-06 19:50:52 +01:00
Max Kellermann
2c66d90626 fs/io: move to separate library
To eliminate the libio.a dependency.
2023-03-06 19:47:29 +01:00
Max Kellermann
e4cdf29951 fs/meson.build: make several dependencies internal 2023-03-06 19:44:34 +01:00
Max Kellermann
b5d224ce22 fs/{StandardDirectory,CheckFile}: move to fs/glue/
Distangle library dependencies.
2023-03-06 19:43:09 +01:00
Max Kellermann
c937a299f7 fs/Charset: assign fs_charset
This got lost 8 years ago in commit 87c88fcb27

D'oh!
2023-03-06 19:25:44 +01:00
Max Kellermann
6d4ec8b46f fs/Charset: remove useless log message 2023-03-06 19:20:22 +01:00
Max Kellermann
941f2ca60d pcm/{Traits,Dsd*}: use std::byte 2023-03-06 18:44:20 +01:00
Max Kellermann
7a1b996da9 pcm/Dsd2Pcm: use SampleTraits<SampleFormat::DSD>::SILENCE 2023-03-06 18:30:16 +01:00
Max Kellermann
302a571367 pcm/Buffer: use std::byte 2023-03-06 18:22:12 +01:00
Max Kellermann
ec195acf4f pcm/Interleave: use std::byte 2023-03-06 18:22:10 +01:00
Max Kellermann
8f41e05a39 db/upnp/ContentDirectoryService: use fmt::format_int 2023-03-06 16:45:59 +01:00
Max Kellermann
35b6d65f27 util/Compiler.h: remove unused compiler version check macros 2023-03-06 16:37:46 +01:00
Max Kellermann
e602bcf41e pcm/ReplayGainAnalyzer: remove GCC version checks, assume proper C++17 support 2023-03-06 16:37:45 +01:00
Max Kellermann
8c5ba50840 command/{file,storage}: remove stray "#pragma GCC diagnostic pop" 2023-03-06 16:37:45 +01:00
Max Kellermann
ff239fff4f util/ByteOrder: check only __GNUC__
Assume GCC/clang is recent enough.
2023-03-06 16:37:45 +01:00
Max Kellermann
abdbaf605e player/Thread, ...: assume [[fallthrough]] is supported 2023-03-06 16:29:55 +01:00
Max Kellermann
47b3577d6b util/Compiler.h: remove unused macro gcc_printf 2023-03-06 16:27:47 +01:00
Max Kellermann
2ffc7c2088 io/BufferedOutputStream: remove unused method Format() 2023-03-06 16:27:28 +01:00
Max Kellermann
1f56960c44 util/FormatString: remove unused library 2023-03-06 16:24:51 +01:00
Max Kellermann
dfc5b4972b output/httpd/IcyMetaDataServer: use libfmt 2023-03-06 16:23:43 +01:00
Max Kellermann
18c3c2118d util/Compiler.h: remove unused macros 2023-03-06 16:14:30 +01:00
Max Kellermann
42f6a0441c use [[gnu::...]] attributes 2023-03-06 16:14:15 +01:00
Max Kellermann
3b9aab0684 util/UTF8: fix indent 2023-03-06 16:12:09 +01:00
Max Kellermann
7a46c57ef3 tag/Type: require C++ 2023-03-06 15:28:44 +01:00
Max Kellermann
118b76a8f1 db/Interface, ...: forward-declare TagType 2023-03-06 15:25:30 +01:00
Max Kellermann
a302d34f6d tag/Names: convert to C++ 2023-03-06 15:16:33 +01:00
Max Kellermann
148aca23be use SPDX IDs, replacing the long copyright headers 2023-03-06 14:59:48 +01:00
Max Kellermann
c83ab0dc58 unix/SignalHandlers: shut down if parent process dies in --no-daemon mode
By default, if the parent of a process dies, the process gets SIGHUP
and is supposed to shut down.  This however doesn't work for MPD,
because MPD redefines SIGHUP with a different meaning (like most
daemons do).

To work around this, we configure the kernel to send SIGTERM instead
of SIGHUP.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1706
2023-03-06 13:00:07 +01:00
Max Kellermann
d9952b9054 CommandLine: hard-code daemon=false if ENABLE_DAEMON is not set 2023-03-06 13:00:06 +01:00
Max Kellermann
04e60d67ae command/playlist: allow range in "playlistmove"
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1689
2023-03-06 12:01:45 +01:00
Max Kellermann
9bcba41cd6 Merge branch 'pipewire-lock' of https://github.com/ncfavier/MPD
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1753
2023-03-06 10:06:03 +01:00
Naïm Favier
eabc487e59
output/PipeWire: lock thread loop in SendTag 2023-03-06 10:03:14 +01:00
Max Kellermann
5c5e522fcd output/jack: remove DLL support
This effectively reverts commit 0f02bbc2fe which was a horrible
kludge for JACK support on Windows.  Maintaining this kludge doesn't
seem worth the trouble (the JACK version was never updated), and
apparently nobody uses this.
2023-03-06 08:10:00 +01:00
Max Kellermann
f687028c87 output/PipeWire: use class StaticVector 2023-03-06 08:09:07 +01:00
Max Kellermann
d5fafa1340 output/PipeWire: map tags "Date" and "Comment" 2023-03-06 07:48:25 +01:00
Max Kellermann
e8994b43a0 output/PipeWire: convert tag mapping to array 2023-03-06 07:44:06 +01:00
Max Kellermann
6ada2c9c3f lib/curl/Request: add method GetEasy() 2023-03-05 08:50:39 +01:00
Max Kellermann
bbf190fc42 lib/curl/Multi: add noexcept 2023-03-05 08:49:20 +01:00
Max Kellermann
963ff1997d lib/curl/Easy: add methods SetXferInfoFunction(), SetMimePost() 2023-03-05 08:47:40 +01:00
Max Kellermann
5c2a576546 io/BufferedReader: add missing include 2023-03-05 08:43:41 +01:00
Max Kellermann
452400b7ef net/SocketAddress: remove __cpp_lib_span checks 2023-03-05 08:41:33 +01:00
Dave Hocker
f248fe2dec Resolve deprecation warnings by replacing use of sprintf with FmtBuffer 2023-02-06 11:56:49 +01:00
Brad Smith
e0df0b6d74 oss: Remove use of the soundcard.h header, OpenBSD no longer uses OSS 2023-02-03 18:38:20 -05:00
Sean DuBois
a41414e0e0 Decoder/FluidSynth: Allow gain to be adjusted 2023-02-01 12:00:19 -05:00
Max Kellermann
f1cea1f152 util/IntrusiveHashSet: add unlink(), is_linked() 2023-01-31 13:07:26 +01:00
Max Kellermann
02f5698868 event/Loop: remove unnecessary include
Not used since a3b32819b1
2023-01-31 13:04:25 +01:00
Max Kellermann
5b07c8fc6c util/CharUtil: add IsLowerAlphaNumericASCII() 2023-01-29 09:39:40 +01:00
Max Kellermann
b45afd1cab util/StringBuffer: add constexpr 2023-01-29 09:38:40 +01:00
Max Kellermann
8b73257a86 storage/meson.build: move MemoryDirectoryReader.cxx to storage_api.a
This library is required by the plugins, so this fixes a dependency issue.
2023-01-29 08:21:58 +01:00