Commit Graph

15667 Commits

Author SHA1 Message Date
Max Kellermann 9c2df5ce19 decoder/mpg123: implement stream_decode 2024-04-03 23:12:26 +02:00
Max Kellermann 1745c485f3 decoder/mpg123: move code to Scan() 2024-04-03 22:52:56 +02:00
Max Kellermann a53db82ae4 decoder/mpg123: move code to Decode() 2024-04-03 22:49:43 +02:00
Max Kellermann a20a83eb76 decoder/mpg123: move code to GetAudioFormat() 2024-04-03 22:37:29 +02:00
Max Kellermann 65e5a43e46 decoder/List: prefer "mpg123" over "mad"
libmad hasn't been maintained for many many years, while libmpg123 is
still maintained.

Our "mad" plugin can't do streams, but MPD will automatically fall
back to "mad" (or "ffmpeg") for streams.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1954
2024-04-03 22:25:34 +02:00
Max Kellermann b6afdf1201 util/UriUtil: disable path segment stripping
This bug introduced by commit 49ed9dae34
and activated by commit acc1bd6297
caused leading spaces to disappear from the beginning of all file
names.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1961
2024-04-03 22:00:36 +02:00
Max Kellermann 08a00ee21b config/PartitionConfig: clip the max_playlist_length setting
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1932
2024-04-03 21:43:39 +02:00
Max Kellermann 99da022775 util/IntrusiveSortedList: remove unused class 2024-04-03 21:31:08 +02:00
Max Kellermann 1ee25b4234 event/TimerList: remove option NO_BOOST
Always use the new IntrusiveTreeSet class.
2024-04-03 21:30:59 +02:00
Max Kellermann c5e607a310 event/TimerList: use IntrusiveTreeSet instead of boost::intrusive::multiset 2024-04-03 21:30:31 +02:00
Max Kellermann 5a0bad3b2f util/IntrusiveTreeSet: new class 2024-04-03 21:29:34 +02:00
Max Kellermann 6a99f20828 util/IntrusiveHashSet: add concept checks to *Operators
This requires adding another template argument and reordering the others.
2024-04-03 21:27:37 +02:00
Max Kellermann 91ca502e10 output/httpd/Client: pass std::string_view to HandleLine() 2024-04-03 21:06:11 +02:00
Max Kellermann 1e5c37ee78 util/SpanCast: add ToStringView() with non-const std::byte
Without this, we would get std::string_view<std::byte> which makes no
sense.
2024-04-03 20:58:03 +02:00
Max Kellermann ef2cdc0c6a output/httpd/Client: remove duplicate API docs 2024-04-03 20:50:31 +02:00
Max Kellermann c94c08c6b4 event/BufferedSocket: pass std::span to OnSocketInput() 2024-04-03 20:43:40 +02:00
Max Kellermann 5de8edced6 output/httpd/HttpdClient: convert metaint to a compile-time constant
After all these years, we had this as a field but there was never a
way to change the value.  So let's just hard-code it until we actually
have a reason to make it variable at runtime.
2024-04-03 20:30:53 +02:00
Max Kellermann 8906ce07de output/httpd/IcyMetaDataServer: pass metaint as std::size_t 2024-04-03 20:29:47 +02:00
Max Kellermann 9d66fc491c output/httpd/Client: fix API doc syntax 2024-04-03 20:21:18 +02:00
Max Kellermann f8a838db5d output/httpd/Client: convert variable to std::string_view
In all cases, we already know the length, and casting the C string to
std::string_view has to call strlen() again.
2024-04-03 20:20:33 +02:00
Max Kellermann e4ba736d03 input/{async,rewind}, decoder/dsdiff: use std::cmp_*() for safer integer comparisons 2024-03-15 18:45:46 +01:00
Max Kellermann cc291e8c98 Merge branch 'extend-robustness-of-cdda-playback' of https://github.com/lazypingu/MPD 2024-03-15 18:39:45 +01:00
lazypingu c00d217a53 Skip track if returned LSNs are negative which indicates track errors or if track is not an audio track 2024-03-12 20:39:51 +01:00
lazypingu 9d853897cd Use track and disc functions from libcdio-paranoia to enable playback of hidden tracks and audio tracks on multisession CDs 2024-03-12 20:37:50 +01:00
lazypingu 88c77f9c8a Add debug logging if setting speed failed 2024-03-12 20:37:50 +01:00
lazypingu 1a7278f1d3 Move cddap_speed_set below cddap_open to make sure that the drive was initialized and opened before attemting to set the speed 2024-03-12 20:36:28 +01:00
Max Kellermann 541707f9a8 lib/curl/Easy: add SetRequestBody() overload with std::span 2024-03-11 15:32:24 +01:00
Max Kellermann 00cf036d58 lib/avahi/Client: relax assertion after COLLISION/REGISTERING
Turns out that `AVAHI_CLIENT_S_COLLISION` can occur after
`AVAHI_CLIENT_S_RUNNING`, and `connected==true`.  Relaxing this fixes
a bogus assertion failure.
2024-03-11 15:32:24 +01:00
Max Kellermann 9c68f24cfc net/SocketError: fix typo
Whoops.  This function has never been used.
2024-03-11 15:32:24 +01:00
Max Kellermann 02c4512b00 util/CharUtil: add IsLowerHexDigit() 2024-03-11 15:32:24 +01:00
Max Kellermann be84b189dc util, io, net, ...: use "#pragma once" 2024-03-11 15:32:24 +01:00
Max Kellermann d685d693e8 input/rewind, archive/iso9660: use use std::cmp_*() for safe integer comparison 2024-03-11 15:09:57 +01:00
Max Kellermann b0cfdfa257 client/Idle: consume only idle flags that were subscribed to
Since the very beginning when idle subscriptions where introduced
(commit 0bad84066b), waiting for a certain idle mask would clear
all other idle flags as well.  This would cause idle events to get
lost.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1998
2024-03-11 15:07:07 +01:00
Marius Feraru 7b6909f2c0 db/update/Walk:FindAncestorLoop: uint64_t inode & device
Previously, inode numbers were truncated to 32 bits, which could lead
to problems on XFS where inodes are 64 bit; this could lead to bogus
"recursive directory found" errors during database update.

