2235 Commits

Author SHA1 Message Date
Max Kellermann
689d231809 LogBackend: include year in time stamp
Also use a numeric month instead of the month name.
2025-03-13 09:00:37 +01:00
Max Kellermann
2388f38d7d NEWS: mention the id3tag build failure fix merged from the obsolete v0.23.x branch 2025-03-13 08:30:28 +01:00
Jzavrk
dac2c4df9b output/plugins/SndioOutputPlugin: Fix sndio volume calculation
This commit addresses issues #2226 and MusicPlayerDaemon/ncmpc#95.
MPD and sndio volume ranges being different, the formula to transform a
value from one set to the other is in the form of `(a * x + b) / c`
where:
 - a = output set max value
 - b = adjustment term
 - c = input set max value
Previous calculation formula had `b = 0`, scaling values too low and
rendering increment impossible. Having `b = out_maxval / 2` balances the
transformation, ensuring a better spread of values across the output
range.

Closes #2226
2025-03-12 12:24:00 +01:00
Max Kellermann
a19b6919e0 increment version number to 0.24.1 2025-03-11 11:24:59 +01:00
Max Kellermann
1caeb9b418 release v0.24 2025-03-11 11:05:29 +01:00
Camille Scholtz
509786cbf1 Revert "remove macOS support"
This reverts commit 518ce0187a29bea666b9abf71788625262d015be.
2025-02-01 18:05:13 +01:00
Max Kellermann
a404e5754e release v0.23.17
-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmeaU0kQHG1heEBtdXNp
 Y3BkLm9yZwAKCRAjbopYxttFEtYUD/9a1KtdDSVTQAk6flFs71DYEvu1HKPlB51u
 9N2R0yx4dVvFIDEJi+O+I8RK0kfTuEyQFFm9/QzgmB5P7MBWbQH5nHzSINJ6aMlo
 OqeChrlLflGZWPypJQmT+gku80SgfrkRfC1pgVGDjh2a2y++0TQfAtuVlkIZEvl3
 rJ1auKuPGc/3+bM5/WC5zbsQSUrn24iEfh0akfz4tExBd17+DF7JN8IejapnCV1s
 EchsLaCONwxUW4SqeRUoU0OzO6triRFwglYa0pwHKUijHuL9ud5xvW7KVz+c7tTs
 2W5EgZshOyRNCIehV/ZNx9NL0zKM0ehb6//pBPmdZhXBJBsWS1YQzYLgJK+RNXeS
 sWEc1ANNS8R8V5b13sE+8mLwmjgUO6lLsjsuywrS0+ac3b8XeKU8PDqVq+oSZWdK
 jNh0SBN8MJpCLwJ/jFa6q36A+534G4hEV/QG0wvviK+wAf3OLpi3G0++wRyh0RcS
 msQWeoXHcY/nhfgDK2TrUjaJsHjVqqZljNaoiZSdseLFsXt73aTHQ6Eu12GXZNZF
 gxvd3jBGSrR5Zq+tes4oQ8unes/AEqXBN+PtJuLaZYxn8aOhButt6UEyfERO7NJY
 AMQomtwx3TVhpRwz/9LZMvpK4UIbd80i/3zv5w1mxns1LThErXgcEoqbKN86SJmU
 185T/UdrVA==
 =hdJY
 -----END PGP SIGNATURE-----

Merge tag 'v0.23.17'

