Max Kellermann
d29e1544bf
.github/workflows/build.yml: explicitly select ubuntu-20.04
...
According to https://github.com/actions/virtual-environments
"ubuntu-latest" maps to "ubuntu-20.04", even though "ubuntu-22.04" is
also available. Since our job description is very specific to
"ubuntu-20.04", let's select this explicitly.
2022-07-13 12:37:02 +02:00
Max Kellermann
ae4f4d3533
config/Data: add WithEach(ConfigBlockOption)
...
To improve error messages without making callers more complex.
2022-07-13 11:05:21 +02:00
Max Kellermann
89a18b49a7
Merge branch 'v0.23.x'
2022-07-12 14:00:00 +02:00
guihkx
956c5faebb
output/PipeWire: set app icon
...
Closes #1564
2022-07-12 13:59:05 +02:00
Max Kellermann
eb589b0a46
output/osx: fix CI failure
2022-07-12 13:37:46 +02:00
Max Kellermann
52eff41379
remove Haiku support
...
Haiku support has been unmaintained for many years, and this issue has
been open for more than 5 years, but apparently the Haiku people have
lost interest:
https://github.com/MusicPlayerDaemon/MPD/pull/183
Haiku support was therefore deprecated by this commit 4 years ago:
7de8fd04a4
- but in those 4 years, nobody stepped up to adopt
maintainership.
I don't have any computer (or VM) with Haiku and there is no CI with
Haiku support, so I'm unable to adapt the Haiku specific code to API
changes.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/182
Closes https://github.com/MusicPlayerDaemon/MPD/issues/185
2022-07-12 13:14:49 +02:00
Max Kellermann
45071607aa
output/Interface: pass std::span to Play()
2022-07-12 12:59:47 +02:00
Max Kellermann
f5d104e7af
output/ao: simplify write_size checks
2022-07-12 12:58:19 +02:00
Max Kellermann
4f8d2a8b1c
output/alsa: use std::byte instead of uint8_t
2022-07-12 12:36:39 +02:00
Max Kellermann
0158a2b6b9
encoder/flac: refactor input buffer conversion
2022-07-12 12:31:08 +02:00
Max Kellermann
00b8ced09f
encoder/flac: Read() returns the internal buffer
2022-07-12 12:19:55 +02:00
Max Kellermann
5f51be43cf
decoder/flac: add `noexcept` and `inline`
2022-07-12 12:15:06 +02:00
Max Kellermann
3e2de560ca
encoder/lame: eliminate the audio_format field
2022-07-12 12:08:46 +02:00
Max Kellermann
c266fb7758
encoder/lame: Read() returns the internal buffer
...
Eliminate memcpy() calls.
2022-07-12 12:01:31 +02:00
Max Kellermann
0d09f307b2
encoder/Interface: update API docs
2022-07-12 12:00:02 +02:00
Max Kellermann
eb7d321cb8
Merge branch 'v0.23.x'
2022-07-12 11:59:49 +02:00
Max Kellermann
cd0396c1f1
test/run_decoder: remove bogus assert()
2022-07-12 11:59:14 +02:00
Max Kellermann
79f9b268bb
increment version number to 0.23.9
2022-07-12 11:50:47 +02:00
Max Kellermann
b45f3c8deb
Android release 0.23.8
2022-07-12 11:48:41 +02:00
Max Kellermann
f8a8de87e4
android/AndroidManifest.xml: update targetSdkVersion to 30
...
Required by Google Play.
2022-07-12 11:48:41 +02:00
Max Kellermann
2183f0553c
android/meson.build: use apksigner instead of jarsigner
...
This is required for targetSdkVersion=30.
apksigner requires running zipalign first.
2022-07-12 11:48:41 +02:00
Max Kellermann
7e14f8f830
encoder/Interface: pass std::span to Write() and Read()
2022-07-12 10:33:59 +02:00
Max Kellermann
28e044a36a
encoder/lame: use std::size_t
2022-07-12 10:14:10 +02:00
Max Kellermann
4e91d8279b
encoder/vorbis: use std::size_t
2022-07-12 10:11:30 +02:00
Max Kellermann
ff3d8509ac
output/httpd: move buffer to stack
2022-07-12 10:08:26 +02:00
Max Kellermann
e861d4f83d
encoder/interface: make Read() `noexcept` (all implementations are)
2022-07-12 10:07:38 +02:00
Max Kellermann
31d89b36cf
encoder/flac: use std::size_t
2022-07-12 09:53:16 +02:00
Max Kellermann
6b24344031
output/shout: move buffer to stack
2022-07-12 09:48:02 +02:00
Max Kellermann
c55e250c45
encoder/Interface: include cleanup
2022-07-11 22:38:24 +02:00
Max Kellermann
cd241a93c1
util/DynamicFifoBuffer: pass std::span to Append()
2022-07-11 22:38:24 +02:00
Max Kellermann
53acf7ae82
encoder/*: use std::byte instead of uint8_t
2022-07-11 22:38:24 +02:00
Max Kellermann
c34f6ed8c0
decoder/Client: pass std::span to SubmitData()
2022-07-11 22:37:38 +02:00
Max Kellermann
329c448d30
decoder/wavpack: use [[gnu::pure]]
2022-07-11 22:11:42 +02:00
Max Kellermann
a6619e9a13
decoder/wavpack: add "constexpr" and "const_cast"
2022-07-11 22:10:11 +02:00
Max Kellermann
24ce5da2b8
decoder/wavpack: convert pointer to reference
2022-07-11 22:08:49 +02:00
Max Kellermann
b4f751080d
decoder/wavpack: add `noexcept`
2022-07-11 22:06:10 +02:00
Max Kellermann
6d02edebc9
decoder/wavpack: rename "samples" to "frames"
2022-07-11 22:05:49 +02:00
Max Kellermann
349882ed75
decoder/wavpack: require libwavpack version 5
2022-07-11 22:04:15 +02:00
Max Kellermann
4464310e74
release v0.23.8
...
-----BEGIN PGP SIGNATURE-----
iQJBBAABCgArFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAmLIuEINHG1heEBibGFy
Zy5kZQAKCRAjbopYxttFEm1JD/9j/a82cNccPLUfTptgb8ak5fAnYA65edbtGPr9
dLv1BSjMrsTpMpgJ8FT5wjQn7H5drmE2GLvCN+oZUqaSz99F5BC+Hof7bfvv/sVF
opLTiZn2iAtanwtHP6ZEPPswTbdN2FgtZeFhJIGmFspghJV5hdbM7vbwNX1SIpc6
LH+WvE42ZG/w5wNajRvr6/lPYQhJc70wUqODXLzgdYu3WYmIclUAyFv7tVr067Hh
uXP6b6MZV60cqh+a0xX01n5kwDo2reqmmE0IY0Le7H6xg5quE7DzCVElTOAa7R1x
MZJCqY/thjvXl3JfHW5/ZwmiNrxsmx8nzGhrDyg4tb3hjbwip1iEI/OgnDyacdl4
34njeFxO40AJhienDWLAp2oSYh4pNdfjFvnfSJXeQ9HD2sIzGi692WUgzjdM1VmA
83iVRe9Bx4OTyAg1jwPOFyAYnRqhWsYFSp7GjwNBQwTRSwwBtmOxwAhWKwuspuLi
YfDoF7wGYVY5lOXuDBw+rvhGRWqGKsbQzZFy0bQFoD8dbwG9huLJCumNWZCbqELF
TAfU5sRcQlAjwSGncEpKOitYjdrtylYRb12p2DSedFuBWxcRGGPiCFfTVUKV8hz1
LGD1xj1g/4ClEUbfDNVwa7sAEO7o84Qojfkt/siBjhE427i11CpPGIlMCVeO2FkG
fI1f3Q==
=KgWM
-----END PGP SIGNATURE-----
Merge tag 'v0.23.8'
release v0.23.8
2022-07-09 01:08:16 +02:00
Max Kellermann
1f28790476
release v0.23.8
2022-07-09 01:05:38 +02:00
Max Kellermann
c8dae95eff
output/PipeWire: after Cancel(), refill buffer before resuming playback
...
Deactivate the stream in Cancel(). This fixes stuttering after a
manual song change by refilling the whole ring buffer before
reactivating the stream.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1354
2022-07-09 01:03:36 +02:00
Max Kellermann
547a084c7e
output/PipeWire: call pw_stream_flush() in Cancel()
...
Clear not only MPD's ring buffer, but also libpipewire's buffers, to
avoid playing some audio from the previous song after a manual song
change.
Fixes part 1 of https://github.com/MusicPlayerDaemon/MPD/issues/1354
2022-07-09 01:01:29 +02:00
Max Kellermann
493677ff81
output/PipeWire: skip Cancel() if already drained
2022-07-09 00:53:53 +02:00
Max Kellermann
6b430ba271
output/PipeWire: activate stream in Drain()
2022-07-09 00:53:20 +02:00
Max Kellermann
4b3dcf831b
output/Timer: add `noexcept`
2022-07-08 22:58:45 +02:00
Max Kellermann
bc6924d303
output/snapcast: fix busy loop while paused
...
Removing the LockHasClients(); this code was copied from the "httpd"
output plugin, but unlike "httpd", the SnapCast output plugin does not
feed silence while paused, so we need to implement a delay to avoid
busy-looping the CPU.
As a side effect, this eliminates the suttering after resuming
playback, because the timer now gets reset even if there is a client.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1394
2022-07-08 22:55:41 +02:00
Max Kellermann
02b00f9146
output/PipeWire: don't force initial volume=100%
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1484
2022-07-08 18:25:41 +02:00
Max Kellermann
e807ed5870
output/PipeWire: ignore SPA_PROP_channelVolumes if n_values==0
...
After connecting, PipeWire sometimes sends SPA_PROP_channelVolumes
with no values, and this led to "volume=-NaN".
2022-07-08 18:13:33 +02:00
Max Kellermann
f08944253b
output/PipeWire: check SPA_PROP_channelVolumes, not control name
...
Since PipeWire 0.3.53, there is no control name anymore, therefore the
name check doesn't work anymore, breaking volume change events.
This obsoletes the crash bug fix in commit 2ee57f9b0d
2022-07-08 18:06:36 +02:00
Max Kellermann
792d6584b9
output/PipeWire: move code to OnChannelVolumes()
2022-07-08 18:02:36 +02:00