Commit Graph

17629 Commits

Author SHA1 Message Date
Max Kellermann 20310437d0 .github/workflows/build.yml: build with Ubuntu 22.04 as well 2022-07-13 12:41:04 +02:00
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 Merge tag 'v0.23.8'
release v0.23.8
2022-07-09 01:08:16 +02:00
Max Kellermann 1f28790476 release v0.23.8 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