jcorporation
25e8ce2d37
New command tagtypes available
...
Shows the list of tag types configured by the ``metadata_to_use`` setting.
2024-09-28 22:40:29 +02:00
Max Kellermann
752c6c1f03
lib/fmt/ExceptionFormatter: move the exception_ptr
2024-09-27 08:48:30 +02:00
Max Kellermann
def2221dfd
Merge branch 'searchplaylist_syntax' of https://github.com/jcorporation/MPD
2024-09-27 08:47:02 +02:00
Max Kellermann
9ff8e02e54
net/Resolver: use StringIsEqual()
2024-09-04 17:26:45 +02:00
Max Kellermann
32dd9704ce
util/DeleteDisposer: add `const` and `noexcept`
2024-09-04 17:24:42 +02:00
Max Kellermann
523519182a
util/IntrusiveHashSet: add concept checks
2024-09-04 17:24:24 +02:00
jcorporation
3f718e8924
Change the semantic of the searchplaylist protocol command
...
Old: searchplaylist {NAME} {FILTER} [{START:END}]
New: searchplaylist {NAME} {FILTER} [window {START:END}]
This is more similar to the other search commands and we can reuse search specific functions in libmpdclient.
2024-08-30 21:06:50 +02:00
jcorporation
26c4211cd4
New command stickernamestypes
...
Lists sticker names with their types and optionally filters by type
2024-08-30 20:14:55 +02:00
Max Kellermann
a3a07280e8
Merge branch 'mpd-2100-nested-and' of https://github.com/m7a/mpd
2024-08-30 12:57:20 +02:00
Max Kellermann
ed755f04e9
lib/fmt/meson.build: suppress -Warray-bounds with GCC 14
...
The bug is still present in GCC 14.
2024-08-30 12:48:41 +02:00
Max Kellermann
2809db8b40
Merge branch 'searchplaylist' of https://github.com/jcorporation/MPD
2024-08-30 12:47:24 +02:00
Max Kellermann
c866199d4c
net/SocketError: cast to socket_error_t to fix -Wsign-compare
...
Only relevant on Windows where socket_error_t is a `DWORD` (unsigned).
2024-08-30 12:45:10 +02:00
Max Kellermann
39937be2e1
Merge branch 'stickertypes' of https://github.com/jcorporation/MPD
2024-08-30 12:43:54 +02:00
Max Kellermann
d207c144d6
lib/curl/Multi: remove the Wait() overload with "int" timeout
...
Enforce type-safety.
2024-08-30 12:30:18 +02:00
Max Kellermann
435f1eb6cc
lib/curl/Multi: remove default timeout value
...
-1 is an illegal value and leads to CURLM_BAD_FUNCTION_ARGUMENT. Our
API shouldn't imply this value.
2024-08-30 12:30:15 +02:00
Max Kellermann
c7b80b0828
io/FileDescriptor: add method WriteAt()
2024-08-30 12:29:32 +02:00
Max Kellermann
59199b5620
io/FileDescriptor: pass std::span to ReadAt()
2024-08-30 12:29:27 +02:00
Max Kellermann
ebfc83dac5
io/FileDescriptor: add method SetPipeCapacity()
2024-08-30 12:28:51 +02:00
Max Kellermann
f535ccf9bf
net/UniqueSocketDescriptor: add UniqueFileDescriptor constructor
2024-08-30 12:28:19 +02:00
Max Kellermann
75eb2c257c
net/SocketError: add IsSocketError() overload with socket_error_t
2024-08-30 12:27:19 +02:00
Max Kellermann
314667259e
net/SocketDescriptor: add Duplicate() method
...
The the Duplicate() method we inherited from class FileDescriptor
returns a UniqueFileDescriptor, but we really want to return a
UniqueSocketDescriptor.
2024-08-30 12:27:13 +02:00
Max Kellermann
dbb2b29271
net/IPv6Address: add method GetPortBE()
2024-08-30 12:24:12 +02:00
Max Kellermann
7f25ede888
net/AddressInfo: add method Cast()
2024-08-30 12:23:45 +02:00
Max Kellermann
4a2fff019a
util/DisposablePointer: suppress -Wuninitialized
...
I pretend to know what I'm doing :-)
2024-08-30 12:23:45 +02:00
Linux-Fan, Ma_Sys.ma
6db4b818e6
song/Filter: Fix spacing error on nested AND
...
Previously, `AND` expressions were the only filters which used `++s` instead
of `s = StripLeft(s + 1)` making them sensitive to spacing issues. This caused
nested AND expressions (like e.g. `(((A) AND (B)) AND (C))`) to needlessly be
rejected with the following error message: `{find} Word expected` due to the
fact that the inner AND expression would leave the cursor `s` at a space rather
than the beginning of the next word (remainder was ` AND (C))` rather than
`AND (C)`).
This commit fixes this by consistently using `s = StripLeft(s + 1)` instead
of `++s` when parsing AND expressions. Although it is not strictly necessary
to resolve the AND nesting bug, the case of trivial AND expressions (consisting
basically of only superfluous parentheses) is also changed to the new handling.
This should be more robust although I expect that case to be even less common
than the direct nesting of AND expressions.
see MusicPlayerDaemon/MPD#2100
2024-08-23 21:36:53 +02:00
jcorporation
f94caa96b8
Add command stickertypes
...
Prints all available stickertypes like tagtypes for tags.
2024-08-14 21:07:14 +02:00
Max Kellermann
965c466e9b
Merge branch 'mpg-duration-fix' of https://github.com/boedy/MPD
2024-08-10 16:54:48 +02:00
boedy
731f20111a
Override the value for file size in bytes. Useful for getting sensible track length values in feed mode or for HTTP streams.
...
https://www.mpg123.de/api/group__mpg123__status.shtml#gad0301e80dbc3f48e47e27d39cd328755
2024-08-08 18:43:15 +02:00
jcorporation
d62f7cdc34
New command searchplaylist
2024-08-02 23:46:17 +02:00
Max Kellermann
f7790430a0
lib/curl/Multi: add SetSocketFunction(), SetTimerFunction()
2024-07-31 10:06:29 +02:00
Max Kellermann
959826d1d1
input/ffmpeg: offload FFmpeg calls to thread
...
Prepare for interruptible I/O.
2024-07-30 12:43:05 +02:00
Max Kellermann
ec30716e01
input/thread: implement size and seek
2024-07-30 12:33:44 +02:00
Max Kellermann
dc51015c75
input/mms: move MMS_BUFFER_SIZE into the class
2024-07-30 12:33:30 +02:00
Max Kellermann
72b0eeb7b1
input/mms: invoke Start() in constructor
2024-07-30 12:31:58 +02:00
Max Kellermann
b050e0132e
input/{async,thread}: add an additional Cond field
...
This eliminates the ScopeExchangeInputStreamHandler kludge.
2024-07-29 23:17:33 +02:00
Max Kellermann
cf962d94c7
input/thread: remove bogus `inline`
2024-07-29 23:14:16 +02:00
Max Kellermann
c29d23b4c3
input/thread: use notify_one() instead of notify_all()
...
There's only ever one waiter, and notify_one() may be faster than
notify_all().
2024-07-29 23:09:07 +02:00
Max Kellermann
61e8df913d
input/thread: check IsEOF() in IsAvailable()
2024-07-29 23:05:00 +02:00
Max Kellermann
4a55e3e8bd
input/thread: check buffer.empty() in IsEOF()
2024-07-29 23:03:00 +02:00
Max Kellermann
2e78bd430c
input/thread: use pass std::span<std::byte> to ThreadRead()
2024-07-29 22:32:52 +02:00
Max Kellermann
dbaa72cb40
util/CircularBuffer: use std::span internally
2024-07-29 22:24:54 +02:00
Max Kellermann
596d2d93dd
util/CircularBuffer: use `using` instead of `typedef`
2024-07-29 22:21:38 +02:00
Max Kellermann
10311b3a65
util/CircularBuffer: explicitly forbid the copy operator
2024-07-29 22:20:15 +02:00
Max Kellermann
332ba42073
util/HugeAllocator: add std::span cast operator
2024-07-29 22:20:12 +02:00
Max Kellermann
4262d29965
util/HugeAllocator: add `constexpr`
2024-07-29 22:19:28 +02:00
Max Kellermann
0899d80ae0
util/CircularBuffer: add `noexcept` and `constexpr`
2024-07-29 22:14:59 +02:00
Max Kellermann
9fe6493fc2
util/CircularBuffer: use inline initializer
2024-07-29 22:13:50 +02:00
Max Kellermann
902cb8efac
input/thread: use std::byte instead of uint8_t
2024-07-29 22:13:50 +02:00
Max Kellermann
f54210bf68
input/async: move enum definition down
2024-07-29 22:13:42 +02:00
Max Kellermann
fb151c8662
lib/fmt/meson.build: suppress -Warray-bounds with GCC 13
2024-07-29 22:13:11 +02:00
Max Kellermann
323517753d
lib/fmt/meson.build: remove obsolete clang 14 workaround
...
Android NDK r27 has clang 18 and I don't feel like supporting clang 14.
2024-07-29 22:11:20 +02:00
Max Kellermann
5726d9f06a
mixer/Memento: include cleanup
2024-07-29 17:04:53 +02:00
Max Kellermann
0992fab1c8
filter/ReplayGain: include cleanup
2024-07-29 17:04:30 +02:00
Max Kellermann
b546ddc54c
client/Idle: include cleanup
2024-07-29 17:03:59 +02:00
Max Kellermann
d45b7cc972
IdleFlags: move to procool/
2024-07-29 17:02:33 +02:00
Max Kellermann
12eaaef210
output/Thread: allow Delay() to return duration::max()
...
Eliminate the periodic wakeups while paused in some output plugins.
2024-07-29 16:52:36 +02:00
Max Kellermann
0a035f3ce0
output/alsa: add option "close_on_pause"
...
This allows keeping the ALSA PCM open even if playback is paused. As
a side effect, this allows using the "always_on" option with ALSA
outputs, because "always_on" pauses the output.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1623
2024-07-29 16:31:09 +02:00
Max Kellermann
9c8f4aaf99
lib/alsa/meson.build: require libasound 1.2 or later
...
This allows us to drop the 1.1.4 snd_pcm_drain() bug workaround (added
by commit f85d4d28d1
).
2024-07-29 15:42:46 +02:00
Max Kellermann
3bef4f839a
output/alsa: fix coding style
2024-07-29 15:40:52 +02:00
Max Kellermann
1dfda3a5e1
output/alsa: reorder fields to improve packing
2024-07-29 15:38:02 +02:00
Max Kellermann
9d9c4045e2
output/alsa: move redundant code to UnregisterSockets()
2024-07-29 15:28:58 +02:00
Max Kellermann
d466deedad
output/alsa: fix lambda indent
2024-07-29 15:28:27 +02:00
Max Kellermann
bbbbf5f4bd
event/MultiSocketMonitor: reschedule epoll/EPERM workaround forever
...
Fixes a regression by commit 3558317dc9
which caused the ALSA null
plugin to cease to work because the workaround timer was never rescheduled.
2024-07-25 20:16:53 +02:00
Max Kellermann
f030b22bec
player/thread: wait for the first chunk in CheckCrossFade()
...
This fixes MixRamp problems which occur because CheckCrossFade() is
called before the decoder has parsed MixRamp tags after
DecoderClient::Ready().
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2084
2024-07-25 20:07:52 +02:00
Max Kellermann
a693052f2c
Merge branch 'feat/showmovement' of https://github.com/mayanez/MPD
2024-07-25 14:01:19 +02:00
Miguel A. Arroyo
e3809bd4f0
feat: Add ShowMovement Tag
...
This commit adds the `SHOWMOVEMENT` [tag](https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html#show-work-movement-4 ). Historically, this tag originates from iTunes' MP4, but has since become widely used. It is created by Picard's Classical music [plugins](https://picard-docs.musicbrainz.org/en/variables/variables_classical.html ) (such as "Classical Extras" or "Work & Movement").
The reasoning behind this tag is to display Work & Movement titles without redundant information and in a more uniform way. Moreover, it additionally serves as an implicit marker denoting classical music tracks (genre tags aren't sufficient).
If the client so chooses to support this tag, they can display `Work` and `Movement` instead of the track title allowing for cleaner display. Other clients can continue to display the `%title%` as before without any fuss.
2024-07-23 21:09:31 -07:00
Max Kellermann
41cc695848
Instance: fix io/rtio thread mixup
...
Fixes regression by commit 43d633f560
2024-07-23 15:12:30 +02:00
Max Kellermann
3558317dc9
event/MultiSocketMonitor: remove force-refresh on every iteration
...
libasound guarantees that the file descriptors never change for a
"prepared" PCM device, thus we can omit this defensive kludge.
2024-07-23 15:08:55 +02:00
Max Kellermann
18cb34825d
input/alsa: use libfmt instead of std::string concatenation
2024-07-23 15:04:49 +02:00
Max Kellermann
4c4a3c8664
event/TimerList: use FineTimerEvent::GetDue()
...
Avoid accessing the private field from an inner class of the friend
class, because some compilers apparently don't like it (Apple clang).
2024-07-23 13:38:05 +02:00
Max Kellermann
d24e7763f6
net/AddressInfo: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:19 +02:00
Max Kellermann
49ad4e9f3c
io/FileDescriptor: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:02 +02:00
Max Kellermann
ea96b321dc
net/SocketAdddress: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:48 +02:00
Max Kellermann
bc758cece0
util/StringPointer: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:37 +02:00
Max Kellermann
0e4885c1fa
util/IterableSplitString: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:30 +02:00
Max Kellermann
9944c97203
util/AllocatedString: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:20 +02:00
Max Kellermann
58a5550439
util/AllocatedArray: remove unnecessary operator!=()
...
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:10 +02:00
Max Kellermann
8e42467bd2
decoder/mpg123: relax mpg123_length() check in Scan()
...
Do not fail the Scan() function completely if libmpg123 cannot
determine the duration.
2024-07-12 16:11:08 +02:00
Max Kellermann
e00e7802c8
decoder/mpg123: report unknown duration if mpg123_length()<0
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2058
2024-07-12 16:09:35 +02:00
Max Kellermann
55d0bbade2
decoder/mpg123: move code to GetDuration()
2024-07-12 16:08:11 +02:00
Max Kellermann
de9f0dc910
playlist/Plugin: convert _init() and _finish() to methods
2024-07-12 16:00:42 +02:00
Max Kellermann
cf5970a6e1
output/Registry: replace output_plugins_for_each() with a container class
2024-07-12 15:55:01 +02:00
Max Kellermann
29747a213f
playlist/Registry: replace playlist_plugins_for_each() with a container class
2024-07-12 15:52:05 +02:00
Max Kellermann
c64b4838dc
encoder/List: replace encoder_plugins_for_each() with a container class
2024-07-12 14:59:18 +02:00
Max Kellermann
040c4a8560
archive/ArchiveList: replace archive_plugins_for_each() with a container class
2024-07-12 09:58:19 +02:00
Max Kellermann
90dfa437e0
lib/alsa/NonBlock: use a persistent pollfd array
...
This implements the semantic API change introduced by commit
cd04da2bcf
2024-07-11 21:47:15 +02:00
Max Kellermann
4486b2eded
lib/alsa/NonBlock: add common base class
2024-07-11 21:38:45 +02:00
Max Kellermann
3db8a4f41b
lib/alsa/NonBlock: embed in "namespace Alsa"
2024-07-11 21:33:03 +02:00
Max Kellermann
9704cf3dcb
lib/alsa/NonBlock: fix lambda indent
2024-07-11 21:12:18 +02:00
Max Kellermann
9aa6b03ba8
event/MultiSocketMonitor: pass std::span to ReplaceSocketList()
2024-07-11 21:09:27 +02:00
Max Kellermann
45f92f0ef0
event/MultiSocketMonitor: fix lambda indent
2024-07-11 21:06:33 +02:00
Max Kellermann
23a3278b4e
event/MultiSocketMonitor: make ctor protected and explicit
2024-07-11 21:05:11 +02:00
Max Kellermann
951f916440
mixer/alsa: add `noexcept`
2024-07-11 21:03:41 +02:00
Max Kellermann
fb87e19bae
input/Registry: replace the input_plugins_for_each macros with a container class
2024-07-11 20:52:44 +02:00
Max Kellermann
49edb16de0
decoder/Thread: add enum DecodeResult, log better diagnostics
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2076
2024-07-11 16:47:43 +02:00
Max Kellermann
8671896e4c
decoder/Thread: throw StopDecoder if command==STOP in decoder_run_stream()
...
Everybody else is doing that, so let's do the same and not pretend
playback was successful.
2024-07-11 16:28:57 +02:00
Max Kellermann
c2470ebd9c
decoder/List: eliminate decoder_plugins_try()
...
Migrate callers to GetEnabledDecoderPlugins(). By not using lambdas,
we can switch to enums as return value for better diagnostics.
2024-07-11 16:15:38 +02:00
Max Kellermann
a27fb71c4c
decoder/List: add iterable container for decoder plugins
2024-07-11 15:30:31 +02:00
Max Kellermann
f6a687dc2b
util/FilteredContainer: new class
2024-07-11 15:30:30 +02:00
Max Kellermann
9210705598
util/TerminatedArray: new class
2024-07-11 15:30:30 +02:00