[mk: added commit description and NEWS line]

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2000
2024-03-11 13:34:27 +01:00
jcorporation 45553c5f61 This commit adds the sort and window parameter to "sticker find"
The three new compare operators "eq", "gt" and "lt" are casting the values to int.

Sort supports:
- uri: sort by uri
- value: sort by value as string
- value_int: casts value to int

Closes #1894
2024-03-07 20:52:11 +01:00
Max Kellermann 9eb26ab90c Merge branch 'countplaylist' of https://github.com/jcorporation/MPD 2024-02-15 11:28:11 +01:00
jcorporation f801f299c9 New command playlistlength
Count the number of songs and their total playtime in the playlist.
2024-02-15 11:25:34 +01:00
Max Kellermann 7f18cae2e4 Merge branch 'skidoo23-patch-1' of https://github.com/skidoo23/MPD 2024-02-13 08:06:16 +01:00
jcorporation a3794f8c3b Allow range in listplaylist and listplaylistinfo 2024-02-08 21:26:28 +01:00
skidoo23 31a88e7ccc Update Templates.cxx
Remove Spotify leftovers
2024-01-26 14:34:58 +01:00
skidoo23 4074e3a9e4 Update Option.hxx 2024-01-26 14:31:08 +01:00
Max Kellermann 7f60acdfdd util/CharUtil: add IsUpperAlphaNumericASCII() 2024-01-18 18:53:05 +01:00
Max Kellermann aef2c5dc14 lib/avahi/Service: add field visible
Now individual services can be hidden or shown at any time.
2024-01-18 18:50:06 +01:00
Max Kellermann 8d02986b0e lib/avahi/Publisher: add missing defer_register_services.Cancel() calls 2024-01-18 18:50:01 +01:00
Max Kellermann 461da92064 lib/avahi/Publisher: make the service list dynamic
This allows editing the list of services at any time instead of
passing a constant list at construction time.  To do this, Service
instances are now caller-owned and managed in an IntrusiveList instead
of Publisher-owned in a std::forward_list.
2024-01-18 18:48:27 +01:00
Max Kellermann b20b773189 zeroconf/avahi/Helper: embed the Avahi::Publisher without std::unique_ptr 2024-01-18 18:45:51 +01:00
Max Kellermann 5023432802 lib/avahi/Publisher: use DeferEvent for RegisterServices()
Prepares making the service list dyammic; the DeferEvent not only
moves the operation out of the current stack frame, but also allows
combining several AddService() calls.
2024-01-18 18:24:08 +01:00
Max Kellermann 4a14248004 lib/avahi/Publisher: move code to RegisterServices(AvahiEntryGroup) 2024-01-18 18:24:04 +01:00
Max Kellermann 1b241fc97a lib/avahi/Publisher: allow RegisterServices() to throw 2024-01-18 18:24:01 +01:00
Max Kellermann 09d1ab7abe lib/avahi/Publisher: move try/catch in GroupCallback() to the top level 2024-01-18 18:23:57 +01:00