release v0.23.17
2025-01-29 17:20:02 +01:00
Max Kellermann
b080ca8627 release v0.23.17 2025-01-29 17:11:53 +01:00
Max Kellermann
0e8cd3b961 client/Process: explicitly disallow "idle" and "noidle" in command lists
These commands cannot possibly work with command lists because command
lists are supposed to be atomic, but suspended command execution
conflicts with that.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2167
2025-01-29 17:08:53 +01:00
Max Kellermann
8fcb6e148f decoder/list: probe "ffmpeg" before "sndfile" and "audiofile"
For FFmpeg's DTS-WAV support, see code comment.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2158
2025-01-29 15:42:54 +01:00
Max Kellermann
c0a9434f34 command/file: "albumart" tries to send larger chunks if available
If we only receive very little data from the InputStream, try a second
Read() call to get more data.  This works around tiny reads at input
buffer boundaries with the io_uring input plugin.  These tiny reads
are inefficient, and we can afford to wait one more low-level I/O
iteration to finish (but not more).

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2186
2025-01-29 13:07:05 +01:00
Max Kellermann
ab011adf77 meson.build: require GCC 12 or clang 14
GCC 10 doesn't have std::make_unique_for_overwrite(), so let's drop it.
2025-01-29 12:24:48 +01:00
Max Kellermann
3cc7b7dbf9 Merge branch 'v0.23.x' 2025-01-29 12:09:18 +01:00
Max Kellermann
687475cf3c db/update/InotifyUpdate: handle IN_CREATE without IN_ISDIR
A new symlink causes `IN_CREATE`.  Usually, we catch `IN_CREATE` only with
IN_ISDIR to watch the new directory, but otherwise `IN_CREATE` is not
handled.  Regular files are "created" but they have usable content
only with `IN_CLOSE_WRITE`.  Yet symlinks have only `IN_CREATE` and
they are immediately usable.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2192
2025-01-29 09:41:08 +01:00
Max Kellermann
18495fbb4e lib/nfs/meson.build: require libnfs 4.0
All Linux distributions have at least version 4, and thus I cannot
test with older versions.
2025-01-29 09:00:37 +01:00
Max Kellermann
177ffde90f Merge branch 'v0.23.x' 2025-01-28 18:45:02 +01:00
Max Kellermann
8dcd6ea2b4 increment version number to 0.23.17 2025-01-28 18:13:07 +01:00
Max Kellermann
b1677bf79c Merge branch 'sticker_inc_dec' of https://github.com/jcorporation/MPD 2024-12-12 08:38:58 +01:00
jcorporation
1078c1c1bf Add sticker sub-commands inc and dec
Let sqlite do the work for incrementing or decrementing a sticker value.
This sub-commands are usefull to track playcounts with sticker values and
saves us one roundtrip.
2024-12-11 21:41:24 +01:00
Max Kellermann
b6e187efd8 release v0.23.16
-----BEGIN PGP SIGNATURE-----
 
 iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmdO8gkNHG1heEBibGFy
 Zy5kZQAKCRAjbopYxttFEgdSEACRi/mJGq9at6GAlyBDuemzAo/UyyAa2fR8xTxf
 V7qGMlWfyylSFp9J1SwPvl56J5s28VpoFL4sfW9TYb9U3bl/eTTlyEvxZBgCbYq8
 fSDzVY7ReWxr1u/Fv7GuR9Nbu/tN0NItlBRB23FkNIYmdRxxH0h/fKbgXRD9TUiG
 qs4w97AqeWvxDuEyaoX0Y/l2tdlLyUENi7G7Np34giSFKpq9ldD28nKl18ORSuby
 +tK124wW1s/p7ncrzhzd9NyrEvmCMKB951H95H7+sfgojAY1LuVWGtiJSfMYw+w0
 LqCd23l78kwOfDYPwvB8sp4lUpVdxv4u9YhGwgNfzwavCrOWfzYMVg+hub3V0N//
 Xx79wGSkR1NQcbfUD05U6c4+jfDGARDRx9dUQWpeJGOF3LHFFFIyAPGW5T0DZrDY
 aPdoaLKbtK7F36QdBPZryhv49lXdsbd1OKhFV54QMR04bM3a150t6CiFk53nQIk0
 akIKCDt0Gi3GrLRkSwOeOwVuWsI/Y0SQC8dp8cIzCa9toIzfn42hG14SKM2FWAP1
 4BmekNkfqsG6xY8xcRwq6+HF1aq3dDHoPqIfE0r71/hadlIX9OjSNlepP2VIyzY/
 Gl5jvkf9el2MfI4JeCXafsZCyqlV6mx4HVPXrtiLgSdY3odTA1aShFI6/jfEjxXM
 Yo/ngQ==
 =640n
 -----END PGP SIGNATURE-----

Merge tag 'v0.23.16'

release v0.23.16
2024-12-03 13:01:15 +01:00
Max Kellermann
b5bd294e5c release v0.23.16 2024-12-03 12:56:57 +01:00
Max Kellermann
b7248f0333 filter/ffmpeg: fill AVFrame::pts
Some libavfilter plugins don't produce any output if `pts` is never
set, e.g. the `lowpass` plugin.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2114
2024-12-03 12:52:15 +01:00
Marius Feraru
8a5b5378e6 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-12-03 12:49:02 +01:00
Michael Cho
4a49f75799 meson.build: support building with ICU 76
ICU 76 decided to reduce overlinking[^1] thus `icu-i18n` will no longer
add `icu-uc` when linking to shared libraries. This results in failure:
```
src/lib/icu/libicu.a.p/Converter.cxx.o: undefined reference to symbol 'ucnv_fromUnicode_76'
```

[^1]: 199bc82702

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2151
2024-12-03 12:47:55 +01:00
Rudi Heitbaum
a42da90042 lib/fmt: support build with libfmt-11.0.0
Upstream libfmt commit fmtlib/fmt@d707292
now requires the format function to be const.

