Max Kellermann
5d34b9b5bb
util/SpanCast: move CopyConst to separate header
2022-06-29 17:23:44 +02:00
Max Kellermann
86be7938f1
util/SpanCast: swap the CopyConst template parameters
2022-06-29 17:23:41 +02:00
Max Kellermann
7ad5a5efec
util/OffsetPointer: use std::byte
2022-06-29 17:23:32 +02:00
Max Kellermann
64f2735e60
util/SpanCast: add ToStringView()
2022-06-29 17:23:14 +02:00
Max Kellermann
3a0a0facdf
util/SpanCast: suppress alignment warnings
2022-06-29 17:23:13 +02:00
Max Kellermann
ec66ee3bfb
tag/Handler: use std::string_view instead of StringView
2022-06-29 17:22:17 +02:00
Max Kellermann
ca9dd74fbf
tag/Builder: use std::string_view instead of StringView
2022-06-29 17:22:17 +02:00
Max Kellermann
2da847dd30
tag/Pool: use std::string_view instead of StringView
2022-06-29 17:22:17 +02:00
Max Kellermann
4cb5c3782b
util/HexFormat: require std::span
2022-06-29 17:22:17 +02:00
Max Kellermann
f2cfa3e1c4
net/SocketError: add SocketErrorCategory()
2022-06-13 21:26:58 +02:00
Max Kellermann
0c2c20254b
system/Error: add IsLastError()
2022-06-13 21:23:11 +02:00
Max Kellermann
193d6a4fd4
system/Error: add LastErrorCategory()
2022-06-13 21:19:20 +02:00
Max Kellermann
acfeec7a5d
system/Error: add [[gnu::const]] attribute
2022-06-13 21:16:24 +02:00
Max Kellermann
eedd490e2d
net/AddressInfo: add iterator type aliases
2022-06-07 10:11:26 +02:00
Max Kellermann
0a8aca516a
util/StringBuffer: use data() instead of &front()
2022-06-07 10:11:05 +02:00
Max Kellermann
70808bde64
util/ForeignFifoBuffer: add MoveFrom() overload with std::span
2022-06-07 10:09:08 +02:00
Max Kellermann
93bf0fc547
util/ForeignFifoBuffer: use iterators
2022-06-07 10:08:58 +02:00
Max Kellermann
95e7f8b1c8
util/ForeignFifoBuffer: more constexpr
2022-06-07 10:08:58 +02:00
Max Kellermann
27e78c71e0
util/HexFormat: use std::span instead of ConstBuffer
2022-06-01 22:50:54 +02:00
Max Kellermann
8333927737
time/Zone: add native Windows implementation
2022-06-01 22:35:04 +02:00
Max Kellermann
db03db0dca
util/SpanCast: add FromBytesStrict()
2022-06-01 21:50:01 +02:00
Max Kellermann
bd96f6e572
util/SpanCast: add const support to FromBytesFloor()
2022-06-01 21:49:35 +02:00
Max Kellermann
04041f9583
util/Manual: use std::aligned_storage_t
...
By using std::launder(), we can re-enable -Wstrict-aliasing.
2022-05-31 16:44:07 +02:00
Max Kellermann
826d1b207e
util/Manual: add type aliases
2022-05-31 16:44:07 +02:00
Max Kellermann
f92bae887f
util/Manual: add noexcept
2022-05-31 16:44:07 +02:00
Max Kellermann
d2983b7fde
net/SocketAddress: include cleanup
2022-05-31 13:54:19 +02:00
Max Kellermann
059955a48c
net/SocketAddress: add #ifdefs for std::span
2022-05-31 13:51:12 +02:00
Max Kellermann
6ebac6a0b2
net/StaticSocketAddress: use std::string_view instead of StringView
2022-05-31 13:49:18 +02:00
Max Kellermann
b5a9d0654e
net/Resolver: use std::copy()
2022-05-31 13:44:25 +02:00
Max Kellermann
242ba727b2
net/HostParser: use std::string_view instead of StringView
2022-05-31 13:44:25 +02:00
Max Kellermann
d5db4ca0e7
net/SocketAddress: GetSteadyPart() returns std::span
2022-05-31 13:32:27 +02:00
Max Kellermann
d256d3dabe
util/StringCompare: use std::string_view instead of StringView
2022-05-31 13:24:45 +02:00
Max Kellermann
759da033fc
lib/curl/Escape: use std::string_view instead of StringView
2022-05-31 13:22:56 +02:00
Max Kellermann
c074338f4c
system/EventFD: include cleanup
2022-05-31 12:43:26 +02:00
Max Kellermann
3dd2434149
lib/crypto/Base64: add overload which returns AllocatedArray<std::byte>
2022-05-24 14:29:41 +02:00
Max Kellermann
3699514d18
lib/xiph/VorbisPicture: use std::string_view instead of StringView
2022-05-24 14:24:48 +02:00
Max Kellermann
f045cf43e4
output/snapcast/Client: work around clang 14 std::span cast bug
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1538
2022-05-24 14:18:50 +02:00
Max Kellermann
843dad19e9
output/snapcast/Client: use std::string_view instead of StringView
2022-05-24 14:18:33 +02:00
Max Kellermann
73e2ac4211
tag/FixString: use std::string_view instead of StringView
2022-05-24 14:18:33 +02:00
Max Kellermann
6d113de1f8
tag/Handler: pass std::span to OnPicture()
2022-05-24 14:18:33 +02:00
Max Kellermann
2e6f115bcc
Merge branch 'v0.23.x'
2022-05-24 10:58:40 +02:00
Dave Hocker
c975d8b943
Fix deprecation warnings caused by name changes in OSX audio inerfaces
2022-05-24 10:20:47 +02:00
Max Kellermann
97f78059a2
util/AllocatedArray: add missing type alias "value_type"
2022-05-23 22:15:20 +02:00
Max Kellermann
fd47edb905
apple/AudioObject: call AllocatedArray::data() instead of begin()
...
Since commit 5fb97b81d1
, begin() returns
an iterator class and not a pointer.
Fixes one part of https://github.com/MusicPlayerDaemon/MPD/issues/1538
2022-05-23 22:06:54 +02:00
Max Kellermann
6633c7fd42
lib/crypto/Base64: use std::string_view
2022-05-20 11:25:04 +02:00
Max Kellermann
01b32d5ee0
util/WritableBuffer: remove unused library
2022-05-20 11:22:03 +02:00
Max Kellermann
1260a0147a
lib/crypto/Base64: use std::span
2022-05-20 11:21:44 +02:00
Max Kellermann
ef54b7d9de
archive/iso9660: use std::span
2022-05-20 11:15:45 +02:00
Max Kellermann
f66315d2de
MusicChunk: use std::span
2022-05-20 11:15:45 +02:00
Max Kellermann
b50173ae8b
util/CircularBuffer: use std::span
2022-05-20 11:15:45 +02:00
Max Kellermann
b37c031fd1
util/{HugeAllocator,SparseBuffer}: use std::span
2022-05-20 11:15:45 +02:00
Max Kellermann
84e5da4bf0
pcm/Silence: use std::span
2022-05-20 11:15:45 +02:00
Max Kellermann
3bb7693200
decoder/HybridDsd: remove
...
This is a proprietary extension which nobody appears to use.
2022-05-20 10:08:17 +02:00
Max Kellermann
b22c00d0cd
Merge branch 'v0.23.x'
2022-05-20 10:04:19 +02:00
Max Kellermann
7006b075c3
util/AllocatedArray: fix -Wunused-parameter
2022-05-20 09:48:49 +02:00
Max Kellermann
774024a41b
net/SocketAddress: add std::span cast operator
2022-05-19 20:52:48 +02:00
Max Kellermann
5fb97b81d1
util/AllocatedArray: migrate from {Const,Writable}Buffer to std::span
2022-05-19 20:52:48 +02:00
Max Kellermann
8bd1b5228c
lib/upnp/Compat: suppress -Wunused-but-set-parameter
2022-05-19 20:10:41 +02:00
Max Kellermann
23dd613ff9
system/VmaName: suppress -Wunused-parameter
2022-05-19 14:01:57 +02:00
Max Kellermann
bb7be9a4cd
util/*FifoBuffer: migrate from WritableBuffer to std::span
2022-05-19 14:01:57 +02:00
Max Kellermann
570755f05a
io/BufferedReader: migrate from WritableBuffer to std::span
2022-05-19 13:25:19 +02:00
Max Kellermann
957d3e51e0
util/{Const,Writable}Buffer: add std::span cast operators
2022-05-19 13:25:02 +02:00
Max Kellermann
fc6c274c97
pcm/{Dop,Dsd*}: explicitly capture "this"
...
Implicit capturing is deprecated in C++20.
2022-05-19 13:25:02 +02:00
Max Kellermann
313b092ba8
system/meson.build: depend on libfmt, not our log.a
...
Fixes linker error.
2022-05-19 13:25:02 +02:00
Max Kellermann
86e6f4fcc0
Merge branch 'v0.23.x'
2022-05-19 09:27:06 +02:00
Caleb Xu
c6f7f57776
apple/Throw: add missing <cstring> header
...
strlen() and strcpy() are provided by the <string.h> and <cstring>
headers (as functions in global and std namespaces, respectively).
Compilers MAY provide an implementation for either of the functions
without including the extra header but the existence of a declaration
without the header is not assured.
2022-05-19 09:08:44 +02:00
Max Kellermann
122db76781
release v0.23.7
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmJ5gd4QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEi1vD/9mcxGKnkx4yTDJZhtSWfsSE/5v+oFu09Qy
Uk5ggk6PN18hMFZ2mcVYXdh7Yc1QiiAycgVFnchiVMYaF+K3LXefXvtkn81xuUNN
QnJLX/o2hbnmr5Or/Ps+hgiQ0PEn0ui1+t70jJ8a3Ad9sJy3YFQc/HjLUeOZqT0p
4qVyp614TtjtPlw/q0GHgiD1BxpH/pbcdMvioGj80MwBlwyrvA5IlV4HxxAAervw
4KKT9XbtnHzR+fyUPv633CDU/bWNkTgbpMVyEhRXxE3heNaXMC4wSfsD/5XKDYLb
zt/q1pAj6totKJwgdm76MoOKuVeNvw54jBE7st46+lPoH97h5uN9rpEAk00dXtSA
2FuOw8bc79uN5ZRsWXJ6ZBWzwUvssAtx9ee2seR9BUpdeSGurdOfkKq0h/c/aUzN
Qn6oWX75e7fMAB9MZhdCpM8lC0Nm5l9il+pA9811qaeZLO6yveW6by2Hmbo6BU0Q
3MQKyhXJkLFAOwPR9qMAtr3rQ/Wyl4WsJ/kXIYBu7I7HjOxSHjNnZOMsvcLfCMC9
dcRmtHOPjuVbafiypZ88SekIS0U+deXg33mKaWhH7FrCFEFbXf6GTBzXh/hHKtBm
icGTwGoOHX53fTgQ9GwC0XBpVBFbY5/gGr2KuzABecU2TeL3QqLl8tolsnBGVYun
JJ9n+RP0dQ==
=iQJC
-----END PGP SIGNATURE-----
Merge tag 'v0.23.7'
release v0.23.7
2022-05-09 23:14:07 +02:00
Max Kellermann
b175e4128d
encoder/meson.build: always generate encoder/Features.h
...
Fixes regression from commit 85f9863e0a
2022-05-09 22:52:59 +02:00
BurroCargado
11d1f56062
Fix seeking HLS on-demand streaming not working
...
This issue occurs when playing HLS streaming delivered
from a server that does not support partial requests.
The issue is reproduced as follows(using Ubuntu 20.04 PC):
1. Prepare HLS example content.
$ mkdir test
$ ffmpeg -i example.flac -vn -c:a aac -b:a 128000 -f hls -hls_list_size 0 test/output.m3u8
(ffmpeg 4.2.4 is used)
2. Prepare web server without partial requests support.
(Docker version 20.10.12 and NGINX official Docker image is used)
$ docker run --name tmp-nginx-container -d nginx
$ docker cp tmp-nginx-container:/etc/nginx/conf.d/default.conf .
$ docker rm -f tmp-nginx-container
Edit default.conf and add "max_ranges 0;" to "location / {...}".
This disables partial requests support,
removes 'Accept-Ranges: bytes' header from the server response.
Then, run the server:
$ docker run --name test-nginx -v $PWD/test:/usr/share/nginx/html:ro -v $PWD/default.conf:/etc/nginx/conf.d/default.conf -d -p 8080:80 nginx
3. Setup MPD to Play the next URL.
http://address-of-the-server:8080/output.m3u8
Seeking this stream results in "exception: Not seekable".
2022-05-07 12:18:56 +09:00
BurroCargado
bd840d4638
decoder/plugins/FFmpegDecoder: fix IsSeekable()
...
AVFMTCTX_UNSEEKABLE signals the stream is not seekable
according to FFmpeg source code description:
8e98dfc57f/libavformat/avformat.h (L1181)
2022-05-07 09:48:04 +09:00
Max Kellermann
601e5e6abc
net/AddressInfo: add noexcept
2022-04-26 21:17:01 +02:00
Max Kellermann
6bacb23002
decoder/ffmpeg: add "noexcept"
2022-04-26 21:07:25 +02:00
Max Kellermann
5c300a9f1a
tag/ReplayGainParser: add "noexcept"
2022-04-26 21:06:26 +02:00
Max Kellermann
6e1500c251
Merge branch 'v0.23.x'
2022-04-26 21:05:39 +02:00
Max Kellermann
c3d393f214
tag/Id3Picture: fix unaligned access
2022-04-26 21:03:48 +02:00
Max Kellermann
f88fc0ca1a
util/ByteOrder: add class PackedBE32
2022-04-26 21:03:05 +02:00
Max Kellermann
fb8d8242ab
tag/ApeLoader: fix unaligned access
...
Fixes part 4 of https://github.com/MusicPlayerDaemon/MPD/issues/1490
2022-04-26 21:00:41 +02:00
Max Kellermann
f2a3dfd700
decoder/ffmpeg: add missing nullptr checks
...
Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1490
2022-04-26 20:51:57 +02:00
Max Kellermann
9e1b24f3a1
input/{Async,Buffering,Thread}InputStream: set VMA name
2022-04-26 20:45:49 +02:00
Max Kellermann
58a345d346
MusicBuffer: set VMA name
...
Shows the name in /proc/PID/maps, e.g.:
7fa57b000000-7fa57c000000 rw-p 00000000 00:00 0 [anon:MusicBuffer]
2022-04-26 20:44:36 +02:00
Max Kellermann
7ed67d216b
util/HugeAllocator: add SetName()
2022-04-26 20:44:36 +02:00
Max Kellermann
3ae660ca90
system/VmaName: new library
2022-04-26 20:31:56 +02:00
Max Kellermann
a742e1fc71
util/PeakBuffer, ...: use [[gnu::]] attributes
2022-04-26 20:31:56 +02:00
Max Kellermann
85f9863e0a
meson.build: always enable Wave encoder for Snapcast
...
Even if the "wave_encoder" option is disabled (and no other encoder
plugins are enabled), forcefully enable the Wave encoder (if Snapcast
is enabled).
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1500
2022-04-26 20:13:43 +02:00
Max Kellermann
ce88dee14d
Merge branch 'v0.23.x'
2022-04-26 18:30:34 +02:00
Max Kellermann
9659d19718
lib/upnp/Init: use if with initalizer
2022-04-26 17:58:33 +02:00
Rosen Penev
50d35c9677
upnp: use UpnpInit2 always
...
libupnp 1.14 removes the non 2 function. Fixes compilation there.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1499
2022-04-26 17:57:48 +02:00
Arsen Arsenović
35dbc1a90c
mixer,output: prevent setting volume before outputs are really enabled
...
Previous versions of MPD would call SetVolume on enabled outputs before
they are ready, causing all of MPD to crash. Checking the really_enabled
flag prevents this, though it also prevents setting volume before the
player starts.
Before (with the PipeWire output):
[i] ~$ mpc clear
volume: 81% repeat: off random: off single: off consume: off
[i] ~$ systemctl --user restart mpd.service
[i] ~$ mpc volume 100
MPD error: Connection closed by the server
[i] ~ 1 $
After:
[i] ~$ # mpd is freshly started w/o anything in the queue
[i] ~$ mpc
volume:100% repeat: off random: off single: off consume: off
[i] ~$ mpc volume 80
MPD error: problems setting volume
[i] ~ 1 $ mpc
volume:100% repeat: off random: off single: off consume: off
[i] ~$
2022-04-26 17:45:29 +02:00
Arsen Arsenović
c7a4355153
outputs/pipewire: fix ParamChanged incorrectly setting volume
...
Previous versions of MPD would, on parameter change, set the PipeWire
volume before clearing the restore_volume flag, causing the call to
short circuit and do nothing. Instead, clear the flag before the call.
2022-04-26 17:44:19 +02:00
Max Kellermann
33a84a8ca2
output/shout: use shout_set_metadata_utf8()
2022-04-26 17:41:21 +02:00
Max Kellermann
1d04490ed3
output/shout: use shout_set_content_format()
2022-04-26 17:38:43 +02:00
Max Kellermann
4a30c2d79c
output/shout: use shout_set_meta()
2022-04-26 17:24:49 +02:00
Max Kellermann
83072d6b9c
output/shout: pass reference to Setup()
2022-04-26 16:49:18 +02:00
Max Kellermann
c779fc37eb
output/shout: declare minimum version 2.4.0
...
This version was released 7 years ago, and it's reasonable to require
at least this version.
2022-04-26 16:46:36 +02:00
Max Kellermann
e08c13ad7e
output/shout: add "noexcept"
2022-04-26 15:57:03 +02:00
Max Kellermann
2c82a6b2e0
output/shout: handle shout_metadata_add() errors
...
Fixes -Wunused-result
2022-04-26 15:56:55 +02:00
Andreas Ziegler
ee39af3419
fix typo in comment
2022-04-24 04:14:17 +00:00
aeolio
3882a5a263
src/lib/icu: fix iconv() detection when libiconv is installed
2022-04-20 16:10:39 +02:00
Max Kellermann
a360475c7b
Merge branch 'v0.23.x'
2022-03-26 06:49:51 +01:00
Vitaly Ostrosablin
ac06088948
Make volume changes to apply to disabled software mixers.
...
Move audio output state check ahead of mixer check and force volume
applying even for disabled software mixed outputs.
This fixes incorrect software mixer volume that used to occur when
volume was changed while output being disabled.
This is easily reproduced with following sequence of commands on
multi-output software mixed MPD setup.
mpc volume 38; mpc disable 3; mpc volume 88; mpc enable 3
On current MPD, following commands would result in output 3 playing at
volume 38, while all other enabled outputs would play at volume
88. Moreover, global volume would display average of outputs real
volumes. In my case, it's 75.
After applying this patch, following commands would produce expected
behavior. All outputs play at expected (88) volume. And volume is
correctly displayed as 88.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1423
Signed-off-by: Vitaly Ostrosablin tmp6154@yandex.ru
Signed-off-by: Vitaly Ostrosablin <tmp6154@yandex.ru>
2022-03-26 06:29:18 +01:00
Max Kellermann
a757eebfbb
decoder/OggSyncState: allow skipping up to 64 kB after seek
...
This is more of what we did in commit 70bd35abe2
because it turns
out there are Ogg-Opus files with pages larger than 40 kB.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1487
2022-03-16 16:54:50 +01:00
Tim Sweet
3a3f605a56
decoder/opus: Implement bitrate calculation
2022-03-15 10:34:23 +01:00
Max Kellermann
407fa2720a
release v0.23.6
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmIvgaMQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEpzhEACOJOyOjtmeuu7Uc147O4YzL/7g5PEZMKHI
yB/H2QOWnbgAKh+8AFT2YudR89mIXslfuIILRg8/NYkEFgNCrkBQETWsATPyqrCr
rYJxPtjlC2fAlKkl9XM+qL1WMATIhvRVD9SZajZKwa+9H1y5mZGlMBWdzdxaJoUY
bhlu7fYvyRMXsStUncyYfsKsuHyibq3d4Pk/jegZhJeMI9/MOKdjc9GJE6Rzz0cT
dWGqpfBJ/WMZ9aKXB3fh7WVtiIl/hr/5K1QizL10pwmJ5o/LBNKk7eEREbPUvNc6
S5BHBOyVYaqVTGZyaoF9XkMKv7qnKYNoD2g2H+J5cN87rMRI8DzY/MqUxmX0bCGc
jOQinMcQuL7zMvYx0ypKdTiMas2OG/RlKluOgzhNIvzkWYCxh9iCozm7Wl3qsvY5
uJEsaeIb/zgSmUC2637ltBE37lW/8m7RYWpuq82M2CnFx9oL6W3ah8SMm5ToBzYB
jHrN7h+YcKoIrFcZsYVTCbLzGQnQ2kmzsyGecDeCK9aP16gTkALZdpexn0oIzEKv
fNtNSU7MgYXLs0knrcBoQw0nQnH9ICuswqFiyr4jcFfqxbIw9mvHyLRIWnyhL9zj
XiYEr3SqnuVnmuLSgHlYk6g4zpYFLJEHo+/7IlEqTItXeAcsIhjn6B/NDyKVvYQa
Pfb1ORoumQ==
=jMu8
-----END PGP SIGNATURE-----
Merge tag 'v0.23.6'
release v0.23.6
2022-03-14 18:58:47 +01:00
Max Kellermann
2aed7378cc
TagAny: support CUE tracks
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1482
2022-03-14 18:42:31 +01:00
Max Kellermann
71cd6e6248
lib/xiph/meson.build: define FLAC__NO_DLL for static libFLAC build (Windows)
...
In libFLAC 0.3.4 (commit c9530118a4
), the "dllimport" check has been
changed from "_MSC_VER" to "_WIN32", and now the MPD build is affected
by it.
Defining FLAC__NO_DLL disables the use of "dllimport", which allows
linking properly to the static libFLAC build.
2022-03-14 15:08:59 +01:00
Max Kellermann
603bbe0afd
python/build/libs.py: update libnfs to 5.0.1
2022-03-14 14:52:24 +01:00
Richard Schorrig
aeaef85507
WasapiOutputPlugin pause bug fix
...
Wasapi output plugin won't start playing after being paused
The cause is that the scope guard in the WASAPI work thread
(WasapiOutputPlugin.cxx, function WasapiOutputThread::Work(), in the
while (true) loop) is set up too 'late' in the execution. There is one
condition ("if (data_in_frames >= buffer_size_in_frames)") when it is
hit, the loop will continue without executing the scope guard. This
scope guard is responsible for emptying the buffer again, and if the
buffer is not emptied, the above mentioned condition will stay true.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1451
2022-03-14 14:26:00 +01:00
nick black
ebae25d175
plugins/FfmpegIO: include libavutil/mem.h
...
ffmpeg from current git master no longer exposes
av_malloc() nor av_free() through other included
headers. directly include libavutil/mem.h to fix
compilation with (as-yet-unreleased) ffmpeg.
2022-03-14 14:11:31 +01:00
jcorporation
5ad1a01d7a
Remove bmp, tiff and add webp for coverimage filenames
...
- supporting bmp and tiff seems outdated
- webp is more widely used for coverimages
2022-03-14 14:09:23 +01:00
Max Kellermann
8f84e1befd
decoder/plugins/FfmpegIo: return AVERROR_EOF at end of file
...
This part of the AVIOContext API is not documented :-(
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1448
2022-03-14 14:00:28 +01:00
Max Kellermann
7293b32025
util/HexFormat: faster implementation without snprintf()
2022-03-14 12:18:52 +01:00
Max Kellermann
fed8f12863
input/plugins/QobuzClient: pass std::string_view to QueryStringBuilder()
2022-03-14 12:11:46 +01:00
Max Kellermann
9975905faf
output/PipeWire: initialize field "stream" in Open()
...
Must be initialized for the check in SetVolume().
2022-03-09 14:29:46 +01:00
Max Kellermann
8e99448819
lib/curl/Headers: make the comparison type "transparent"
2022-02-14 18:19:28 +01:00
Max Kellermann
1e548fb6e3
lib/curl/Headers: central type definition for the header map
2022-02-14 18:19:05 +01:00
Max Kellermann
fdc0329e64
archive/List: add option to disable archive plugins in mpd.conf
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1384
2022-02-14 17:54:21 +01:00
Max Kellermann
d3db0400b0
archive/List: convert pointer to reference
2022-02-14 16:43:44 +01:00
Max Kellermann
ab5b6f83fd
queue/Print: support sorting by priority
2022-02-14 14:10:33 +01:00
Max Kellermann
2172aaf1ce
song/PrioritySongFilter: new filter
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1412
2022-02-14 14:06:37 +01:00
Max Kellermann
c68dbc4e5c
queue/Queue: add method GetLight()
2022-02-14 13:33:34 +01:00
Max Kellermann
ec961f26e9
song/DetachedSong: add API docs
2022-02-14 13:27:52 +01:00
Max Kellermann
c3be961ccf
queue/Print: implement sorting
2022-02-14 13:07:13 +01:00
Max Kellermann
166ce0da5a
db/VHelper: move CompareTags() to tag/Sort.cxx
2022-02-14 12:37:05 +01:00
Max Kellermann
edbaea8df2
db/Selection: refactor IsEmpty() to IsFiltered()
2022-02-14 09:21:32 +01:00
Max Kellermann
af3a625f64
time/Convert: move GetTimeZoneOffset() to Zone.cxx
2022-02-14 09:21:10 +01:00
Max Kellermann
11d24a583d
command/queue: "playlistfind"/"playlistsearch" have a "window" parameter
2022-02-14 09:12:19 +01:00
Max Kellermann
e9e3d8c57c
queue/Selection: add "window" field
2022-02-14 09:12:18 +01:00
Max Kellermann
5588291a35
queue/Selection: wrap SongFilter in a new struct
2022-02-14 09:12:18 +01:00
Max Kellermann
4b41e766c6
queue/Queue{Save,Print}: remove redundant "Queue" prefix from file name
2022-02-14 09:12:06 +01:00
Max Kellermann
ad4cf79cc9
tag: new tag "Mood"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1435
2022-02-12 07:50:18 +01:00
dgcampea
4f3828237a
Fix DSCP LE value
...
Correct value is 0x04 since we need to account for the 2 ECN bits.
2022-02-02 16:29:01 +00:00
Max Kellermann
946cf25732
Merge branch 'v0.23.x'
2022-01-26 14:44:37 +01:00
Max Kellermann
86e9ed5f3a
decoder/opus: fix "readpicture" on Opus files
...
Don't return early from ScanOpusTags() if only
TagHandler::WantPicture() is set.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1413
2022-01-26 14:43:45 +01:00
Max Kellermann
be72d45356
output/httpd: add config option "dscp"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1401
2022-01-11 20:31:52 +01:00
Max Kellermann
219c416a1e
event/ServerSocket: rename ip_tos to dscp_class and support IPv6
2022-01-11 20:31:52 +01:00
Max Kellermann
16f7ec9950
net/DscpParser: new library
2022-01-11 20:31:52 +01:00
Max Kellermann
d79bf853b1
output/httpd: make configuration fields const
2022-01-10 22:59:50 +01:00
Max Kellermann
1ae6378d85
event/ServerSocket: add ip_tos setting
2022-01-10 22:59:50 +01:00
Max Kellermann
089a843abd
net/SocketDescriptor: add method SetIntOption()
2022-01-10 21:36:15 +01:00
Max Kellermann
aea4d3c4b0
lib/zlib/GunzipReader: use std::size_t
2022-01-10 16:59:13 +01:00
aeolio
3856224df9
lib/alsa/Error: add missing #include
2021-12-15 11:14:38 +01:00
aeolio
6d4bedfc56
lib/alsa/Error: fix typo
2021-12-15 11:14:34 +01:00
Max Kellermann
dda0dfc140
lib/curl/Request: move code from SetupEasy() to Setup.cxx
2021-12-08 20:03:30 +01:00
Max Kellermann
e0f56b9e2d
lib/curl/Request: move code to class CurlResponseHandlerAdapter
2021-12-08 19:51:54 +01:00
August2111
3c3c3eeeca
MSVC: use winsock2.h instead of sys/time.h for struct timeval
2021-12-08 19:45:03 +01:00
Max Kellermann
31c7151580
time/Calendar: add DaysInYear()
2021-12-08 19:44:31 +01:00
Max Kellermann
50a617764a
lib/curl/Handler: fix typo
2021-12-08 19:41:39 +01:00
Max Kellermann
7d67c87a47
io/FileReader: use std::size_t
2021-12-08 19:40:22 +01:00
Philipp Wollschlegel
c072902f23
io/FileOutputStream: merge win32 function Cancel
...
Win32 had a separate implementation for FileOutputStream::CANCEL Logic
was added to the other platform function, but forgotten in this one.
This merges the functions into one, as only the call for file deletion
is platform specific.
2021-12-08 19:35:11 +01:00
Max Kellermann
5ad4f3c54b
system/EventPipe: include cleanup
2021-12-08 19:32:06 +01:00
Max Kellermann
0b6055954d
thread/AsyncWaiter: new class
...
Merges some redundant code.
2021-12-08 19:26:57 +01:00
Max Kellermann
80c177e9a0
io/BufferedOutputStream: add missing char* cast
2021-12-07 12:07:13 +01:00
Max Kellermann
cdcef49eef
lib/curl/Request: add constructor with CurlEasy parameter
2021-12-07 12:01:09 +01:00
Max Kellermann
9e18aafccc
lib/curl/Request: use std::size_t
2021-12-07 12:00:12 +01:00
Max Kellermann
f7346c1d78
lib/curl/Request: move code to SetupEasy()
2021-12-07 11:57:42 +01:00
Max Kellermann
b709401814
lib/curl/Request: add API docs
2021-12-07 11:56:45 +01:00
Max Kellermann
4074db5f50
io/BufferedReader: use std::size_t
2021-12-07 11:54:11 +01:00
Max Kellermann
8c6bc02bf7
io/BufferedOutputStream: use std::byte
2021-12-07 11:47:45 +01:00
Max Kellermann
35c11afd54
player/Thread: add option "mixramp_analyzer"
2021-12-06 23:06:08 +01:00
Max Kellermann
c884e2f285
config/PlayerConfig: default buffer size is 8 MB
...
Computers are getting more and more RAM, and 8 MB is rarely ever
noticable, but allows longer MixRamp-assisted cross-fading.
2021-12-06 23:05:45 +01:00
Max Kellermann
b6ba17a865
Merge branch 'v0.23.x'
2021-12-06 21:32:48 +01:00
Max Kellermann
713c7585b5
pcm/MixRampAnalyzer: a MixRamp implementation
2021-12-06 21:09:28 +01:00
Max Kellermann
f12c25b7ae
pcm/ReplayGainAnalyzer: new library
2021-12-06 21:06:19 +01:00
Max Kellermann
2240327286
ReplayGainInfo: move to tag/
2021-12-06 09:28:36 +01:00
Rosen Penev
4e276256c0
more braced init list conversion
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-12-06 09:16:04 +01:00
Max Kellermann
866e7ff3ce
config/PlayerConfig: move code to functions
2021-12-06 09:14:36 +01:00
Max Kellermann
2cafbb2aba
player/CrossFade: move code to CanCrossFade()
2021-12-03 23:45:34 +01:00
Max Kellermann
b78c64376f
player/Thread: move code to CheckCrossFade()
2021-12-03 23:32:41 +01:00
Max Kellermann
2518612b1b
player/CrossFade: add method IsMixRampEnabled()
2021-12-03 23:22:55 +01:00
Max Kellermann
dda521a150
ReplayGain{Config,Global}: move to config/
2021-12-03 23:08:16 +01:00
Max Kellermann
95a155b10d
Partition: pass configuration as struct
2021-12-03 23:03:41 +01:00
Max Kellermann
4e9b88559b
SingleMode: convert "pure" to "const"
2021-12-03 16:09:34 +01:00
Max Kellermann
3452682a42
IcyMetaDataParser: move to tag/
2021-12-03 16:07:39 +01:00
Max Kellermann
9262b24504
AudioCompress: move to pcm/
2021-12-03 16:04:59 +01:00
Max Kellermann
a5fa43b526
fs/io: move to io/
2021-12-03 14:35:41 +01:00
Max Kellermann
8681a3d74c
replace TextFile references with LineReader
2021-12-03 14:22:56 +01:00
Max Kellermann
f9c4d88b12
fs/io/TextFile: add interface LineReader
2021-12-03 14:20:29 +01:00
Max Kellermann
799032505e
io/uring/Queue: add method RequireSubmitEntry()
...
Fixes assertion failure when the submit queue is empty.
2021-12-03 13:58:39 +01:00
Max Kellermann
c8f174ac92
io/uring/Operation: disallow copying
2021-12-03 13:52:04 +01:00
Max Kellermann
047e169f3e
util/BindMethod: merge MakeBind{Method,Function}Wrapper(), they are identical now
2021-12-03 13:51:56 +01:00
Max Kellermann
687327c9e8
util/BindMethod: merge structs {Method,Function}SignatureHelper into one
2021-12-03 13:51:56 +01:00
Max Kellermann
26dc37bd76
util/BindMethod: merge structs {Method,Function}WrapperGenerator into one
2021-12-03 13:51:55 +01:00
Max Kellermann
c693e4aa64
util/BindMethod: remove unused struct MethodWithSignature
2021-12-03 13:51:55 +01:00
Max Kellermann
acab731fef
util/BindMethod: simplify MakeBindFunctionWrapper()
2021-12-03 13:51:55 +01:00
Max Kellermann
7e4ba3cb72
util/BindMethod: add MethodSignatureHelper::function_pointer
2021-12-03 13:51:55 +01:00
Max Kellermann
172c4d9c7d
util/BindMethod: remove unnecessary template arguments from BindMethodWrapperGenerator
2021-12-03 13:51:55 +01:00
Max Kellermann
bd5f6cbc7b
util/BindMethod: simplify more templates using "auto" template arguments
2021-12-03 13:51:55 +01:00
Max Kellermann
6fcd1c734b
util/BindMethod: eliminate struct BindMethodWrapperGenerator2
2021-12-03 13:51:55 +01:00
Max Kellermann
eca097dbfb
util/BindMethod: simplify more templates using "auto" template arguments
2021-12-03 13:51:55 +01:00
Max Kellermann
51ffafa011
util/BindMethod: use std::remove_reference_t
2021-12-03 13:51:25 +01:00
Max Kellermann
8dca602346
util/BindMethod: simplify BindMethod()
2021-12-03 13:51:18 +01:00
Max Kellermann
0ed24f3a05
util/IntrusiveList: disallow copying IntrusiveListHook
2021-12-03 13:50:05 +01:00
Max Kellermann
1c69913eca
decoder/flac: submit MixRamp only if there is actual data
2021-12-01 17:58:51 +01:00
Max Kellermann
cb5c6259fd
decoder/mad: submit MixRamp only if there is actual data
...
Fixes MixRamp failures when a MP3 file has two ID3 tags, one of them
without MixRamp.
2021-12-01 17:19:53 +01:00
Max Kellermann
bf287fefb5
decoder/mad: move parse_id3_mixramp() to tag/Id3MixRamp.cxx
2021-12-01 17:11:36 +01:00
Max Kellermann
20bf1d68e6
MixRampInfo: move to tag/
2021-12-01 17:09:02 +01:00
Max Kellermann
9bc4c168fd
tag/MixRamp: rename to MixRampParser.cxx
2021-12-01 17:07:53 +01:00
Max Kellermann
a45949b597
tag/MixRamp: [[gnu::...]] attributes
2021-12-01 15:48:33 +01:00
Max Kellermann
6009d4abab
tag/MixRamp: use std::string_view
2021-12-01 15:47:54 +01:00
Max Kellermann
16fb843c9b
tag/MixRamp: fix typo which broken MixRamp
...
Fixes regression by commit 8e0d810968
which is 2 years old, and nobody
noticed. D'oh, how embarassing!
2021-12-01 15:46:31 +01:00
Max Kellermann
933a1a41e6
lib/upnp/Discovery: use InjectEvent instead of DeferEvent
...
Fixes regression by commit 774b4313f2
2021-11-30 18:03:27 +01:00
August2111
1ff8626716
MSVC util/StringAPI.hxx add usage of MSVC compiler
2021-11-26 17:30:17 +01:00
Max Kellermann
c30466b84a
net/IPv4Address: add method GetPortBE()
2021-11-26 16:25:43 +01:00
Max Kellermann
868f1a4431
net/UniqueSocketDescriptor, ...: include <utility> instead of <algorithm>
...
Since C++11, std::swap() lives in <utility>.
2021-11-26 16:25:29 +01:00
Max Kellermann
05f529fffd
util/StringStrip: use [[gnu::...]] attributes
2021-11-26 16:24:55 +01:00
Rosen Penev
f22cf02ed8
fix wrong namespace name
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-26 08:08:45 +01:00
Rosen Penev
5b51d0f733
use some auto
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-26 08:08:45 +01:00
Rosen Penev
e03f82636a
const reference conversion
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-23 12:33:03 -08:00
Rosen Penev
d53d85bd79
remove unused includes
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-23 12:33:03 -08:00
Max Kellermann
4682ae0898
command/database: support relative offsets for "searchadd"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1337
2021-11-23 12:17:32 +01:00
Max Kellermann
6f83bdd6f3
Merge branch '1' of git://github.com/neheb/MPD
2021-11-23 10:39:07 +01:00
Rosen Penev
9bcd425a85
array conversions
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-23 01:38:10 -08:00
Max Kellermann
ec917f70d2
Merge remote-tracking branches 'neheb/2' and 'neheb/3'
2021-11-23 09:23:43 +01:00
Rosen Penev
40ce4eeb43
use cinttypes header
...
stdint.h is deprecated.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-22 23:30:36 -08:00
Rosen Penev
29ae84e199
manual braced init
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-22 23:30:04 -08:00
Rosen Penev
250011f016
return by braced init list
...
shorter
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-22 23:28:08 -08:00
Max Kellermann
dcb5ca203c
db/DatabasePlaylist: increment only one variable
...
Fixes "searchaddpl" bug emitting bogus error "Bad position".
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1338
2021-11-22 20:47:34 +01:00
Max Kellermann
77df5a8f24
lib/pcre: migrate to PCRE2
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1352
2021-11-22 19:32:45 +01:00
Max Kellermann
f74996c02f
Merge remote-tracking branches 'neheb/1', 'neheb/2', 'neheb/3', 'neheb/4' and 'neheb/5'
2021-11-20 07:55:24 +01:00
Max Kellermann
eea2d35d3a
util/AllocatedString, ...: add missing include for std::exchange()
...
Fixes building with GCC 12.
2021-11-19 16:06:20 +01:00
Max Kellermann
d94e8bd82d
queue/IdTable: include cleanup
2021-11-19 16:03:09 +01:00
Max Kellermann
b0c92e1a34
queue/IdTable: lazy-initialize the "data" array
...
With large "max_playlist_length" settings, the "data" array can be
very large, and initializing it during MPD startup causes page faults,
resulting in allocation of physical RAM. This commit postpones the
initialization until the queue is really large, to avoid wasting
memory.
2021-11-19 16:00:39 +01:00
Max Kellermann
ead5bcf048
queue/IdTable: make size const
2021-11-19 15:51:10 +01:00
Shen-Ta Hsieh
e783c2bd2c
util/LazyRandomEngine: use std::optional to avoid allocation
...
Signed-off-by: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
2021-11-14 03:53:42 +08:00
Rosen Penev
837fc98638
use const references
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:18:33 -08:00
Rosen Penev
5deca66fdc
add various nodiscard
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:17:26 -08:00
Rosen Penev
cfe2dd4147
use nullptr
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:16:19 -08:00
Rosen Penev
00f8d65a17
remove std::move
...
clang-tidy reports this is trivially copyable and thus std::move has no
effect.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:15:21 -08:00
Rosen Penev
4e0e4c00bf
treewide: replace lock_guard with scoped_lock
...
SonarLint reports the latter to be better:
std::scoped_lock basically provides the same feature as std::lock_guard,
but is more generic: It can lock several mutexes at the same time, with a
deadlock prevention mechanism (see {rule:cpp:S5524}). The equivalent code
to perform simultaneous locking with std::lock_guard is significantly more
complex. Therefore, it is simpler to use std::scoped_lock all the time,
even when locking only one mutex (there will be no performance impact).
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 17:13:03 -08:00
Max Kellermann
a8c77a6fba
Merge branch '1' of git://github.com/neheb/MPD
2021-11-11 10:33:17 +01:00
Rosen Penev
31aa6d0c4f
use auto with make_unique
...
C arrays can be used with make_unique in C++17.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 01:33:03 -08:00
Max Kellermann
d051c4931d
Merge branch '2' of git://github.com/neheb/MPD
2021-11-11 10:32:45 +01:00
Rosen Penev
94b0baceb0
convert address_family_ranking to std::array
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-11-11 01:27:31 -08:00
Max Kellermann
3464497880
command/database: add optional position parameter to "searchaddpl"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1328
2021-11-11 09:52:49 +01:00
Max Kellermann
651f57bced
command/playlist: save only if at least one song was added
2021-11-11 09:50:31 +01:00
Max Kellermann
b4e72aba6c
command/playlist: move code to SearchInsertIntoPlaylist()
2021-11-11 09:40:41 +01:00
0xC0ncord
061dd2dfef
output/plugins: fix build error with clang and -stdlib=libc++
...
This fixes this build error observed with clang and -stdlib=libc++:
../mpd-0.23.3/src/output/plugins/PipeWireOutputPlugin.cxx:661:55: error: implicit instantiation of undefined template 'std::array<std::byte, 64>'
std::array<std::byte, MAX_CHANNELS * MAX_INTERLEAVE> buffer;
^
/usr/include/c++/v1/__tuple:219:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
^
2021-11-10 15:35:56 -05:00
Max Kellermann
5f4ec7de5b
decoder/ffmpeg, lib/ffmpeg: make AVCodec pointers "const"
...
For libavcodec 59 support.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1333
2021-11-09 21:09:14 +01:00
Max Audron
6f81bb4b09
upnp: add option to configure interface for db plugin
...
Add an option to the UPnP database plugin to configure which interface
is used by upnp to discover servers.
upnp by default selects the first interface that is not loopback, which
in some cases might not be the desired interface. For example if wanting
to access a DLNA server over a VPN connection.
The "interface" option can now be set to the name of the desired
interface to achieve this.
The default behaviour remains unchanged.
2021-11-08 23:04:07 +01:00
Max Audron
4ed60a5711
upnp: expose interface configuration on UpnpInit2()
...
Adds the Interface Name as an argument to the *Init functions to make it
possible to select which interface is used by upnp to detect servers.
Currently "nullptr" is passed in to let the upnp library select an
interface, as before.
2021-11-08 22:53:01 +01:00
Max Kellermann
a4e4217204
Main: ignore the "pid_file" setting if started as systemd service
...
Commit 552c30eae
caused problems for those people who still had a
"pid_file" setting (even though that is obsolete with systemd),
because now /run/mpd is owned by root:root (our mpd.service has no
User=mpd directive, so systemd starts MPD as root).
To work around this problem, and to be able to keep
RuntimeDirectory=mpd (which solved a problem of other MPD users), the
best compromise seems to just ignore the "pid_file" setting when it is
of no use.
2021-11-05 09:02:56 +01:00
Max Kellermann
8754d705a1
CommandLine: rename struct options
2021-11-05 08:57:12 +01:00
Max Kellermann
23d4a2d6a5
Main: pass struct options by reference
2021-11-05 08:56:05 +01:00
Max Kellermann
ce77b148d9
CommandLine: add option --systemd
...
This way, MPD can reliably detect whether it was started as systemd
service, which is better than checking sd_booted(), which only checks
whether systemd manages all services, but still MPD could be started
manually.
2021-11-05 08:51:49 +01:00
Max Kellermann
3413b1aeb4
output/alsa: add option thesycon_dsd_workaround
2021-11-04 17:55:53 +01:00
Max Kellermann
356d13e9dd
lib/alsa/HwSetup: add missing include
2021-11-04 17:55:15 +01:00
Max Kellermann
5d0941476a
lib/alsa/Error: a std::system_error category for libasound errors
2021-11-04 14:59:00 +01:00
Max Kellermann
5ff0bbd0f8
lib/fmt/AudioFormatFormatter: add formatter for SampleFormat
2021-11-04 14:55:01 +01:00
Max Kellermann
14b3c0f0af
event/Loop: destruct the Uring::Manager in the destructor before assert()
...
Fixes assertion failure when the EventLoop gets destructed before
Run() was ever called.
Fixes https://bugs.debian.org/998310
2021-11-03 18:32:14 +01:00
Max Kellermann
056514d598
output/snapcast: reset unflushed_input after successful read
...
With the "wave" encoder, this has no effect, but it's more correct.
2021-10-31 16:35:42 +01:00
Max Kellermann
9a21bdfd6a
output/snapcast: implement Pause()
...
This uncomments the code which had been present already in the first
Snapcast commit (copied from the "httpd" output plugin), but I
commented it because I did not know whether I needed to send silence
samples to all Snapcast clients.
As a side effect, this fixes playback when no Snapcast client is
connected; this was broken because Pause() always returned a positive
value when there were no clients.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1310
2021-10-31 16:26:29 +01:00
Max Kellermann
03f99dd26e
db/update/Walk: use GetFilenameSuffix() instead of uri_get_suffix()
...
Unlike GetFilenameSuffix(), uri_get_suffix() removes the query string
first, which breaks file names with question marks in the name.
Therefore, uri_get_suffix() shall only be applied to remote URIs.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1316
2021-10-31 13:18:24 +01:00
Max Kellermann
bfb1b641f9
db/update/InotifyUpdate: fix use-after-free bug
...
Regression by commit 2d8847f428
2021-10-28 13:39:38 +02:00
Max Kellermann
dcd19c0592
config/Path: use StringView::Split()
2021-10-26 12:55:01 +02:00
Max Kellermann
109159e0f7
Permission: use StringView::Split()
2021-10-26 12:25:47 +02:00
Max Kellermann
409b877eea
output/ao: include cleanup
2021-10-26 12:20:18 +02:00
Max Kellermann
c5bf7948ff
fs/StandardDirectory: use the RUNTIME_DIRECTORY environment variable
2021-10-26 09:30:16 +02:00
Max Kellermann
b9f7127691
fs/StandardDirectory: add GetAppRuntimeDir()
2021-10-26 09:30:16 +02:00
Max Kellermann
1e6f5f012c
fs/StandardDirectory: add GetUserRuntimeDir()
2021-10-26 09:30:16 +02:00
Max Kellermann
225d85fd9b
fs/StandardDirectory: use "if" with initializer
2021-10-26 09:29:57 +02:00
Max Kellermann
1bb22f118d
fs/StandardDirectory: add more pure/const attributes
2021-10-26 09:04:20 +02:00
Max Kellermann
48e8a26813
command/playlist: allow range in playlistdelete
2021-10-25 12:23:37 +02:00
Max Kellermann
ade847bc89
PlaylistFile: fold spl_move_index() into handle_playlistmove()
2021-10-25 12:13:45 +02:00
Max Kellermann
a6173e0eae
command/playlist: add position parameter to "playlistadd"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1106
2021-10-25 12:10:47 +02:00
Max Kellermann
258ecb764f
PlaylistFile: add class PlaylistFileEditor
2021-10-23 13:54:50 +02:00
Max Kellermann
6f595e9abb
command/queue: add optional position parameter to "add"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1285
2021-10-23 13:12:44 +02:00
Max Kellermann
35c4c7e8bf
command/queue: move #ifdef out of AddDatabaseSelection()
2021-10-23 13:09:04 +02:00
Max Kellermann
293ed924d1
command/queue: pass Partition to AddDatabaseSelection()
2021-10-23 13:06:31 +02:00
Max Kellermann
c8121176b3
output/alsa: add option "stop_dsd_silence" to work around DSD DAC noise
2021-10-23 12:25:32 +02:00
Max Kellermann
ee270f9b00
meson.build: log_dep is only needed internally
2021-10-23 12:08:43 +02:00
Max Kellermann
bf1d77a4d8
output/alsa: un-inline several methods
2021-10-23 12:02:27 +02:00
Max Kellermann
a9344fafe9
lib/alsa/AllowedFormat: use StringView::RemoveSuffix()
2021-10-23 11:43:31 +02:00
Max Kellermann
b8890726f2
lib/alsa/AllowedFormat: use std::string_view
2021-10-23 11:42:30 +02:00
Max Kellermann
0f84332654
output/alsa: make "mode" const
2021-10-23 11:39:59 +02:00
Max Kellermann
46c82259f7
output/Control: make config fields const
2021-10-22 20:22:22 +02:00
Max Kellermann
2d03823283
output/Control: fold Configure() into the constructor
2021-10-22 20:21:58 +02:00
Max Kellermann
bba144eca5
output/Control: use C++ initializers
2021-10-22 20:21:43 +02:00
Max Kellermann
9af73dad93
output/Multiple: remove unused method Add()
2021-10-22 20:21:35 +02:00
Max Kellermann
f0d66bf6a6
output/Control: pass rvalue reference to move constructor
2021-10-22 20:14:37 +02:00
Max Kellermann
5ad53a7554
output/Thread: remove duplicate code by calling InternalCloseOutput()
2021-10-22 19:54:47 +02:00
Max Kellermann
7b2e3331f2
output/Filtered: improve API docs
2021-10-22 19:54:38 +02:00
Max Kellermann
e16109330d
input/last: clear "uri" in OnCloseTimer()
...
Without clearing the "uri" field, the next Open() call attempts to
reuse the old InputStream, but it has already been closed, so Open()
always returns nullptr.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1300
2021-10-22 12:45:18 +02:00
Max Kellermann
72621531e0
protocol/Result: convert to Client method
2021-10-22 11:55:39 +02:00
Max Kellermann
0a48146efc
client/Client: pass std::string_view to Write()
...
Almost all callers have string literal, and the length is known at
compile time.
2021-10-22 11:54:14 +02:00
Max Kellermann
0c4bf12bfd
player/CrossFade: fix inverted check and wrong variable
...
The inverted check was introduced by commit 46d00dd85f
, and commit
8ad17d25ef
added a check for the wrong variable. D'oh!
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1303
2021-10-22 11:49:38 +02:00
Max Kellermann
b8e0855ef3
output/pipewire: obey PipeWire's DSD bit order and interleave
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1297
2021-10-21 21:15:16 +02:00
Max Kellermann
6467502b9d
output/pipewire: restore SampleFormat::DSD after ToPipeWireAudioFormat() call
2021-10-21 21:15:13 +02:00
Max Kellermann
15b67f20e5
output/pipewire: un-inline ParamChanged()
2021-10-21 20:11:22 +02:00
Max Kellermann
0825179f00
output/pipewire: add local reference variables
2021-10-21 20:02:59 +02:00
Max Kellermann
97211d0aad
output/pipewire: rename field "buffer" to "pod_buffer"
2021-10-21 20:02:32 +02:00
Max Kellermann
029c499bfa
output/pipewire: use std::fill_n()
2021-10-21 20:01:44 +02:00
Max Kellermann
0ba867ec16
output/pipewire: use MAX_CHANNELS, not SPA_AUDIO_MAX_CHANNELS
...
MPD supports only 8 channels, so MAX_CHANNELS is enough, the array
doens't need to be SPA_AUDIO_MAX_CHANNELS (which is 64).
2021-10-21 20:01:01 +02:00
Max Kellermann
866d147122
output/pipewire: make field "channels" unsigned
2021-10-21 19:59:48 +02:00
Max Kellermann
32851d1bc7
output/pipewire: DSD support
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1297
2021-10-20 11:39:54 +02:00
Max Kellermann
78257408b4
output/pipewire: report errors from the "state_changed" callback
2021-10-20 11:24:57 +02:00
Max Kellermann
f447b7615e
output/pipewire: check pw_stream_connect() errors
2021-10-20 11:24:51 +02:00
Max Kellermann
1f780b7209
output/Thread: log exception details
2021-10-20 11:24:51 +02:00
Max Kellermann
04bf8a6b1a
output/pipewire: fix memory leak in SendTag()
2021-10-20 10:16:36 +02:00
Max Kellermann
c4c64854d4
output/pipewire: evaluate errno after libpipewire function calls
2021-10-20 10:13:27 +02:00
Max Kellermann
17562dc90b
output/pipewire: remove misplaced noexcept
2021-10-20 09:41:27 +02:00
Max Kellermann
7b24316734
output/pipewire: fix coding style
2021-10-20 09:41:10 +02:00
Max Kellermann
5fab107fd3
lib/nfs/FileReader: use the thread-safe InjectEvent
...
.. instead of DeferEvent, which is not thread-safe. This caused
various playback problems, which was initially caused by the
DeferEvent/InjectEvent split in commit 774b4313f2
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1298
2021-10-20 09:38:09 +02:00
Max Kellermann
f31920e092
event/Loop: add thread assert() to AddDefer()
...
Currently fails in class NfsFileReader due to
https://github.com/MusicPlayerDaemon/MPD/issues/1298
2021-10-20 09:26:27 +02:00
Max Kellermann
eb111a10e7
output/pipewire: remove redundant prefix and newline from log message
2021-10-19 14:38:37 +02:00
Nicolai Syvertsen
5ccf78855d
Implement SendTag for PipeWire output plugin
2021-10-19 14:31:40 +02:00
Max Kellermann
fd5a3b5880
client/Response: reimplement Error() without FmtError()
...
With libfmt versions older than 7, this leads to an endless recursion
between Error() and FmtError(), resulting in a crash due to stack
overflow. D'oh!
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1295
2021-10-19 13:40:11 +02:00
Max Kellermann
6120c1360c
neighbor/Glue: remove unreachable "throw" statement
...
Should have been removed by commit a8087dc12c
2021-10-19 13:40:11 +02:00
Max Kellermann
a8087dc12c
neighbor/Glue: mention failed plugin name in error message
2021-10-19 13:29:00 +02:00
Max Kellermann
070c03dbf7
event/Thread, ...: fix printf->libfmt remains
2021-10-19 13:19:07 +02:00
Max Kellermann
4f1e79b6b8
filter/ReplayGain: emit "mixer" event when replay gain changes volume
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1294
2021-10-19 10:03:21 +02:00
Max Kellermann
aa9933c0b5
output/pipewire: add noexcept
2021-10-19 08:58:50 +02:00
Max Kellermann
0697d1f859
output/pipewire: include cleanup
2021-10-19 08:57:33 +02:00
Nicolai Syvertsen
b941a7df83
Implement volume updates for pipewire output
2021-10-19 00:01:45 +02:00
Max Kellermann
31151cec3c
command/playlist: "load" supports relative positions
...
This commit also increases the PROTOCOL_VERSION so clients can detect
the availability of the feature.
2021-10-18 22:08:22 +02:00
Max Kellermann
07e8c338df
command/queue: move position parameter functions to separate library
2021-10-18 22:07:04 +02:00
Max Kellermann
b22d7218aa
command/player, ...: use decimal notation
...
During the libfmt migration, I converted "%1.3f" to just "{:1.3}"
without the "f" suffix, but libfmt defaults to scientific notation,
which can break some MPD clients.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1291
2021-10-18 16:54:53 +02:00
Max Kellermann
d5be8c74b0
output/pipewire: attempt to change the graph sample rate
...
Requires PipeWire 0.3.32.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1283
2021-10-18 16:46:23 +02:00
Max Kellermann
c112cb60da
output/snapcast: fix typo which caused "Failed to get chunk"
...
This bug caused a 9 second offset in all time stamps. Due to that,
the Snapcast server thought the chunks are too old and discarded them.
Fixes https://github.com/MusicPlayerDaemon/MPD/discussions/1287
2021-10-18 16:40:11 +02:00
Max Kellermann
907af2ad02
Permission: refactor getPermissionFromPassword() to return std::optional
...
This replaces the output parameter (which is bad API design). As a
side effect, it fixes the bad [[gnu::pure]] attribute added by commit
a636d2127
which caused optimizing compilers to miscompile calls to
that function. "Pure" functions can be assumed to have no output
arguments, so the compiler can assume the function doesn't modify
them.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1282
2021-10-17 19:58:50 +02:00
Thomas Zander
6a2e7bbc02
protocol/ArgParser.cxx: Add missing #include <stdio.h>
...
Fixes a build problem on platforms where stdio.h is not included
transitively. snprintf() is defined in stdio.h.
2021-10-16 17:38:07 +02:00
Max Kellermann
771c46032f
meson.build: add missing libfmt dependencies
...
Fixes https://github.com/MusicPlayerDaemon/MPD/discussions/1281
The problem occurred when there was libfmt-dev installed, but it was
too old (e.g. on Debian Buster), and Meson used the wrap fallback.
Those internal MPD libraries where the libfmt dependency was not
declared were still using the old system libfmt headers, which are not
ABI-compatible with MPD's own libfmt build.
2021-10-15 14:26:59 +02:00
Max Kellermann
85611aa456
storage/smbclient: add StoragePlugin.prefixes
...
Should have been part of commit
ef24cfa523
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1279
2021-10-15 10:24:30 +02:00
Max Kellermann
466b5cb08d
neighbor/smbclient: FmtError() instead of FormatErrno()
...
Fixes part 2 of https://github.com/MusicPlayerDaemon/MPD/issues/1279
2021-10-15 09:40:36 +02:00
Max Kellermann
3f2f3251cb
neighbor/smbclient: use [[gnu::pure]]
...
Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1279
2021-10-15 09:39:34 +02:00
Max Kellermann
608896571c
command/queue: add position parameter to "load"
...
Another one from https://github.com/MusicPlayerDaemon/MPD/issues/888
2021-10-14 15:11:11 +02:00
Max Kellermann
2e5ca1cbd2
command/database: add "position" parameter to "findadd" and "searchadd"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/888
2021-10-14 15:03:02 +02:00
Max Kellermann
680fb51c37
Permission: add "player" to default permission set
...
Forgot that in commit 9a766f4cd9
2021-10-14 14:58:38 +02:00
Max Kellermann
77d74b404e
Permission: add option "host_permissions"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1115
2021-10-14 14:44:18 +02:00
Max Kellermann
a636d2127a
Permission: add "pure" attributes
2021-10-14 14:26:51 +02:00
Max Kellermann
9a766f4cd9
Permission: split permission "player" from "control"
...
Some users want certain clients to fully control playback, but do not
want them to be able to trigger database update.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1124
2021-10-14 14:19:51 +02:00
Max Kellermann
8ad17d25ef
player/CrossFade: do not cross-fade songs shorter than 20 seconds
...
From the feature request: "I generally like to have crossfade on, but
when it happens during such short tracks (e.g. 20 seconds or less) it
doesn't really sound good as those tracks are not really meant to be
crossfaded and intended to act as a bridge on their own."
Sounds reasonable. This commit doesn't add an option, but hard-codes
the limit to 20 seconds. If it turns out that users want to have it
configurable, we can still add the option.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1184
2021-10-14 13:47:24 +02:00
Max Kellermann
46d00dd85f
player/CrossFade: move code to CanCrossFadeSong()
2021-10-14 13:42:27 +02:00
Max Kellermann
ec52b13449
player/CrossFade: add method IsEnabled()
2021-10-14 13:41:50 +02:00
Max Kellermann
cf6ca1b0ba
player/CrossFade: use C++11 initializers
2021-10-14 13:38:42 +02:00
Max Kellermann
37bd6de658
db/simple: add option to hide CUE target songs
...
This reduces duplicates in the music database by hiding the original
song file when it is referenced by a CUE sheet.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1275
2021-10-14 13:28:37 +02:00
Max Kellermann
f7622ca332
db/update/Walk: move PurgeDanglingFromPlaylists() to Playlist.cxx
2021-10-14 13:12:10 +02:00
Max Kellermann
b82b56970b
db/simple/Song: reorder fields for better packing
2021-10-14 12:55:02 +02:00
Max Kellermann
e4eb5b79c9
output/shout: move shout_new() call to Enable()
...
Don't allocate any memory until the output is really enabled.
2021-10-14 12:28:36 +02:00
Max Kellermann
1cfea20b22
output/shout: remove the defunct "timeout" option
...
The implementation was removed 12 years ago in commit f6455d5f79
and
nobody missed it.
2021-10-14 12:04:13 +02:00
Max Kellermann
efa3ffa8d8
Revert "db/update/playlist: remove non-existent targets while scanning"
...
This reverts commit 9200fa6d06
. It was
wrong because it works only if the target song has already been
scanned.
2021-10-14 11:50:41 +02:00
Max Kellermann
1b8c94d6b9
db/update/Playlist: move code to another UpdatePlaylistFile() method
2021-10-14 11:36:45 +02:00
Max Kellermann
cd5c1f3f45
db/update/playlist: remove empty playlist directories
2021-10-13 19:23:24 +02:00
Max Kellermann
9200fa6d06
db/update/playlist: remove non-existent targets while scanning
2021-10-13 19:23:24 +02:00
Max Kellermann
1bbe9896f6
Main: make inotify errors non-fatal
2021-10-13 18:55:05 +02:00
Max Kellermann
2d8847f428
db/update/InotifyUpdate: convert to class, no global variables
2021-10-13 18:47:56 +02:00
Max Kellermann
72f6e018e7
Log: remove the obsolete printf-style functions
2021-10-13 17:41:19 +02:00
Max Kellermann
2fbbd540bb
more [[gnu::...]] attributes
2021-10-13 17:38:01 +02:00
Max Kellermann
18f64b5fb7
system/FatalError: remove obsolete library
2021-10-13 16:53:01 +02:00
Max Kellermann
d2a8b1e8a5
db/update/InotifySource: make errors non-fatal
2021-10-13 16:53:01 +02:00
Max Kellermann
184e8eca7c
win32/Win32Main: throw on error
2021-10-13 16:37:56 +02:00
Max Kellermann
0a8886704a
Main: move top-level exception handler to main()
...
Allows win32_main() to throw exceptions.
2021-10-13 16:37:34 +02:00
Max Kellermann
0712314d23
archive/{zzip,iso9660}: ignore file names which are invalid UTF-8
...
These malformed strings must not be transferred over the wire, because
the MPD protocol is defined to be UTF-8.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1274
2021-10-13 15:51:08 +02:00
Max Kellermann
f8cbba1850
util/Alloc: remove unused library
2021-10-13 14:48:16 +02:00
Max Kellermann
635ec3ce37
util/VarSize: use plain malloc()
2021-10-13 14:46:40 +02:00
Max Kellermann
8e71130e8a
tag/FixString: use class AllocatedArray
2021-10-13 14:40:33 +02:00
Max Kellermann
ed7baf3ae1
tag/Id3Scan: use StringView::Strip() instead of duplicating the string
2021-10-13 14:32:43 +02:00
Max Kellermann
1e159af2ce
tag/Id3Scan: merge duplicate code into InvokeOnTag()
2021-10-13 14:30:57 +02:00
Max Kellermann
dffed6e393
tag/Id3Scan: add class Id3String
2021-10-13 14:24:17 +02:00
Max Kellermann
bf656af555
playlist/SoundCloud: use AllocatedString for concatenation
2021-10-13 12:47:57 +02:00
Max Kellermann
d2b8852d19
playlist/SoundCloud: move code to TranslateSoundCloudUri()
2021-10-13 12:23:15 +02:00
Max Kellermann
7d4de71899
sticker/SongSticker: use AllocatedString for concatenation
2021-10-13 12:19:45 +02:00
Max Kellermann
e1c16d78e4
decoder/wavpack: use AllocatedString for concatenation
2021-10-13 12:15:57 +02:00
Max Kellermann
a49b49cba7
decoder/wavpack: fix WVC file support
...
The wrong variable was used. This has been broken by commit
4eeea640f4
seven years ago - and nobody as noticed, d'oh!
2021-10-13 12:11:39 +02:00
Max Kellermann
f510564d9d
more [[gnu::...]] attributes
2021-10-13 12:07:05 +02:00
Max Kellermann
1c4b484a56
avahi/Poll: use FineTimerEvent in AvahiTimeout
...
libavahi-client uses this one to schedule events immediately.
However, CoarseTimerEvent may be called too late, and cause timeouts.
2021-10-13 11:13:54 +02:00
Max Kellermann
b394d8d059
net/Resolver: include cleanup
2021-10-13 11:06:10 +02:00
Max Kellermann
a15c1c71d5
util/WritableBuffer: add WritableBuffer<void>::{FromVoid,ToVoid}()
2021-10-13 11:05:33 +02:00
Max Kellermann
8d679e7e00
util/IntrusiveList: add IntrusiveList::swap()
2021-10-13 11:04:42 +02:00
Max Kellermann
2b30ac2351
util/IntrusiveList: add another missing ToNode() call
2021-10-13 11:04:21 +02:00
Max Kellermann
1c97793b49
util/IntrusiveList: do not use the deprecated class std::iterator
...
Deprecated in C++17. Since C++17, one is supposed to declare those 5
types manually.
2021-10-13 11:03:49 +02:00
Max Kellermann
4dae8b41da
event/PipeEvent: new class wrapping SocketEvent
2021-10-13 10:45:55 +02:00
Max Kellermann
be8ed2f59e
tag/Settings: use [[gnu::const]]
2021-10-13 10:37:26 +02:00
Max Kellermann
08491fcd86
tag/Format: use [[gnu::pure]]
2021-10-13 10:37:26 +02:00
Max Kellermann
abed633fcb
tag/FixString: use [[gnu::pure]]
2021-10-13 10:37:26 +02:00
Max Kellermann
db2a9cb6d5
tag/Builder: use [[gnu::pure]]
2021-10-13 10:37:26 +02:00
Max Kellermann
7caeb3b0d8
tag/ParseName: use [[gnu::pure]]
2021-10-13 10:32:22 +02:00
Max Kellermann
08500be239
tag/VorbisComment: use [[gnu::pure]]
2021-10-13 10:31:51 +02:00
Max Kellermann
3ef7d8fecb
tag/Tag: use [[gnu::pure]]
2021-10-13 10:31:51 +02:00
Max Kellermann
ffde7223b9
tag/Table: use [[gnu::pure]]
2021-10-13 10:31:51 +02:00
Max Kellermann
4e84fa4a00
RemoteTagCache: use [[gnu::pure]]
2021-10-13 10:31:51 +02:00
Max Kellermann
78e49928b6
command/QueueCommands: disallow moving the current song relative to itself
...
This was a no-op previously, but this operation makes no sense.
2021-10-07 22:55:41 +02:00
Max Kellermann
c0bcfe244c
command/QueueCommands: reimplement relative "move"/"moveid" offsets
...
The existing implementation has been utterly broken forever; I cannot
explain what it actually does, but it doesn't do what the
documentation says.
2021-10-07 22:49:38 +02:00
Max Kellermann
e63ecd81ec
command/QueueCommands: eliminate id lookup from handle_addid()
...
Use MoveRange() instead of MoveId().
2021-10-07 22:44:06 +02:00
Max Kellermann
c47a858d15
command/QueueCommands: move code to RequireCurrentPosition()
2021-10-07 22:21:00 +02:00
Max Kellermann
076c9a0dd9
command/QueueCommands: offset relative "addid" positions by one
...
Now, "+0" means "right after the current song" and "-0" means "right
before the current song". Mnemonic: there are zero songs between the
current song and the newly added song.
2021-10-07 22:12:10 +02:00
Max Kellermann
3993176b76
command/QueueCommands: support relative offsets in "addid"
...
A similar feature was present long ago in MPD, but was deprecated in
version 0.16 because the implementation was broken. This commit
re-adds the feature in a way that's well-defined and not broken.
Close https://github.com/MusicPlayerDaemon/MPD/issues/1221
2021-10-07 21:55:56 +02:00
Max Kellermann
16cad48641
command/QueueCommands: validate the "addid" position before adding the song
...
Validate early, so we avoid the rollback if an error occurs.
2021-10-07 21:27:07 +02:00
Max Kellermann
7a6d0c2efc
command/Queue: move LookupRemoteTag() to the end
...
Skip the LookupRemoteTag() call if the MoveId() call fails.
2021-10-07 21:13:45 +02:00
Max Kellermann
f6035f2dda
util/UriRelative: use std::string_view
...
Eliminates lots of implicit std::string temporaries.
2021-10-07 14:49:53 +02:00
Max Kellermann
c34a1e29de
util/UriRelative: fix variable mixup
2021-10-07 14:44:41 +02:00
Max Kellermann
45f3dd8b7a
Revert "python/build/libs.py: remove flac, switch to Meson wrap"
...
This reverts commit 6ed4aff4d3
. The
Meson wrap is broken on non-x86, because it unconditionally includes
<cpuid.h> which is an x86 only header.
2021-10-07 13:28:17 +02:00
James D. Smith
acc1bd6297
playlist/PlaylistSong: Remove dots from playlist file paths.
2021-10-07 13:15:40 +02:00
James D. Smith
49ed9dae34
util/UriUtil: New uri_squash_dot_segments.
2021-10-07 13:14:54 +02:00
Max Kellermann
cf554d306d
LocateUri: implement UriPluginKind::STORAGE properly
...
This way, URI schemes supported by arbitrary storage plugins are
allowed.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1270
2021-10-06 20:36:39 +02:00
Max Kellermann
ef24cfa523
storage/Plugin: add "prefixes"
2021-10-06 20:14:01 +02:00
Max Kellermann
5d35983298
decoder/openmpt: catch libopenmpt exceptions in scan_stream()
...
Fixes crash bug.
2021-10-06 20:14:01 +02:00
Max Kellermann
2dacb36789
LocateUri: throw std::invalid_argument instead of std::runtime_error
...
This should translate to ACK_ERROR_ARG instead of ACK_ERROR_UNKNOWN.
2021-10-06 19:26:33 +02:00
Max Kellermann
57a1403f08
output/pipewire: implement Delay(), fix busy loop while paused
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1265
2021-09-24 11:33:35 +02:00
Max Kellermann
bad3283182
output/pipewire: add flag "active", replaces some uses of "paused"
...
This way, we know whether we're explicitly "paused" or "not yet
activated because the ring buffer hasn't been filled yet".
2021-09-24 11:33:30 +02:00
Max Kellermann
6ed4aff4d3
python/build/libs.py: remove flac, switch to Meson wrap
2021-09-21 16:44:51 +02:00
Max Kellermann
9ea1578a97
lib/expat/meson.build: propagate the libexpat dependency
...
Fixes the build with libexpat from Meson wrap.
2021-09-21 14:38:00 +02:00
Max Kellermann
520028dcfc
python/build/libs.py: remove libexpat, switch to Meson wrap
2021-09-21 14:08:23 +02:00
Max Kellermann
aef0535c55
python/build/libs.py: remove libvorbis, switch to Meson wrap
2021-09-21 13:49:50 +02:00
Max Kellermann
410b8711f2
lib/curl/meson.build: add -DCURL_STATICLIB on Windows
...
Necessary since commit 6acf81d5ae
2021-09-21 13:24:35 +02:00
Max Kellermann
6acf81d5ae
python/build/libs.py: build CURL with cmake
2021-09-21 12:30:39 +02:00
Max Kellermann
937423dbcf
event/Loop: check the quit
flag after RunDeferred()
...
Allow DeferredEvents to call EventLoop::Break().
2021-09-10 12:14:18 +02:00
Rosen Penev
40483d8478
fix wrong emplace usage
...
emplace already calls std::pair. No need for it again.
No need to emplace when calling std::make_shared.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-09-07 21:14:37 -07:00
Rosen Penev
6ec5089cc9
remove std::make_pair
...
make_pair is an old C++98 function that can be replaced by modern
shorter constructs.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-09-07 21:13:22 -07:00
Max Kellermann
bdd8c34c67
Merge branch 'move' of git://github.com/neheb/MPD
2021-08-29 06:47:05 +02:00
Max Kellermann
c9a9248c9f
java/Class: use Java::LocalObject
...
This eliminates all but one DeleteLocalRef() call.
2021-08-28 08:09:54 +02:00
Max Kellermann
31f7fede30
java/GlobalRef: remove method Set(), always require initialization
2021-08-28 08:08:30 +02:00
Max Kellermann
917fe549b0
java/Object: use type aliases
2021-08-28 08:05:57 +02:00
Max Kellermann
8e430e55af
Java/GlobalRef: add LocalRef cast constructor
2021-08-28 08:04:20 +02:00
Max Kellermann
9e61bda592
java/String: add class StringUTFChars()
2021-08-27 12:30:43 +02:00
Max Kellermann
56997290d7
io/BufferedOutputStream: add method Discard()
2021-08-27 12:06:36 +02:00
Max Kellermann
d2f84f3df8
io/BufferedOutputStream: allow specifying the buffer size
2021-08-27 12:06:20 +02:00
Max Kellermann
9da28e5c73
io/BufferedOutputStream: more API documentation
2021-08-27 12:06:02 +02:00
Max Kellermann
d1f9b06f84
io/BufferedOutputStream: add WriteT()
2021-08-27 12:05:26 +02:00
Max Kellermann
f9f3306db9
io/BufferedOutputStream: use std::size_t
2021-08-27 12:05:06 +02:00
Max Kellermann
19d19cd737
fs/io/BufferedOutputStream: avoid including windows.h
...
Include the most specific header documented by MSDN instead.
2021-08-27 12:04:44 +02:00
Max Kellermann
b1175acb59
util/StringView: hard-code C++17
2021-08-27 12:01:31 +02:00
Max Kellermann
672278e5fd
util/StringView: use [[gnu::]] attributes
2021-08-27 11:59:37 +02:00
Max Kellermann
da155f8822
util/StringCompare: use [[gnu::]] attributes
2021-08-27 11:58:25 +02:00
Max Kellermann
4026ef63b6
util/StringAPI: use [[gnu::]] attributes
2021-08-27 11:57:56 +02:00
Max Kellermann
b282682ba5
use using
instead of typedef
2021-08-27 11:57:33 +02:00
Max Kellermann
ad00926e1b
util/AllocatedArray: add method release()
2021-08-27 11:24:50 +02:00
Rosen Penev
0b774df375
prevent use after move
...
These should be equivalent anyway.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-26 13:38:36 -07:00
Rosen Penev
53ffcf455c
make several member functions const
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-26 13:15:52 -07:00
Max Kellermann
9ca64d5fb3
filter/Chain: eliminate, just use a chain of TwoFilters instead
...
The ChainFilter class is extremely complicated code, and will grow to
be even more complicated when the Filter interface gets extended.
Let's just remove it; we can easily chain many TwoFilters instead.
2021-08-26 17:45:23 +02:00
Max Kellermann
bd79354f32
filter/TwoFilters: add ChainFilters()
2021-08-26 17:42:25 +02:00
Max Kellermann
49dcac5c21
filter/TwoFilters: add class PreparedTwoFilters
2021-08-26 17:36:19 +02:00
Max Kellermann
38a4b0d8d5
filter/TwoFilters: fix include guard
2021-08-26 14:36:52 +02:00
Max Kellermann
a224225e48
pcm/AudioFormat: use std::size_t
2021-08-26 13:42:15 +02:00
Max Kellermann
7d7fe756b3
pcm/AudioFormat: use [[gnu::pure]]
2021-08-26 13:42:15 +02:00
Max Kellermann
1cb7fe12ff
pcm/AudioFormat: add noexcept
2021-08-26 13:37:36 +02:00
Max Kellermann
8a29805767
release v0.22.11
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmElU1oQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEnfUD/0fmlPB0ud6UdyedOp6yqbZoWvUanGFyrFX
4eaTfSZq4qAs3JKSLqGVcseDNG4wk/VkDhXekbpFPIgCjBQpypxusQ1NowoT6gps
NYFClU2cxBnGYHMZQeTT+4WB4VRGreZGJ42IfQbKDyrSNImKu+5CmtDvsoGezeMK
OnL9EkNR3D7nl6uIUstuyOG6f/x1QNNVlntatslMxPYfnrZgHElwZiodqEGDh0c4
XxBQmVyAX+AGjmwepXTQvUap2rd2x0mW7jQ7C3FFTP/eSImPsspQb4zO/TGnp3/o
9pSIDUSlnOS78C3GIJCZB4ac7i/Gh+tSV6Y3wSJmY9s/EvqnnHwySeiJnTLG3q3G
03Wy7r64enytU3jdgjtYb3h8fCnsQjhuhmUXtDLTF3hFeBR/EkviYQOpGqVbXpzm
Wx+yINtHJcUr4jikxboFSQacmf2WbJbIyZ3RhsWTWANHWDqHrMzW73E850Dg3kg3
RoeMKV3B9vFv6kolsCZR/Pq6+vFSsuDt8o+/RJqBwSKKwPP9Hm7ntlamTsJ5kA/0
kvr5WE9RcDOU+lyTjra1OW7OInxbhr05PFNBw8GfeR9QyatUT6c3hgyhoCbZ24DV
oPh3TwKrwtm82TMxBktGMAWb02RebEYVpPSlVrnWhpI9vlm4gHebAxANbFVWA/ur
FxQv+PXg0w==
=G8gT
-----END PGP SIGNATURE-----
Merge tag 'v0.22.11'
release v0.22.11
2021-08-24 22:19:38 +02:00
Max Kellermann
263d1ba002
Main: playlist_directory defaults to "/sdcard/Android/data/org.musicpd/files/playlists"
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1233
2021-08-24 22:12:27 +02:00
Max Kellermann
2dba06dc34
android/Context: add GetExternalFilesDir()
2021-08-24 22:03:53 +02:00
Max Kellermann
811860c3b4
android/Context: use [[gnu::pure]]
2021-08-24 21:54:22 +02:00
Max Kellermann
8439119e24
filter/ffmpeg: support double-precision samples
...
Insert an "aformat" filter which converts double-precision to
single-precision.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1235
2021-08-24 13:45:57 +02:00
Max Kellermann
b5b40d8235
filter/ffmpeg: automatically retry with "aformat"
...
If DetectFilterOutputFormat() fails to determine the output format,
insert an "aformat" filter which attempts to force a specific output
format.
Fixes part 2 of of https://github.com/MusicPlayerDaemon/MPD/issues/1235
2021-08-24 13:31:13 +02:00
Max Kellermann
b904f8af03
lib/ffmpeg/Filter: add FilterContext::MakeAformat()
2021-08-24 13:30:17 +02:00
Max Kellermann
ebfbb74f9e
lib/ffmpeg/DetectFilterFormat: return AudioFormat::Undefined() on EAGAIN
2021-08-24 13:30:03 +02:00
Max Kellermann
7b4225aa1f
lib/ffmpeg/Filter: add ParseSingleInOut()
...
Merge some duplicate code.
2021-08-24 13:29:08 +02:00
Max Kellermann
71a5311b06
lib/ffmpeg/Filter: eliminate class FilterContext
...
Since AVFilterContext are freed automatically, this wrapper class
serves no purpose. Let's remove it.
2021-08-24 13:04:34 +02:00
Max Kellermann
a62a35e1db
lib/ffmpeg/Filter: remove FilterContext destructor
...
Fixes potential double-free bugs which currently did not occur because
the destructors happened to be called in the right order.
2021-08-24 12:56:05 +02:00
Max Kellermann
ca2439f595
filter/ffmpeg: pass "channel_layout" instead of "channels" to buffersrc
...
Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1235
2021-08-23 21:38:13 +02:00
Max Kellermann
34aa67ea87
Merge remote-tracking branches 'neheb/6', 'neheb/5', 'neheb/3', 'neheb/2' and 'neheb/1'
2021-08-23 20:36:26 +02:00
Dave Hocker
18be8c3318
Fix compile error on macOS 11.15.2 (introduced by commit 30e3ef4
)
2021-08-21 11:16:22 -05:00
Rosen Penev
1d7a8f992f
clang-tidy: use auto
...
The type is duplicated otherwise
Found with modernize-use-auto
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-21 00:53:23 -07:00
Rosen Penev
da1783cdff
clang-tidy: remove pointless const
...
Found with readability-const-return-type
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-21 00:51:21 -07:00
Rosen Penev
20d74bb07e
clang-tidy: replace loop with std::all_of
...
Found with readability-use-anyofallof
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-21 00:49:36 -07:00
Rosen Penev
0f7a0b04ca
replace loop with find_if
...
loop is wrong anyway. It's missing a break;
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-21 00:48:30 -07:00
Rosen Penev
40c6a214e3
unique_ptr/new to make_unique
...
The latter is easier to read and is the "correct" thing to do.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-20 23:54:14 -07:00
Samir Benmendil
cfe024ea13
command/file: return directory_uri if real_uri is unset
...
Prevent a segfault when accessing album art.
Fix #1224 #1225
2021-08-17 10:55:43 +02:00
Max Kellermann
bedcf1cce5
Merge branch 'exp2' of git://github.com/neheb/MPD
2021-08-17 10:53:36 +02:00
Rosen Penev
30e3ef4c8e
constexpr/std::array conversions
...
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-16 21:05:56 -07:00
Rosen Penev
4c5fea96e4
constexpr global variable conversion
...
Found with cppcoreguidelines-avoid-non-const-global-variables
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-16 20:58:21 -07:00
Rosen Penev
46600931e4
clang-tidy: use default
...
Found with modernize-use-default
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-16 20:48:28 -07:00
Max Kellermann
a2387210bf
time/FileTime: move code to SystemClock.hxx
2021-08-10 19:53:53 +02:00
Max Kellermann
d7e7adb496
time/FileTime: add ChronoToFileTime()
2021-08-10 16:16:15 +02:00
Max Kellermann
45354a421c
time/FileTime: preserve the FILETIME resolution
...
Don't truncate the FILETIME to second resolution to pass it to
std::chrono::system_clock::from_time_t(); instead, calculate the
offset between the FILETIME epoch and the
std::system_clock::time_point epoch, and use that to initialize the
time_point directly.
2021-08-10 15:16:59 +02:00
Max Kellermann
9fc3c60910
time/FileTime: add FileTimeToChronoDuration()
2021-08-10 15:13:22 +02:00
Max Kellermann
1976003e91
time/FileTime: allow negative times
2021-08-10 15:13:16 +02:00
Max Kellermann
488afc47d4
time/FileTime: use uint_least64_t
2021-08-10 15:12:49 +02:00
Max Kellermann
f3d67115d7
output/wasapi: check ENABLE_DSD before setting dsd_mode
2021-08-10 15:00:58 +02:00
Max Kellermann
0dacde32f2
output/pipewire: append output name to PW node name
2021-08-10 11:30:25 +02:00
Max Kellermann
528e05f025
output/pipewire: add config option "remote"
2021-08-10 11:28:29 +02:00
Max Kellermann
269583f5dd
output/pipewire: allow specifying a target by its name
2021-08-10 11:17:16 +02:00
Max Kellermann
7c9f4f7e4f
output/pipewire: create inactive stream, fill ring_buffer first
...
This avoids underruns at the start of playback.
2021-08-10 10:50:42 +02:00
Max Kellermann
00fd692eba
output/pipewire: wait for buffer to fill before resuming
2021-08-10 10:48:25 +02:00
Max Kellermann
668c3782b2
output/pipewire: smaller ring buffer, 500ms should be enough
2021-08-10 10:43:56 +02:00
Max Kellermann
1e0af2dadf
output/pipewire: add type alias for boost::lockfree::spsc_queue
2021-08-10 10:43:54 +02:00
Max Kellermann
4ea2ea2a52
output/pipewire: update nbytes
after calling PcmSilence()
...
This was missing in commit 8a243e6e28
2021-08-10 10:43:28 +02:00
Max Kellermann
8a243e6e28
output/pipewire: call pw_stream_flush() only if really draining
...
If draining was not requested, generate silence instead if there is no
data in the ring buffer.
The problem is that pw_stream_flush() appears to disable the stream
permanently, even though there is no state_changed callback - the
stream state remains at PW_STREAM_STATE_STREAMING, but the stream is
defunct. I have no idea why and I havn't found any documentation
about it.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1219
2021-08-10 06:30:58 +02:00
Max Kellermann
d33aa01000
output/pipewire: reset the "paused" flag
...
This was missing in commit 4d1ce7023b
2021-08-09 19:31:22 +02:00
Max Kellermann
bd893e6336
release v0.22.10
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmENYHwQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEpGtD/9ToU27x36NAAFpChicSqbu3h2wtJ29lowT
ivV80XB26pQeGK0DSXADSs38MVXo42i3vqg0zGWV9TRbcDs5VErXANVLN16qsKCu
U0v1BDY11UiYp6ATiUjIahyG1UsmbRVZlfDyVIhYvmFpGLFw6+03HH6w2k/v85ns
FxyXkYDYcUokPJPEQcChE1eIwKsGM6MjbdVIkJAEo3wGhL/Hhy2KUskrFcCo1PDj
7xxGrwauG+8wSjAWMA5vzl3udRaDauuXztm5QbQIDdsbRaCiBAdgkzC0PvIxTOr0
bR4WHVB0KSiM96yIXNtg/WZxO0XrxppmX/E4eZSgz0JGKMrAHcoTJAUCIDu3X719
gJnJLg7r2X5dTchXezv09YoJolKbw1bOooyAuE4FCDWMsOa2GRuBZC+8w7DNTZuo
PTh+Z40fnfpNBofe+e/WZrXr6i2TKk8CqHEidq2GHlOkvTR7g6m8MjOLvZNHotMb
9ECr9MhzXH+nvEX8IaxvjWsfLJiDbUgnVsQ+6akGtkbragaDN/Wgr/XdkELoLlsK
LZFY5ngnZmDXOu4tjBLJtfrTkZB2/Hld4xtF1qlsy9fvZBRKeKlpABTLaa8r/vnR
Ta0rB2O3/dculZbHZRUnZvLS4Xv4g322vW9Wso9IBoWRn9fC8b2zR93k7breAqcn
pKbYGg/j6g==
=/954
-----END PGP SIGNATURE-----
Merge tag 'v0.22.10'
release v0.22.10
2021-08-06 18:21:59 +02:00
Max Kellermann
04eb911a51
mixer/alsa: use cached values to work around rounding errors
...
This replaces 967af60327
with a more
effective workaround.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/822
2021-08-06 18:16:37 +02:00
Max Kellermann
351b39e0c5
mixer/alsa: skip the snd_mixer_handle_events() call in alsa_mixer_elem_callback()
...
snd_mixer_handle_events() has already been called by
DispatchSockets(). This way, we can also skip the exception handler.
2021-08-06 18:03:36 +02:00
Max Kellermann
3b6d4e6673
mixer/alsa: move alsa_mixer_elem_callback() into the AlsaMixer class
2021-08-06 18:01:19 +02:00
Max Kellermann
e8f328d8ad
mixer/alsa: move code to GetPercentVolume()
2021-08-06 17:56:30 +02:00
Max Kellermann
5f5b5f63af
mixer/alsa: move code to NormalizedToPercent()
2021-08-06 17:55:59 +02:00
Max Kellermann
ad6e303047
mixer/alsa: move code to GetNormalizedVolume()
2021-08-06 17:53:45 +02:00
Max Kellermann
1985786ed2
db/simple: prune CUE entries from database for non-existent songs
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1019
2021-08-05 20:26:21 +02:00
Max Kellermann
8e0d39ae94
db/update/Playlist: prepend "../" only for relative URIs
...
Prepending "../" to absolute URIs would break them.
2021-08-05 20:19:33 +02:00
Max Kellermann
1761fb14af
fs/Traits: add PathTraitsUTF8::IsAbsoluteOrHasScheme()
2021-08-05 20:09:06 +02:00
Max Kellermann
ef2fc4e6f6
db/simple/Directory: remove obsolete API doc
2021-08-05 19:05:03 +02:00
Max Kellermann
b979245d6c
decoder/Bridge: call UpdateStreamTag() only if there is no pending seek
...
If UpdateStreamTag() gets called while an initial seek is pending, the
result will never be submitted to a MusicChunk. By avoiding the
UpdateStreamTag() call in that case (by moving UpdateStreamTag() to
after the PrepareInitialSeek() check), the song_tag is preserved until
UpdateStreamTag() is called again from SubmitData().
This fixes missing tags in the "httpd" output.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1137
2021-08-05 18:02:45 +02:00
Max Kellermann
a74b07728e
tag/Tag: add Merge() which takes Tag pointers
2021-08-05 17:36:14 +02:00
Max Kellermann
7d69cbbda7
tag/Tag: Merge() returns Tag, MergePtr() returns std::unique_ptr<Tag>
2021-08-05 17:32:23 +02:00
Constantin Fuerst
955502f881
output/oss: enable DoP
...
Explanation
This adds support for DOP using the PcmExport function if the macro
ENABLE_DSD is defined. If enabled within the config-file using "dop",
the boolean dop_setting will be true. If DSD input is encountered and
the setting is on, it is checked whether the oss-device supports the
required samplerate. If that is the case, dop_active is set to true
and conversion of the input is prevented. If the sample rate is not
supported, conversion to S32 is requested. When playing back, the
PcmExport is used to pack the incoming stream into PCM. Reasoning
This is required for OSs without the required driver support for
native DSD playback that also have no ALSA. Mainly *BSD users are the
target audience for this functionality, as ALSA here is only a proxy
without full functionality. Requirements
DAC that supports the DOP standard
Building with OSS, DSD and S32-Format
Supported Formats / Required PCM Formats
DSF, DFF and WavPack-DSD will work.
DSD64, 1 Channel -> S24:176.4kHz (untested, lack of time / missing samples)
DSD64, 2 Channel -> S24:352.8kHz
DSD64, 4 Channel -> S24:705.6kHz (untested, lmissing equipment)
DSD128, 1 Channel -> S24:352.8kHz (untested, lack of time / missing samples)
DSD128, 2 Channel -> S24:705.6kHz
DSD256, 1 Channel -> S24:705.6kHz (untested, lack of time / missing samples)
Changes
inclusion of required files
adding new domain for logging
adding dop_satisfied private function
adding required member variables for storing dop state and for dop-packing
adding dop boolean parameter to many functions that are required to act a little differently when dop is active
Testing
This has been tested to work with a Sabaj Da2 on FreeBSD, where the
red status indicator LED clearly shows that DSD playback is taking
place, instead of purple for "hi-res" which is seen when converting.
Issues
I have not tested this with S24 and right now AFMT_S32_NE is
required. If not defined, ENABLE_DSD will be undef'ed. This will be
addressed in a bit, however no DAC which supports DOP but not 32Bit is
known to me. Also, AFMT_S32_NE is not defined when building on FreeBSD
which is why this is just blatantly defined in the file at the moment.
Additionally, the new dop-option is not added into any documentation
whatsoever.
2021-08-05 16:21:43 +02:00
Max Kellermann
dee5d1b87b
output/oss: replace the AudioFormat field with 3 raw OSS integers
...
This simplifies Reopen().
2021-08-05 16:03:53 +02:00
Max Kellermann
d42342e0ba
output/oss: check returned value in oss_try_ioctl()
2021-08-05 15:53:30 +02:00
Max Kellermann
8da3f8c6a7
output/oss: oss_try_ioctl() throws on EINVAL
...
Eliminate some duplicate code.
2021-08-05 15:47:11 +02:00
Max Kellermann
c8c553c75c
pcm/Export: add method IsDopEnabled()
2021-08-05 15:35:11 +02:00
Max Kellermann
c97aabe43a
Merge branch 'v0.22.x'
2021-08-05 15:17:07 +02:00
Max Kellermann
17b0ac75ca
output/oss: always enable PcmExport for alsa_channel_order
...
We need this even when AFMT_S24_PACKED is not available, for the
correct channel order in multi-channel files. Internally, MPD uses
FLAC channel order, but OSS uses the same channel order as ALSA.
2021-08-05 15:11:54 +02:00
Max Kellermann
bde64a13e2
tag/Builder: do not acquire tag_pool_lock if TagItem list is empty
2021-08-05 14:32:58 +02:00
Max Kellermann
96875921b7
tag/Builder: use std::swap() in move operator
...
This way, we save the overhead for acquiring the tag_pool_lock.
2021-08-05 14:28:37 +02:00
Cebtenzzre
551c941b5a
tag/Builder: don't ignore the result of tag_pool_dup_item
...
Also, use RemoveAll() instead of directly clearing TagBuilder::items in
most cases, as its elements represent references that must be released.
Closes #1023
2021-08-05 14:25:55 +02:00
Cebtenzzre
624c77ab43
tag/Builder: another missing RemoveAll() call
2021-08-05 14:25:05 +02:00
Cebtenzzre
ba13b4b5d6
tag/Builder: use RemoveAll() to give up references
2021-08-05 14:23:48 +02:00
Cebtenzzre
4b2d9e544c
tag/Pool: add [[nodiscard]]
2021-08-05 14:20:59 +02:00
Max Kellermann
97c43954e8
input/tidal: remove defunct unmaintained plugin
...
This plugin has been defunct for several years. Tidal has not ever
replied to any of my emails, so they're apparently not interested in
MPD support.
2021-08-05 13:52:05 +02:00
Max Kellermann
b77acd35f7
output/winmm: fix struct/class mismatch
2021-08-05 11:40:47 +02:00
Max Kellermann
968624035c
mixer/pipewire: new plugin
2021-08-05 10:57:37 +02:00
Max Kellermann
b838bf3109
output/pipewire: un-inline StateChanged()
2021-08-05 10:48:17 +02:00
Max Kellermann
4d1ce7023b
output/pipewire: implement Pause()
2021-08-04 17:26:54 +02:00
Max Kellermann
52577ac87a
output/pipewire: implement Cancel() properly
2021-08-04 17:24:49 +02:00
Max Kellermann
9fa3984a2f
input/icy: adjust offset at end of stream in Read()
...
ProxyInputStream::Read() assigns the `offset` field, which is the
wrong offset because it does not consider Icy metadata removed from
the stream. Therefore, after every ProxyInputStream::Read() call,
IcyInputStream::Read() needs to override this offset. This was
missing at the end of the stream, when Read()==0.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1216
2021-08-02 16:40:04 +02:00
Max Kellermann
239698cb5a
output/pipewire: set channel positions
2021-07-30 15:55:37 +02:00
Max Kellermann
e55de6e9f0
output/pipewire: implement Drain()
2021-07-30 15:28:01 +02:00
Max Kellermann
cfaf2ed03c
output/pipewire: move code to CheckThrowError()
2021-07-30 15:24:20 +02:00
Max Kellermann
6015960871
output/pipewire: reset the "interrupted" flag in Cancel()
...
This fixes seeking.
2021-07-30 15:20:32 +02:00
Max Kellermann
26328cc915
output/pipewire: detect connection errors
2021-07-30 14:31:06 +02:00
Max Kellermann
cd512f0b40
output/pipewire: replace usleep() with with pw_thread_loop_wait()
2021-07-30 14:31:04 +02:00
Max Kellermann
be14dd59a8
output/pipewire: remove obsolete TODO comment
2021-07-30 13:50:55 +02:00
Max Kellermann
97e5787ff7
output/pipewire: call libpipewire only while holding the lock
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1210
2021-07-30 13:49:22 +02:00
Max Kellermann
6975d3ca4b
output/pipewire: switch from pw_main_loop to pw_thread_loop
...
We need this for pw_thread_loop_lock().
2021-07-30 13:42:59 +02:00
Max Kellermann
cdca27e6bb
decoder/Bridge: fix libfmt string
2021-07-30 13:32:27 +02:00
Max Kellermann
5355335f19
db/simple/ExportedSong: check src.OwnsTag(), not this->OwnsTag()
...
this->OwnsTag() accesses fields that are not yet initialized.
2021-07-30 13:10:09 +02:00
Sam Bazley
5b775ca5b4
decoder/ffmpeg: check if long_name is not null
2021-07-28 16:05:15 +01:00
Jacob Vosmaer
ea95da3b1a
archive/meson.build: add missing libfmt dependency
2021-07-26 23:26:07 +02:00
Sam Bazley
57687779be
Android: add option to pause MPD when headphones disconnect
2021-07-26 19:02:47 +01:00
Max Kellermann
64fa76c568
command/file: support "albumart" for virtual tracks in CUE sheets
...
Instead of checking for "cover.jpg" in the virtual directory
representing the CUE sheet, check its enclosing directory.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1206
2021-07-16 09:04:35 +02:00
Max Kellermann
19a44076cf
command/file: pass directory uri to read_stream_art()
2021-07-16 08:31:58 +02:00
Max Kellermann
809a18913a
fs/Traits: add overload GetParent(string_view)
2021-07-16 08:30:34 +02:00
Max Kellermann
5eab2d96f4
output/winmm: fix struct/class mismatch
2021-07-16 08:30:34 +02:00
Khem Raj
d39b11ba5d
include <utility> for std::forward
...
Fixes
../git/src/Log.hxx:121:42: error: no member named 'forward' in namespace 'std'
LogFormat(LogLevel::ERROR, e, fmt, std::forward<Args>(args)...);
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-06-29 19:34:28 -07:00
Max Kellermann
b29a43b4d7
decoder/mad, ...: more libfmt logging
2021-06-25 20:52:08 +02:00
Max Kellermann
f60a42e0b6
Log, client/Response: adapt to libfmt 8.0.0 API changes
2021-06-25 20:29:25 +02:00
Max Kellermann
85b0029ba2
meson.build: add missing dependencies on libfmt
2021-06-25 20:28:54 +02:00
Max Kellermann
0e0f46a1e0
Log: remove unused Format functions
2021-06-24 21:40:12 +02:00
Max Kellermann
6f539cfcd6
Partition, ...: use libfmt for logging
2021-06-24 21:40:11 +02:00
Max Kellermann
0185d58a2b
Log: add libfmt support
2021-06-24 21:14:42 +02:00
Max Kellermann
d7df5e1c90
LogBackend: pass std::string_view to Log()
2021-06-24 13:43:13 +02:00
Max Kellermann
e4e4576a39
release v0.22.9
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmDTg80QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFErvaD/93cfFvY/E9NZbI7XmuEfrfX0dUEo2dd8bi
O1tbEU+8uquNLV5cyb5iEpu6RCbAQxjj8clqVuMgfl0Qe3NQ+Z+nyOg0YVEB4Z16
cQBDFGawth7HuaqBIdMgnoapUxyGW3KMFw6si5OsV5AMkT5ybdsWg3sOXIXG+cLa
7KoIwVlgum+DsAPCSKis9fiuZJCnsg9SVcsJnpoaa7ZVOASPp1Wd7F9Kv6wj03/R
fEQ3z/s/4ILsWmZFHnclFq5LSpNvom5fAiedO15WVsJCxoZHEAg0ZpnNn/whU1HA
fciGImrjHLCTKVS5xpWNXUMaov2k7LEbLka2AqYwdeuxf7kAeoZC42H/cwK6tH/F
xuNWg4l9DZQUoGFxN4hfxJi3fsVpx0+3FR+cJQWOuUtwcmh4e7qJKX1gxAjHvEQY
GPS+jx7ndpcVDJyupvhFVGT0VDEOP7yMTjdY6uc5dXa4Ulx59duvgTdEyYgS4feM
BqNOYkD2FXnN7nv56f23q5SkRHF5D5nnoc8robIWkng9PXoq1Faq42MwLFxyCdH1
duRHk06FaFYpPv7gYagarFYIwOKCteL8aOwLymYbJop0O8ripYVQ7hHcEeWNvV+f
Q1ggllNBD/igvom6tRNl+S7TeQijr44M3/pDvDI3oXJPCfh1ZFGjwKqKqS76JfEu
v4V1N0rseA==
=p1U2
-----END PGP SIGNATURE-----
Merge tag 'v0.22.9'
release v0.22.9
2021-06-23 21:02:06 +02:00
Max Kellermann
5019bdcd52
TagAny: invoke ScanGenericTags() on remote files
...
This fixes reading ID3 tags on remote files with the commands
"readcomments" and "readpicture".
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1180
2021-06-23 20:49:30 +02:00
Max Kellermann
175d2c6d29
Main: use AtScopeExit() to call ZeroconfDeinit()
...
Make sure that ZeroconfDeinit() gets called even if startup fails with
an exception. Fixes an assertion failure because an Avahi TimerEvent
is still active.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1192
2021-06-22 20:31:45 +02:00
Rosen Penev
6af7be4a45
add constexpr
...
Found with cppcoreguidelines-interfaces-global-init
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-31 13:45:39 -07:00
Max Kellermann
ac59ec34f9
decoder/ffmpeg: fix build failure with FFmpeg 3.4
...
av_demuxer_iterate() was added in libavformat 58.9.100.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1178
2021-05-31 18:10:06 +02:00
Max Kellermann
82da57b7ce
decoder/ffmpeg: suppress -Wunused with libavformat<58.6.100
2021-05-31 16:49:48 +02:00
Max Kellermann
aa6dac9bd2
db/proxy: suppress -Wunused with libmpdclient<2.12
2021-05-31 16:49:08 +02:00
Rosen Penev
220d2bf026
clang-tidy: add explicit deleted constructors
...
Found with cppcoreguidelines-special-member-functions
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-30 22:47:20 -07:00
Rosen Penev
9ef1cf15a9
clang-tidy: default virtual destructors
...
Found with cppcoreguidelines-special-member-functions
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-05-30 22:46:46 -07:00
Max Kellermann
679b3bc00f
output/print, command/player: print bool as integer
...
Fixes protocol breakage after commit 0440c41cba
libfmt is too clever for the MPD protocol!
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1175
2021-05-28 18:02:00 +02:00
Max Kellermann
36410daaa4
queue/PlaylistEdit: fix inverted check
...
Regression by commit 471c37be59
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1135
2021-05-28 13:56:01 +02:00
Max Kellermann
38bfef7d0b
Merge branch 'add-openmpt-decoder' of git://github.com/GrimReaperFloof/MPD
2021-05-28 13:53:43 +02:00
GrimReaperFloof
724754f16c
Fix std::to_string warning for booleans in openmpt decoder
2021-05-27 20:47:45 +02:00
Max Kellermann
4d32454697
android/LogListener: pass formatted message to OnLog()
2021-05-27 16:21:36 +02:00
Max Kellermann
4db882f666
android/LogListener: cache the jmethodID
2021-05-27 16:14:43 +02:00
Max Kellermann
a83bf97b98
android/LogListener: un-inline the constructor
2021-05-27 16:13:22 +02:00
Max Kellermann
262e1957b7
lib/icu/Converter: use libfmt
2021-05-27 16:09:56 +02:00
Max Kellermann
792411384d
protocol/ArgParser: add function MakeArgError()
...
Replaces FormatProtocolError().
2021-05-27 16:01:44 +02:00
Max Kellermann
78b0ff83e8
client/Response: include cleanup
2021-05-27 15:59:06 +02:00
Max Kellermann
23613355f3
client/Response: remove unused method FormatV()
2021-05-27 15:16:35 +02:00
Max Kellermann
0d97eba7a5
client/Response: refactor FormatError() to use libfmt
2021-05-27 15:15:47 +02:00
Max Kellermann
18efda719e
client/Response: remove unused method Format()
2021-05-27 15:14:54 +02:00
Max Kellermann
42239a30eb
client/Response: use Fmt() in FormatError()
2021-05-27 15:05:42 +02:00
Max Kellermann
a26bf261a9
input/last: call Close() in Open()
...
Prevents a possible bug which occurs when the caller-provided open()
function throws; then the "uri" field is never set.
2021-05-27 14:04:28 +02:00
Max Kellermann
c692286c67
input/last: clear "uri" field in Close()
...
Prevent false negative after the stream was closed automatically after
20 seconds.
2021-05-27 14:03:33 +02:00
GrimReaperFloof
6f64fa070d
Add repeat count setting to openmpt decoder
2021-05-26 23:43:38 +02:00
GrimReaperFloof
dc5b9d989b
Backwards compatibility with older libopenmpt versions than 0.5
2021-05-26 23:43:38 +02:00
GrimReaperFloof
9e407f5989
Change WritableBuffer<uint8_t> to AllocatedArray<std::byte>
2021-05-26 23:43:38 +02:00
GrimReaperFloof
fec6aac0f1
Code deduplication: move mod_loadfile() into ModCommon.cxx
2021-05-26 23:43:38 +02:00
GrimReaperFloof
541c31c879
Add openmpt decoder plugin
2021-05-26 23:43:38 +02:00
Max Kellermann
4ee0a06e18
Merge branch 'v0.22.x'
2021-05-26 13:15:29 +02:00
Max Kellermann
38e24208f6
decoder/ffmpeg: support the tags "album-sort", "artist-sort"
2021-05-26 13:04:47 +02:00
Max Kellermann
fbaedf2262
decoder/ffmpeg: support the "sort_album" tag
...
From libavformat/mov.c.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1173
2021-05-26 13:03:47 +02:00
Max Kellermann
8f3341cefb
decoder/ffmpeg: add comment
2021-05-26 13:03:41 +02:00
Max Kellermann
4ec4bab3a9
decoder/ffmpeg: remove "year" tag
...
This mapping was added 11 years ago in commit 766b9fd453
, but FFmpeg
doesn't appear to support it.
2021-05-26 13:03:27 +02:00
Max Kellermann
6d567bcd35
decoder/ffmpeg: fix ArtistSort and AlbumArtistSort mapping
...
These were added 11 years ago in commit 766b9fd453
, but I cannot find
any evidence in the FFmpeg repository that these names were ever
supported. This commit adds the tags as they are currently present in
libavformat/mov.c.
2021-05-26 13:03:26 +02:00
Max Kellermann
4f75eb9bfe
output/pipewire: remove unreachable "return" statement
2021-05-26 11:57:57 +02:00
Max Kellermann
d2bd12822f
Merge branch 'v0.22.x'
2021-05-26 11:57:41 +02:00
Max Kellermann
363d9f0180
db/update/Walk: load all .mpdignore files of all parent directories
...
When updating everything, this did work, but if updating only a
subdirectory, the ".mpdignore" in the parents were not used.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1172
2021-05-25 22:42:44 +02:00
Max Kellermann
db0682a469
db/update/Walk: move code to LoadExcludeList()
2021-05-25 22:38:01 +02:00
Max Kellermann
7a6823dcdf
zeroconf/AvahiPoll: the struct timeval is an absolute time point
...
Fixes broken libavahi-client timeouts.
2021-05-25 22:25:45 +02:00
Max Kellermann
bce144a232
zeroconf/AvahiPoll: move code to Schedule()
2021-05-25 22:23:55 +02:00
Max Kellermann
0cef84cac6
zeroconf/AvahiPoll: rename "timer" to "event"
2021-05-25 22:23:55 +02:00
Max Kellermann
8c690fb737
decoder/mad: move variable declaration into "case"
2021-05-25 21:34:09 +02:00
Max Kellermann
dad1c21b59
zeroconf/avahi: move variable declaration into "case"
2021-05-25 21:34:09 +02:00
Max Kellermann
3488a47c41
subprojects/sqlite3.wrap: add SQLite wrap
2021-05-25 20:51:03 +02:00
Max Kellermann
fd82d67678
sticker/Database: pass NarrowPath to sqlite3_open()
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1171
2021-05-25 18:45:45 +02:00
Max Kellermann
e66c12105b
lib/sqlite/meson.build: add missing external dependency on libsqlite
2021-05-25 18:41:43 +02:00
Max Kellermann
8a9d678bac
Merge branch 'v0.22.x'
2021-05-25 18:21:42 +02:00
Namkhai B
dbe12a6b90
util/RuntimeError: Disable format-security for gcc
...
Fixes building under GCC 11
2021-05-25 18:19:19 +02:00
Max Kellermann
0440c41cba
client/Response: add method Fmt() based on libfmt
2021-05-25 16:01:56 +02:00
Max Kellermann
0e49de867d
input/last: add nullptr check to Open(), fixes assertion failure
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1168
2021-05-22 17:33:25 +02:00
Max Kellermann
d3576a1b71
input/last: add nullptr check to Open(), fixes assertion failure
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1165
2021-05-21 19:30:36 +02:00
Max Kellermann
96707c0426
release v0.22.7
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmClOSYQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEkODD/49e950HLmZE8x3rmyeEEsgdvHkOVpPlKHo
+wsmSsi+N0sQKgEOffSYyL0MRWaQqzRMnl1EcEVErCfQl5f1mOw9+TL4f5ZEjVNw
CQFMy1awHtCfktgF5zq6NzXD3nor9mkjiP733x/kGcsxwfk/Y4radqUBKJ5Y4a2B
YSg35a/YTOfLCmb9WBquwAi22x7AkyBzyrY3ToCzynVuaNcT3gvLsAAMFzRUKpqD
QEoCtUxJ4CQayjWjtG/bBCs2TVSmJvovhM2xB4Jnm+MeZz+bKI0y+ALW2Wk0Agnd
qxDqyCEnvHi5pf8i9usl4/A63VDC7HHj9kDSLtPLGTijv+7Wvvr4kNpwm2DuJ4q1
1pOEgT480ryK1FPyO6XnYCk616NqjgMbplr6SQ1DuVpIddWdiGARoge/WiNvsbT9
pnEp0q9V3cQmuJ30LlskMJHAPyrE3KSrO1s+4P2zUeirwnMnOCPdq+gT+lRw4GNG
OqLFEDHaELgSaZxInCN8RCXdLMrpuvKm+FQQApU1KwbYPXIassR14yt6BPpjxqea
vkvFLtpwFWthNPLkujak5rDqAPvbHzAeOfaOiZelzd21nl/1omiMXSXRcJkEjONi
JC5VWJpi1PHMXocq6AcOQT/9XhIH4uDA+Xghn7CURBTB6WoB954TSmuVIjXTfgAv
XQYqRR+7Yw==
=Gtzo
-----END PGP SIGNATURE-----
Merge tag 'v0.22.7'
release v0.22.7
2021-05-19 18:43:19 +02:00
Max Kellermann
466a05bc52
CommandLine: update copyright year in --version output
2021-05-19 18:09:38 +02:00
Max Kellermann
6de4064cca
client/Response, command/file: use %lu instead of %zu on Windows
...
Fixes -Wformat warnings.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1150
2021-05-19 18:06:40 +02:00
Max Kellermann
bcf0fdd3a8
meson.build: define NOUSER on Windows for lighter windows.h
...
A few exceptions are needed for sources which include COM header
(directly or indirectly).
This fixes lots of shadow warnings, see
https://github.com/MusicPlayerDaemon/MPD/issues/1150
2021-05-19 18:02:49 +02:00
Max Kellermann
a8f05a7efc
win32/HResult: un-inline HRESULTToString() to reduce header dependencies
2021-05-19 17:48:42 +02:00
Max Kellermann
c64a3b5dbb
fs/Glob: un-inline the Windows version to reduce header dependencies
2021-05-19 17:41:23 +02:00
Max Kellermann
16c38c438f
fs/Glob: use defaulted move constructor
2021-05-19 17:40:23 +02:00
Max Kellermann
48cc4a6ced
fs/Glob: remove redundant #ifdefs
2021-05-19 17:40:03 +02:00
Max Kellermann
a169a05e41
win32, ...: avoid including windows.h
...
Include the most specific header documented by MSDN instead.
2021-05-19 17:25:32 +02:00
Max Kellermann
8efa5c7641
output/wasapi: use "%lu" in log calls
...
"%lu" is portable - it works with both POSIX and Microsoft flavors.
Fixes a part of https://github.com/MusicPlayerDaemon/MPD/issues/1150
2021-05-19 17:10:49 +02:00
Max Kellermann
28e7be248f
util/RuntimeError: disable -Wformat-security as a kludge
2021-05-19 14:57:20 +02:00