Commit Graph

18743 Commits

Author SHA1 Message Date
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 5b8ef9a62b python/build/__init__.py: add missing file 2024-07-29 16:51:40 +02:00
Max Kellermann 196258ea13 .github/workflows/build_android.yml: update NDK to r27 2024-07-29 16:38:26 +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 7ab789fbaf doc/user.rst: add clarification to the "always_on" option 2024-07-29 16:30:15 +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 b4374ddb35 python/build/libs.py: update libopenmpt to 0.7.9 2024-07-23 13:08:04 +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
Max Kellermann 3d995bba5f util/DereferenceIterator: add class DereferenceContainerAdapter 2024-07-11 14:55:35 +02:00