Adjust the function prototype so it is const and can compile.

Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2141
2024-12-03 12:42:02 +01:00
Max Kellermann
8780db5ee8 increment version number to 0.23.16 2024-12-03 12:34:01 +01:00
Max Kellermann
fc5d258890 filter/ffmpeg: fill AVFrame::pts
Some libavfilter plugins don't produce any output if `pts` is never
set, e.g. the `lowpass` plugin.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2114
2024-11-02 22:24:53 +01:00
jcorporation
fd7d251358 Add "reset" subcommand to tagtypes.
This subcommand combines "clear" and "enable" in one command.
2024-11-01 18:07:06 +01:00
Max Kellermann
449f8af7d0 Merge branch 'protocol_features' of https://github.com/jcorporation/MPD 2024-10-26 08:18:56 +02:00
Max Kellermann
38b46e680a Merge branch 'stickernames-types' of https://github.com/jcorporation/MPD 2024-10-26 08:16:53 +02:00
Max Kellermann
98bc63251e Merge branch 'searchplaylist_pos' of https://github.com/jcorporation/MPD 2024-10-26 08:14:31 +02:00
Max Kellermann
f82a385be2 Merge branch 'tagtypes_available' of https://github.com/jcorporation/MPD 2024-10-26 08:10:07 +02:00
jcorporation
b1067333dc Print positions in the search playlist functions. 2024-10-20 11:55:52 +02:00
jcorporation
35bdf74952 Mention contains and starts_with for "sticker find" 2024-09-28 22:43:20 +02:00
jcorporation
23c2bba483 This commit adds a new protocol command to toggle protocol features
for a client connection. It works like the tag_mask and the associated
tagtypes command.

New commands:

- protocol
  Shows enabled protocol features.

- protocol available
  Show all available protocol features.

- protocol enable {feature...}
  Enables protocol features.

- protocol disable {feature...}
  Disables protocol features.

- protocol all
  Enables all available protocol features.

- protocol clear
  Disables all protocol features.

This commit adds also the first protocol feature.

hide_playlists_in_root
  Disables the listing of playlists in the root folder
  for the lsinfo command.
2024-09-28 22:41:35 +02:00
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
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
2809db8b40 Merge branch 'searchplaylist' of https://github.com/jcorporation/MPD 2024-08-30 12:47:24 +02:00
jcorporation
f94caa96b8 Add command stickertypes
Prints all available stickertypes like tagtypes for tags.
2024-08-14 21:07:14 +02:00
jcorporation
d62f7cdc34 New command searchplaylist 2024-08-02 23:46:17 +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
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
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
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
044280c538 meson.build: require Meson 1.0
Debian Bookworm (the current stable) has 1.0.1 and Ubuntu LTS 24.04
has 1.3.2.  It's acceptable to require at least version 1.0 now.
2024-07-05 17:23:52 +02:00
Max Kellermann
ac1265b9cc output/alsa: set up the ALSA channel map
This is necessary for proper multi-channel support because many ALSA
drivers do not use the channel maps from surround*.conf.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2063
2024-06-27 21:52:38 +02:00
Max Kellermann
31e583e9f8 lib/nfs: initial support for libnfs API 2
Commit
5e8f7ce273
introduced the libnfs API version 2 which may eventually become libnfs
version 6.

This version detection depends on my pull request
https://github.com/sahlberg/libnfs/pull/468
2024-05-15 06:01:42 +02:00
Max Kellermann
9384bff6f9 lib/nfs/Manager: add method MakeConnection()
This uses the libnfs function nfs_parse_url_dir() which means MPD
gains support for the libnfs arguments like "version".

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2039
2024-05-07 21:22:43 +02:00
Max Kellermann
23d895415a lib/nfs/meson.build: require libnfs 4.0
All Linux distributions have at least version 4, and thus I cannot
test with older versions.
2024-05-06 14:54:04 +02:00
Max Kellermann
518ce0187a remove macOS support
There were a few macOS related bug reports on the bug tracker which
have been open for years without a volunteer caring for them.  The
GitHub actions build has also been broken for a long time due to bugs
in the ancient LLVM toolchain shipped with macOS, making macOS an
unsuitable non-Linux target for testing MPD's portability.

All of this makes macOS support an annoying liability for me.  To
avoid more frustration, I'm hereby dropping macOS support completely
from MPD.  Maybe this causes enough pain for a new maintainer to
spawn, but maybe nobody cares, so... let's see.
2024-05-06 14:11:50 +02:00