Commit Graph

14632 Commits

Author SHA1 Message Date
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
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
Max Kellermann
7b45d01462 output/PipeWire: update field "volume" 2022-07-08 17:44:39 +02:00
Max Kellermann
5c17b2966a output/PipeWire: use std::accumulate 2022-07-08 17:44:08 +02:00
Max Kellermann
0c54f29446 output/PipeWire: document field "volume" 2022-07-08 17:30:57 +02:00
Max Kellermann
9c3cf39fdd output/PipeWire: catch exceptions in ParamChanged()
Fixes a potential crash bug.
2022-07-08 17:24:41 +02:00
Max Kellermann
d2fb229685 output/PipeWire: call ::SetVolume() in ParamChanged()
This is a lower-level function without some of the clutter of
PipeWireOutput::SetVolume() which is not needed in that case.
2022-07-08 17:21:17 +02:00
Max Kellermann
f55bc6682f output/PipeWire: move code to ::SetVolume() 2022-07-08 17:19:10 +02:00
Max Kellermann
6857286b42 decoder/Thread: don't scan for replay gain tags in PCM streams
This disables a long delay for playing songs from the cdio_paranoia
input plugin if ReplayGain is enabled.
2022-07-08 16:33:19 +02:00
Max Kellermann
c0d5bd2048 decoder/Thread: move code to DecoderControl::LockIsReplayGainEnabled() 2022-07-08 16:21:53 +02:00
Max Kellermann
666e5d7904 input/CdioParanoia: use integer modulo to calculate "diff" 2022-07-08 16:04:05 +02:00
Max Kellermann
3613407ac5 input/CdioParanoia: use typedef lsn_t 2022-07-08 16:03:04 +02:00
Max Kellermann
c32dceb4d4 input/CdioParanoia: remove loop from Read()
The Read() method is not required to fill the whole buffer.  By
returning as soon as at least one byte was read, we allow faster
cancellation.
2022-07-08 16:01:23 +02:00
Max Kellermann
5573e78364 input/CdioParanoia: skip seek if seeking within the buffer 2022-07-08 13:57:11 +02:00
Max Kellermann
807a19889f input/CdioParanoia: update offset only after successful seek
If seeking fails, don't leave the class with a wrong offset.
2022-07-08 13:57:11 +02:00
Max Kellermann
df7242de91 input/CdioParanoia: eliminate redundant field "lsn_relofs" 2022-07-08 13:36:59 +02:00
Max Kellermann
d62426f168 input/CdioParanoia: eliminate redundant field "lsn_to"
Use "size" instead.
2022-07-08 12:42:49 +02:00
Max Kellermann
1714cf3417 input/CdioParanoia: use IsEof() in Read() 2022-07-08 12:42:42 +02:00
Max Kellermann
1080c917be input/CdioParanoia: use std::min() 2022-07-08 12:37:21 +02:00
Max Kellermann
8eb3164878 input/CdioParanoia: fix crash if no drive was found
cdio_get_devices_with_cap() can return nullptr if no drive was found,
or it can instead return an empty list.  The latter caused MPD to
crash.
2022-07-08 12:05:20 +02:00
Max Kellermann
915c5442d1 input/CdioParanoia: use AtScopeExit() for cdio_free_device_list() 2022-07-08 12:03:57 +02:00
Max Kellermann
4d6ae6ffdd output/PipeWire: add nullptr check to SetVolume()
If the PipeWire output has not yet been enabled and no thread_loop has
been created yet, a nullptr dereference in SetVolume() was possible
because nullptr was passed to pw_thread_loop_lock().
2022-07-08 11:32:59 +02:00
Max Kellermann
ecee6f415b mixer/MixerInternal: remember error details
If a mixer is not open, rethrow the original exception each time
setting the volume is requested.  This further improves error messages
sent to MPD clients.
2022-07-08 11:11:53 +02:00
Max Kellermann
47680f936b mixer/All: auto-open "global" mixers
If a mixer is "global", it is available even if the output isn't
open.  However, since the check was changed from IsEnabled() to
IsReallyEnabled(), enabled outputs have not yet been used have not
been "really" enabled yet, preventing using the mixer.

