Max Kellermann
08272cdee2
decoder/ffmpeg: require FFmpeg 3.1 or later
...
Drop some compatibility code.
2018-11-04 21:55:06 +01:00
Max Kellermann
ac0852b4e3
song/Filter: operator "==" never searches substrings in filter expressions
...
The protocol documentation says that the difference between `find` and
`search` is that `search` is case insensitive, but that's only half
the truth: `search` also searches for sub strings instead of matching
the whole string. This part is undocumented and unfortunate, but at
this point, we can't change it.
However leaking this surprising behavior to the new filter expressions
was a bad idea; the "==" operator should never match substrings. For
people who need that, we should add a new operator.
2018-11-04 13:57:34 +01:00
Max Kellermann
6fe43ed969
song/StringFilter: add flag substring
...
Prepare to stop using substrings for filter expressions.
2018-11-04 13:49:47 +01:00
Max Kellermann
b34bc06624
song/StringFilter: use std::string::operator==
2018-11-04 13:49:38 +01:00
Max Kellermann
86f1074905
lib/xiph/meson.build: the Vorbis encoder requires the Vorbis decoder
...
Without the Vorbis decoder, `libvorbis` is never detected, leading to
linker failures when attempting to build the Vorbis encoder.
2018-11-04 12:21:23 +01:00
Max Kellermann
6f242836e6
lib/xiph/meson.build: fix typo, replace and
with or
...
Fixes linker failure when building without FLAC support.
Closes #400
2018-11-04 11:36:28 +01:00
Max Kellermann
f2c926f3b6
zeroconf/glue: add fallback value for HOST_NAME_MAX
...
`HOST_NAME_MAX` is not a portable macro; it is undefined on some
systems.
Closes #402
2018-11-04 11:12:03 +01:00
Max Kellermann
528f5b9cb9
song/Filter: allow escaping quotes in filter expressions
...
Closes #397
2018-11-02 19:15:08 +01:00
Max Kellermann
5a5229b499
net/IPv[46]Address: make the initializers more portable
...
Thanks to C++14, we can declare and fill variables inside `constexpr`
functions. This means me can stop make assumptions on the `struct`
layouts without losing `constexpr`.
Closes #393
2018-11-02 17:47:43 +01:00
Max Kellermann
bba22c9c8c
system/FileDescriptor: check __linux__
instead of __linux
...
`__linux` is the deprecated non-standard macros which appears to be
not present at all on PowerPC.
Closes #398
2018-11-02 16:50:38 +01:00
Max Kellermann
2a926063b2
src/lib/ffmpeg/meson.build: copy dependencies into ffmpeg_dep
...
Apparently, Meson propagates the linker flags but not the compiler
flags from a `static_library`'s dependencies list.
Closes #392
2018-11-01 19:14:00 +01:00
Max Kellermann
657ef48518
zeroconf/glue: use strstr() and std::string::replace() instead of std::regex_replace()
...
std::regex_replace() is heavily bloated and overkill for this feature.
2018-10-31 19:26:37 +01:00
Max Kellermann
8a492c8f39
Merge branch 'bug516974' of git://github.com/fschlich/MPD
2018-10-31 19:20:41 +01:00
Max Kellermann
901a48c9a4
command/sticker: return ACK_ERROR_NO_EXIST for "no such sticker"
...
Closes #389
2018-10-31 19:19:07 +01:00
Max Kellermann
f5c9071494
*: copyright year 2018
2018-10-31 17:54:59 +01:00
Florian Schlichting
d1f85240a2
include hostname in zeroconf_name ( fixes #387 )
...
expand %h to the system hostname and default to a zeroconf string that
contains %h
2018-10-31 17:54:45 +01:00
Max Kellermann
2148d4bb31
fs/io/FileOutputStream: fix -Wcomment
2018-10-31 17:18:44 +01:00
Max Kellermann
e79d06d595
fs/io/FileOutputStream: don't use O_TMPFILE on Android
...
Fixes writing to Context.getCacheDir().
2018-10-31 17:12:21 +01:00
Max Kellermann
c60cf944f5
fs/io/FileOutputStream: add macro HAVE_O_TMPFILE
2018-10-31 17:10:52 +01:00
Max Kellermann
06ca08ce55
output/roar: remove
...
Bugs in libroar which broke the MPD build have been annoying me for
quite some time, and the newest bug has now hit my main build machine:
https://github.com/MusicPlayerDaemon/MPD/issues/377
Problem is the usage of the typedef `_IO_off64_t` in libroar's
`vio_stdio.h`:
int roar_vio_to_stdio_lseek (void *__cookie, _IO_off64_t *__pos, int __w);
This `_IO_off64_t` is an internal implementation detail of glibc and
was removed in version 2.28. Nobody must ever use it. Why the ****
did the RoarAudio developers use it? Not using internal typedefs
isn't exactly rocket science.
This annoys me enough to finally remove the plugin. Anyway, I've
never heard of anybody using RoarAudio, so my best guess is that
nobody will notice.
2018-10-31 15:03:28 +01:00
Max Kellermann
9fc00a817b
Listen: use fs/XDG.hxx
...
This keeps one central place for the XDG switch. Specifically, this
disables the XDG listener on Apple, where XDG is not supported.
2018-10-31 14:30:34 +01:00
Max Kellermann
f47696f5f8
fs/StandardDirectory: move USE_XDG to XDG.hxx
2018-10-31 13:39:20 +01:00
Florian Schlichting
db21d7de0b
fix compilation errors on Debian GNU/Hurd
...
Apparently on hurd-i386 __GLIBC__ is defined, but the pthread
implementation is special and cannot be used with constexpr. Hence
exclude __gnu_hurd__.
2018-10-31 12:24:34 +01:00
Max Kellermann
56112a237c
Listen: listen on $XDG_RUNTIME_DIR/mpd/socket by default
2018-10-30 22:14:54 +01:00
Max Kellermann
64da9399ca
event/ServerSocket: allow mixing AddFD() with other Add*() methods
2018-10-30 22:14:53 +01:00
Max Kellermann
0ec31b4aa4
Listen: eliminate listen_add_config_param()
2018-10-30 21:14:39 +01:00
Max Kellermann
a943f4063c
event/ServerSocket: add AddFD() overload with AllocatedSocketAddress&&
2018-10-30 20:44:56 +01:00
Max Kellermann
ce9f09c69a
event/ServerSocket: make AddAddress() a template
2018-10-30 20:43:52 +01:00
Max Kellermann
3ddc7a5353
event/ServerSocket: include cleanup
2018-10-30 20:19:07 +01:00
Max Kellermann
e575392b94
event/ServerSocket: use class IPv6Address
2018-10-30 20:19:04 +01:00
Max Kellermann
c6f61a699c
event/ServerSocket: make OneServerSocket an inner class
2018-10-30 20:16:26 +01:00
Max Kellermann
0307b49f43
event/ServerSocket: make OnAccept() noexcept
2018-10-30 20:13:07 +01:00
Max Kellermann
413ab80295
event/ServerSocket: use C++11 initializer
2018-10-30 20:11:58 +01:00
Max Kellermann
daffefdb10
event/ServerSocket: pass UniqueSocketDescriptor to AddFD()
2018-10-30 20:05:57 +01:00
Max Kellermann
5fb21fbdb1
event/ServerSocket: add noexcept
2018-10-30 19:57:39 +01:00
Max Kellermann
f5857c4689
net/SocketUtil: update API documentation
2018-10-30 19:56:10 +01:00
Max Kellermann
c97469283c
pcm: build dsd2pcm only if -Dtest=true
2018-10-30 13:31:43 +01:00
Max Kellermann
9b1f44e758
LogInit: work around two Android compiler warnings
2018-10-30 13:23:10 +01:00
Max Kellermann
804ccddf7e
pcm/Clamp: convert to constexpr
2018-10-30 00:08:25 +01:00
Max Kellermann
bb5918932b
pcm/PcmUtils: rename to Clamp.hxx
2018-10-30 00:05:58 +01:00
Max Kellermann
aa77bc323f
pcm/FloatConvert: make IntegerToFloatSampleConvert::Convert() constexpr
2018-10-29 23:52:25 +01:00
Max Kellermann
9b6a2589e5
Merge branch 'v0.20.x'
2018-10-29 23:06:32 +01:00
Max Kellermann
cc5fab28af
pcm/FloatConvert: fix compile-time integer overflow for S32
...
The compile-time calculation for `factor` overflows because `1<<31`
cannot be represented by `int`. By casting to `uintmax_t` first, we
can avoid this overflow.
Closes #380
2018-10-29 22:50:54 +01:00
Max Kellermann
a3f7127e72
pcm/FloatConvert: use FloatToIntegerSampleConvert::factor for IntegerToFloatSampleConvert::factor
2018-10-29 22:50:06 +01:00
Max Kellermann
b0a6a569df
pcm/FloatConvert: add static_assert
on the factor
...
This assertion currently fails for S32 due to integer overflow (#380 ).
2018-10-29 22:38:32 +01:00
Max Kellermann
92523f8cf2
input/CdioParanoia: parse_cdio_uri() returns CdioUri
...
The `bool` return value isn't used anymore, so we can just return the
parsed object instead of passing it as an output parameter.
2018-10-29 14:34:33 +01:00
Max Kellermann
e33c08357a
input/CdioParanoia: rename struct cdio_uri to CdioUri
2018-10-29 14:34:30 +01:00
Max Kellermann
2dc5648e57
input/CdioParanoia: use StringAfterPrefixIgnoreCase()
2018-10-29 14:34:30 +01:00
Max Kellermann
d0349880da
util/StringCompare: add StringAfterPrefixIgnoreCase()
2018-10-29 14:34:29 +01:00
Max Kellermann
7aa1dceef6
player/Control: move IDLE_PLAYER to Player::SeekDecoder()
...
This emits the event even if PlayerControl::Play() is used to replay
the current song, which emits the missing "player" idle event.
Closes #381
2018-10-29 12:01:48 +01:00
Max Kellermann
f76544be4c
db/update: catch all exceptions
2018-10-29 11:05:50 +01:00
Max Kellermann
1e6c445320
configure.ac: add -funwind-tables
to work around clang bug
...
Replaces the workaround from commit
751fff07fb
which fixed only one of many
crash locations.
See:
https://github.com/MusicPlayerDaemon/MPD/issues/373
https://github.com/android-ndk/ndk/issues/831
https://bugs.llvm.org/show_bug.cgi?id=32611
2018-10-29 11:05:35 +01:00
Max Kellermann
eeae9a04d3
input/Registry: add missing include
2018-10-25 09:21:13 +02:00
Max Kellermann
8bb35e7bb6
decoder/Thread: reimplement HasRemoteTagScanner() using the InputPlugin list
2018-10-25 09:09:21 +02:00
Max Kellermann
3e78c9ab48
input/Plugin: add attribute prefixes
2018-10-24 20:25:32 +02:00
Max Kellermann
9ec86acb9c
decoder/Thread: enable output tags for Tidal and Qobuz
...
Fixes formatted paths in the `recorder` output, closing #345 .
2018-10-24 16:38:26 +02:00
Max Kellermann
426bde3f75
decoder/Thread: move check to SongHasVolatileTags()
2018-10-24 16:32:41 +02:00
Max Kellermann
30e22b753b
tag/Chromaprint: OO wrapper for a ChromaprintContext
2018-10-24 10:52:45 +02:00
Max Kellermann
f7141c9201
decoder/Control: convert to class, make various attributes private
2018-10-24 10:47:34 +02:00
Max Kellermann
c2a2573aa5
release v0.20.22
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlvPX+UQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFElO8EACgPMaiN3m/x1hzJ3QTLzCXgeqSG1vuv1tC
F+sFISLPx/IoVjTpvd9H8jMt7lD+SYB620pAfNyLIGZpWcTxu1wmaviOghqCqnGP
sql0vtS9CrRGhsKDi5earox3zecylWJ3PRPXpy/4NjFuFUxE2ij/wbXzDb9UbtMg
1WnVL++fAlFj54CnPR35XHglYU+X7/bMWApkVUfsKBgyX9aghqLYUIm0jaUjj3Bs
xB/2Nemd1A88yrc4kqyzbFsN96S/W2eXhDYfPlDwFdplfoRJ8nrEMdwrsn0nabIF
7x+OsAGAfrz3e00TZdiDSaIy7VU4EFV9ctZVonoCGUluBHL0iG7G7bj2cnd+hVnZ
ecidfHMUqVO99elmUtWsUQwzbhL/TxM6Fzn2qDwqdwcCWDgHcn4fpXfsY0MRt6NK
cUhCyspMTuhqS3ohLO6RfiWDActm6QL2IHiDty/WAe1Td0VjOiRQMq7CADHlgn/D
IalN8kGyWHK5ew+3Iiw5zRoYjNXG4ALZN8cEqVh2R7i2uxh8+qm46HkhticAjfDM
4mETs3oAZdpOGCgv6Q0eY7tQDKB13DD/303NJaVFb6Iew2TZCWDbFz5HjqYShCZi
PgnPosdRg0LoQbMah4Uhsj6frs6LEBMpg6c7nScJN/1MoRaOyVNDg03X+rBmPe5z
XULvdsZ8Sw==
=8OQx
-----END PGP SIGNATURE-----
Merge tag 'v0.20.22'
release v0.20.22
2018-10-23 20:10:57 +02:00
Max Kellermann
751fff07fb
input/Error: work around clang bug leading to crash
...
Closes #373
2018-10-23 19:52:22 +02:00
Max Kellermann
005e691339
decoder/fluidsynth: adapt to API change in version 2.0
...
Closes #360
2018-10-23 18:44:28 +02:00
Max Kellermann
c26703b7e6
SongFilter: check value.empty() after checking tag fallbacks
...
In this new order, a filter 'AlbumArtist ""' matches only on songs
which neither have `AlbumArtist` nor `Artist`.
2018-10-22 18:34:47 +02:00
Max Kellermann
66ab2de578
Merge branch 'v0.20.x'
2018-10-22 18:20:29 +02:00
Max Kellermann
db27bb76e2
db: fix broken command "list ... group"
...
Grouping in the "list" command was completely broken from the start,
unlike "count group". I have no idea what I have been thinking when I
wrote commit ae178c77bd
, but it didn't
make any sense.
This commit is a rewrite of the feature.
For clients to be able to detect this feature, this commit also
increments the protocol version.
2018-10-22 13:08:24 +02:00
Max Kellermann
7cfe929c36
db/Count: print empty group if song without grouped tag exists
...
Be consistent with "list" responses.
2018-10-22 12:42:18 +02:00
Max Kellermann
6c06244e83
db/Count: move code to tag/VisitCallback.hxx
2018-10-22 11:50:51 +02:00
Max Kellermann
53448e4633
tag/Fallback: add tag fallbacks for AlbumArtistSort, ArtistSort
...
Just like AlbumArtist falls back to Artist, AlbumArtistSort should
fall back tom AlbumArtist, ArtistSort and finally Artist.
Closes #355
2018-10-22 10:52:42 +02:00
Max Kellermann
21adc78713
SongFilter: use ApplyTagFallback()
2018-10-22 10:46:26 +02:00
Max Kellermann
0340b01392
db/Count: use ApplyTagFallback()
2018-10-22 10:46:26 +02:00
Max Kellermann
94aed92e9a
tag/Set: move code to ApplyTagWithFallback()
2018-10-22 10:10:43 +02:00
Max Kellermann
6b9966e969
tag/Set: include cleanup
2018-10-22 10:09:56 +02:00
Max Kellermann
4bc5333995
tag/Set: use TagBuilder::AddItemUnchecked()
...
This improves the workaround from commit
b5ba94f1de
and actually gives a useful
result for "list" with a disabled tag.
2018-10-22 10:06:04 +02:00
Max Kellermann
ff58b8d255
tag/Builder: move code to AddItemUnchecked()
2018-10-22 10:03:47 +02:00
Max Kellermann
e28d1e0f65
decoder/mad: convert Tag**
parameter to just Tag*
2018-10-22 09:44:54 +02:00
Max Kellermann
a491d8ae24
decoder/mad: use class UniqueId3Tag
2018-10-22 09:44:50 +02:00
Max Kellermann
3cd5dd15f8
decoder/mad: don't initialize xing::frames
2018-10-22 09:44:48 +02:00
Max Kellermann
562ae44d38
decoder/mad: remove unused attribute from xing::magic
2018-10-22 09:44:46 +02:00
Max Kellermann
92541dedc0
Merge branch 'master' of git://github.com/skidoo23/MPD
2018-10-22 09:44:36 +02:00
Max Kellermann
650a67dc38
decoder/mad: use mad_bit_skip() where appropriate
2018-10-19 20:24:16 +02:00
Max Kellermann
c63f24e58e
decoder/audiofile: larger stack buffer to reduce overhead
2018-10-19 20:04:28 +02:00
Max Kellermann
3be8b02cc2
decoder/sndfile: make vio
constexpr
...
Use `const_cast` to be able to pass it to sf_open_virtual() which has
a wrong parameter declaration.
2018-10-19 19:51:17 +02:00
Max Kellermann
bdfaea0c25
decoder/mad: move parse_id3_mixramp() to src/tag/Id3ReplayGain.cxx
2018-10-19 19:45:32 +02:00
Max Kellermann
ed5c0d6546
tag/Id3Scan: make struct id3_tag pointers const
2018-10-19 19:43:03 +02:00
Max Kellermann
86dc621086
tag/Rva2: make struct id3_tag pointers const
2018-10-19 19:41:59 +02:00
skidoo23
fbea965c70
tag: new tag Label
2018-10-17 20:33:03 +02:00
Max Kellermann
eefc0f5d80
input/Error: add noexcept
2018-10-16 21:26:04 +02:00
skidoo23
69749eb591
decoder/sidplay: fix typo to avoid linker error with meson (libsidplayfp)
2018-10-16 14:56:40 +02:00
Max Kellermann
94592c1406
build with Meson instead of autotools
...
So long, autotools! This is my last MPD related project to migrate
away from it. It has its strengths, but also very obvious weaknesses
and weirdnesses. Today, many of its quirks are not needed anymore,
and are cumbersome and slow. Now welcome our new Meson overlords!
2018-10-14 23:41:38 +02:00
skidoo23
f80ebf68b0
decoder/wavpack: fix warning 'unused variable is_dsd' when compiled with --enable-dsd=no
2018-10-12 01:02:34 +02:00
Max Kellermann
1155a29096
Merge branch 'cdda_set_cdspeed' of git://github.com/andrewbasterfield/MPD
2018-10-08 21:16:52 +02:00
Max Kellermann
030e603940
decoder/gme: fix include
...
Broken since commit 08f77c2b60
2018-10-07 22:33:52 +02:00
Andrew Basterfield
9c1bf9ac5f
Remove some extraneous leftover debugging
2018-10-07 19:21:38 +01:00
Andrew Basterfield
2f07b8f482
Set cdrive speed hint for cdparanoia
2018-10-06 20:18:19 +01:00
Max Kellermann
6c40a27809
db/update/ExcludeList: fix variable name in #else block
2018-10-01 08:40:53 +02:00
Max Kellermann
8736a3533b
db/update/ExcludeList: add missing #ifdef
2018-10-01 08:40:15 +02:00
Max Kellermann
608d232373
util/SliceBuffer: re-add line which got lost in the last commit
2018-09-23 19:33:34 +02:00
Max Kellermann
1702e98fdf
util/SliceBuffer: move code to DiscardMemory()
2018-09-23 19:15:28 +02:00
Max Kellermann
2ec94c0497
player/Control: start thread on demand
...
Keep MPD's footprint small until playback is requested.
2018-09-23 17:32:34 +02:00
Max Kellermann
bf372e3e1f
player/Control: move public methods up
2018-09-23 17:28:41 +02:00