Commit Graph

14465 Commits

Author SHA1 Message Date
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
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