Fixes a regression by commit 35dbc1a90c
(part of https://github.com/MusicPlayerDaemon/MPD/pull/1480).

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1563
2022-07-08 11:05:26 +02:00
Max Kellermann
2d7181105d output/MultipleOutputs: SetVolume() throws on error
This reveals more about the nature of an error instead of just
returning "problems setting volume".
2022-07-08 10:56:55 +02:00
Max Kellermann
9bdc75524b python/build/libs.py: update CURL to 7.84.0 2022-07-08 10:13:52 +02:00
Max Kellermann
138738075b libfmt 9 support
libfmt version 9 broke the API by removing fmt::make_args_checked().

Fixes https://bugs.debian.org/1014543
2022-07-08 10:06:53 +02:00
Max Kellermann
7dd65f3028 Merge branch 'v0.23.x' 2022-07-04 19:21:18 +02:00
Max Kellermann
2ee57f9b0d output/PipeWire: add nullptr check, fixing crash with PipeWire 0.3.53
Since PipeWire 0.3.53, control names can apparently be nulled, leading
to crashes in applications assertion that the string cannot be
nullptr.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1558
2022-07-04 19:20:08 +02:00
Max Kellermann
bc56f8c2f0 util/ConstBuffer: remove obsolete library
Everything has been migrated to std::span.
2022-07-04 19:15:10 +02:00
Max Kellermann
596ff7e6bf output/*: use std::span instead of ConstBuffer 2022-07-04 19:14:12 +02:00
Max Kellermann
e8667f99be util/OptionParser: use std::span instead of ConstBuffer 2022-07-04 19:04:16 +02:00
Max Kellermann
9b427b3171 command/*: use std::span instead of ConstBuffer 2022-07-04 18:58:13 +02:00
Max Kellermann
baff5e5594 lib/yajl: use std::span instead of ConstBuffer 2022-07-04 18:37:36 +02:00
Max Kellermann
020c9b41cc lib/icu: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
e975e2e477 lib/ffmpeg: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
4e1dc562f7 lib/curl: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
d097babe73 lib/chromaprint: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
8fa212f04d lib/cdio: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
b9c9a5f1dd db/*: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
4fb8b45111 song/Filter: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
6c107443d3 input/qobuz: include cleanup 2022-07-04 18:37:35 +02:00
Max Kellermann
67c6d111a8 filter/*: use std::span instead of ConstBuffer 2022-07-04 18:37:35 +02:00
Max Kellermann
9675cc77e2 decoder/*: use std::span instead of ConstBuffer 2022-07-04 18:11:21 +02:00
Max Kellermann
4ce1dae673 pcm/*: use std::span instead of ConstBuffer 2022-07-04 18:11:21 +02:00
Max Kellermann
d89136b09c util/ConstBuffer: hard-code std::span support 2022-07-04 18:09:32 +02:00
Max Kellermann
d58c38943a util/StringView: remove obsolete class
Everything has been migrated to std::string_view.
2022-07-04 15:04:31 +02:00
Max Kellermann
66704ec879 util/UriExtract: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
422c1e9288 util/TemplateString: remove StringView support 2022-07-04 15:04:31 +02:00
Max Kellermann
683f0da2e7 tag/*: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
c7a8fc91c0 storage/curl: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
cfd255a014 lib/xiph: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
1c30b3d5a1 lib/dbus/UDisks2: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
4964eda167 fs/StandardDirectory: use std::string_view instead of StringView 2022-07-04 15:04:31 +02:00
Max Kellermann
502e5f006a decoder/*: use std::string_view instead of StringView 2022-07-04 14:50:18 +02:00
Max Kellermann
23235e3194 db/upnp/Directory: use std::string_view instead of StringView 2022-07-04 14:50:18 +02:00
Max Kellermann
93834fe389 db/simple/Directory: use std::string_view instead of StringView 2022-07-04 14:50:18 +02:00
Max Kellermann
bd32b229b5 config/Path: use std::string_view instead of StringView 2022-07-04 14:41:39 +02:00
Max Kellermann
c7d2cb855a Permission: use std::string_view instead of StringView 2022-07-04 14:38:29 +02:00
Max Kellermann
04c924ae3b playlist/Registry: use std::string_view instead of StringView 2022-07-04 14:36:21 +02:00
Max Kellermann
6c8a85a391 playlist/{asx,cue,rss,xspf}: use std::string_view instead of StringView 2022-07-04 14:35:52 +02:00
Max Kellermann
74780131bd lib/zlib/GzipOutputStream: add SyncFlush() 2022-07-04 10:09:04 +02:00
Max Kellermann
2c092d2613 lib/zlib/GzipOutputStream: add exception API docs 2022-07-04 10:08:55 +02:00
Max Kellermann
171b31ae67 lib/zlib/GzipOutputStream: rename Flush() to Finish() 2022-07-04 10:08:54 +02:00
Max Kellermann
5b3abe2c9c lib/zlib/GzipOutputStream: grow Write() buffer to 64 kB 2022-07-04 10:08:53 +02:00
Max Kellermann
59186f1fb0 event/Loop: include cleanup 2022-07-04 09:55:48 +02:00
Max Kellermann
5e68531428 event/SocketEvent: move ssize_t to class BufferedSocket 2022-07-04 09:54:08 +02:00
Max Kellermann
e7b15a9041 lib/curl/Request: remove obsolete method prototypes 2022-07-02 18:42:08 +02:00
Max Kellermann
853afa1bce lib/curl/Adapter: add missing StripLeft() call
Fixes regression by commit 88a66df9d6
2022-07-02 18:36:15 +02:00
Max Kellermann
627fd755e8 lib/curl/Adapter: remove redundant size check 2022-07-01 16:54:47 +02:00
Max Kellermann
88a66df9d6 lib/curl/Adapter: use std::string_view internally 2022-07-01 16:51:37 +02:00
Max Kellermann
af951dc08a Merge branch 'v0.23.x' 2022-07-01 12:45:07 +02:00
Max Kellermann
5a5655b790 lib/curl/Adapter: catch and postpone exceptions in WriteFunction()
This fixes a std::terminate() crash in the CURL storage plugin when
PropfindOperation::OnHeaders() throws an exception after receiving a
non-207 status.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1559
2022-07-01 12:43:42 +02:00
Max Kellermann
b88d1e6820 lib/curl/Headers: make the comparison type "transparent" 2022-07-01 12:17:41 +02:00
Max Kellermann
19d2864c34 lib/curl/Headers: central type definition for the header map 2022-07-01 12:17:36 +02:00
Max Kellermann
29e3a17f26 lib/curl/Request: move code from SetupEasy() to Setup.cxx 2022-07-01 12:17:26 +02:00
Max Kellermann
252e9f736f lib/curl/Request: move code to class CurlResponseHandlerAdapter 2022-07-01 12:17:20 +02:00
Max Kellermann
5d08988dda lib/curl/Handler: fix typo 2022-07-01 12:17:17 +02:00
Max Kellermann
47ca4246aa lib/curl/Request: add constructor with CurlEasy parameter 2022-07-01 12:17:13 +02:00
Max Kellermann
f8338d4f00 lib/curl/Request: use std::size_t 2022-07-01 12:16:59 +02:00
Max Kellermann
5cf6032c90 lib/curl/Request: move code to SetupEasy() 2022-07-01 12:16:55 +02:00
Max Kellermann
8d8b77412d lib/curl/Request: add API docs 2022-07-01 12:16:50 +02:00
Max Kellermann
d882c3361d playlist/PlaylistPlugin: use std::string_view 2022-07-01 11:31:31 +02:00
Max Kellermann
9d50306e2f lib/xiph/ScanVorbisComment: use std::string_view 2022-07-01 11:30:44 +02:00
Max Kellermann
96f99aeb8f TagPrint: use std::string_view 2022-07-01 11:29:58 +02:00
Max Kellermann
ed7263ee3e decoder/OpusTags: use std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
f32d752ccb util/NumberParser: use std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
671b7e079f decoder/OpusReader: use std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
e10b15010c decoder/OpusReader: add noexcept 2022-07-01 11:29:11 +02:00
Max Kellermann
02fe857755 util/IterableSplitString: return std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
ea3f044cd8 util/SplitString: use std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
e6bb6c59ec storage/Composite: use std::string_view 2022-07-01 11:29:11 +02:00
Max Kellermann
6d23ac67f9 util/UriQueryParser: use std::string_view 2022-07-01 11:29:10 +02:00
Max Kellermann
ca46b4d7a7 util/MimeType: use std::string_view 2022-07-01 11:29:10 +02:00
Max Kellermann
0727ee94c0 tag/Id3Scan: use std::string_view 2022-07-01 11:29:10 +02:00
Max Kellermann
21e4c25e61 playlist/cue/CueParser: more std::string_view 2022-07-01 11:29:10 +02:00
Max Kellermann
e921c0b40b lib/yajl/Callbacks: use std::string_view 2022-07-01 11:16:42 +02:00
Max Kellermann
c05d4cddfb input/qobuz: use std::string_view 2022-07-01 11:16:42 +02:00
Max Kellermann
c9723ee4b7 playlist/SoundCloud: use std::string_view 2022-07-01 11:16:42 +02:00
Max Kellermann
ca90c75c61 lib/alsa/AllowedFormat: pass std::string_view to constructor 2022-07-01 10:57:49 +02:00
Max Kellermann
9976665cc7 util/UriRelative: use std::string_view internally 2022-07-01 10:56:29 +02:00
Max Kellermann
c5f037fa64 util/StringCompare: move code from StringView 2022-07-01 10:48:34 +02:00
Max Kellermann
5ec13c0b06 util/StringStrip: add libc++ compatibility kludge 2022-07-01 10:45:37 +02:00
Max Kellermann
60ca12e4bd db/simple/Song: use std::string_view 2022-06-30 21:04:13 +02:00
Max Kellermann
67fcf7d7c5 output/ao: add missing include 2022-06-30 21:03:25 +02:00
Max Kellermann
c953ed48b7 output/ao: use std::string_view 2022-06-30 21:01:29 +02:00
Max Kellermann
6440df60aa output/jack: use std::string_view 2022-06-30 21:00:23 +02:00
Max Kellermann
b806b0a97f util/StringStrip: add std::string_view overloads 2022-06-30 21:00:07 +02:00
Max Kellermann
10197a0041 util/IterableSplitString: use std::string_view internally 2022-06-30 20:54:42 +02:00
Max Kellermann
166885802a util/StringSplit: move code from StringView.hxx 2022-06-30 20:40:41 +02:00
Max Kellermann
4a97c45585 tag/Config: use IterableSplitString instead of SplitString() 2022-06-30 20:39:39 +02:00
Max Kellermann
0173d3b313 util/IterableSplitString: use StringView::Split() 2022-06-30 20:37:58 +02:00
Max Kellermann
aadd32c973 util/IterableSplitString: add noexcept 2022-06-30 20:34:04 +02:00
Max Kellermann
0f4bf5569a event/InotifyEvent: new class wrapping inotify
Replaces class InotifySource.
2022-06-30 12:05:50 +02:00
Max Kellermann
a7b7e35512 tag/ReplayGainParser: use std::string_view 2022-06-30 10:59:56 +02:00
Max Kellermann
11135b48e6 tag/MixRampParser: use std::string_view 2022-06-30 10:59:27 +02:00
Max Kellermann
d0382caa88 tag/ApeLoader: use std::string_view 2022-06-30 10:58:22 +02:00
Max Kellermann
4765726bda tag/VorbisComment: use std::string_view 2022-06-30 10:57:01 +02:00
Max Kellermann
455a412aaa tag/Table: use std::string_view 2022-06-30 10:53:26 +02:00
Max Kellermann
1a2b505979 tag/ParseName: use std::string_view 2022-06-30 10:52:21 +02:00
Max Kellermann
c34f3c9b94 tag/Handler: use StringIsEqualIgnoreCase() 2022-06-30 10:50:56 +02:00
Max Kellermann
232084c2f9 playlist/cue/CueParser: use std::string_view in public API 2022-06-30 10:50:53 +02:00
Max Kellermann
2ba092711f event/net/UdpListener: use IsSocketErrorReceiveWouldBlock() 2022-06-30 10:32:25 +02:00
Max Kellermann
8aa4227c0c net/SocketAddress: add std::span cast operators 2022-06-30 10:30:54 +02:00
Max Kellermann
81afb47cd0 util/ByteOrder: add class PackedBE64 2022-06-30 10:30:54 +02:00
Max Kellermann
60a3aae35f io/FileDescriptor: add OpenReadOnly() overload with directory fd 2022-06-30 10:30:54 +02:00
Max Kellermann
bc3415ce8b Copyright year 2022 2022-06-30 09:41:53 +02:00
Max Kellermann
3f1acd3642 lib/avahi/Publisher: fix comment typo 2022-06-30 09:38:44 +02:00
Max Kellermann
4564d251a8 zeroconf/avahi: move generic sources to lib/avahi 2022-06-30 09:37:30 +02:00
Max Kellermann
8783ed1981 lib/curl/Adapter: use std::string_view 2022-06-29 17:38:58 +02:00
Max Kellermann
1da09f5b1b lib/curl: use std::span 2022-06-29 17:37:12 +02:00
Max Kellermann
062df65b1e lib/dbus: use std::span 2022-06-29 17:32:58 +02:00
Max Kellermann
899eaa3307 io/FileDescriptor: add Duplicate() returning UniqueFileDescriptor 2022-06-29 17:31:37 +02:00
Max Kellermann
5140eaa5e7 util/IntrusiveList: use std::is_base_of_v 2022-06-29 17:30:11 +02:00
Max Kellermann
cca20fec07 event/FineTimerEvent: adjust "friend" declaration 2022-06-29 17:29:44 +02:00
Max Kellermann
12d67dad35 net/SocketError: support ETIMEDOUT 2022-06-29 17:28:47 +02:00
Max Kellermann
8a68d085b4 util/IntrusiveList: add option "constant_time_size" 2022-06-29 17:28:39 +02:00
Max Kellermann
e437cc4faf util/IntrusiveList: add size() 2022-06-29 17:28:35 +02:00
Max Kellermann
1fb858e2d7 util/IntrusiveList: add struct IntrusiveListMemberHookTraits 2022-06-29 17:28:16 +02:00
Max Kellermann
3945a3add9 util/MemberPointer: new library 2022-06-29 17:28:15 +02:00
Max Kellermann
5348a446a7 util/IntrusiveList: move various static functions to struct IntrusiveListBaseHook 2022-06-29 17:27:40 +02:00
Max Kellermann
e8e33d5fc4 util/IntrusiveList: add missing ToHook() calls 2022-06-29 17:27:37 +02:00
Max Kellermann
c28580745b util/IntrusiveList: move struct HookDetection to top-level 2022-06-29 17:24:08 +02:00
Max Kellermann
e7b587d550 util/CopyConst: use std::add_const 2022-06-29 17:23:50 +02:00
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