Max Kellermann
a189a9e478
util/TransformN: new library
2019-08-10 11:59:47 +02:00
Fredrik Noring
9654a33218
decoder/sidplay: Fix empty album names by using the SID name field
...
SID files are generally collections of tunes, so a SID name field makes
sense as an MPD album. The SID tune information list (STIL) has name
and title fields for individual tunes, when such are known, but MPD is
currently not using the STIL.
2019-08-10 11:01:15 +02:00
Max Kellermann
9bcd02d178
Merge branch 'v0.21.x'
2019-08-10 10:58:32 +02:00
Fredrik Noring
2d61e526de
decoder/sidplay: Fix date field to have year but not company or author
...
Field 2 is called <released>, formerly used as <copyright>[1][2]. It is
formatted <year><space><company or author or group>, where <year> may be
<YYYY>, <YYY?>, <YY??> or <YYYY-YY>, for example "1987", "199?", "19??"
or "1985-87". The <company or author or group> may be for example Rob
Hubbard. A full field may be for example "1987 Rob Hubbard".
This change splits the <released> field at the first <space>, to retain
the <year> part.
The 51823 SID files in High Voltage SID Collection (HVSC) version 71
have the following distribution of dates:
333 19?? 11 1990-92 6 1995-99 2 2006-08
827 198? 88 1990-93 2140 1996 530 2007
32 1982 69 1990-94 9 1996-97 15 2007-08
1 1982-83 49 1990-95 2 1996-98 2 2007-09
255 1983 3467 1991 5 1996-99 1 2007-10
677 1984 75 1991-92 1840 1997 430 2008
775 1985 65 1991-93 4 1997-98 23 2008-09
3 1985-86 10 1991-94 1276 1998 1 2008-12
10 1985-87 35 1991-97 4 1998-99 631 2009
943 1986 3320 1992 865 1999 1 2009-10
12 1986-87 26 1992-93 24 200? 645 2010
5 1986-89 59 1992-94 590 2000 1 2010-12
2083 1987 1 1992-96 4 2000-01 538 2011
31 1987-88 2996 1993 727 2001 1 2011-12
44 1987-89 42 1993-94 875 2002 651 2012
2510 1988 12 1993-95 2 2002-04 811 2013
129 1988-89 2 1993-97 844 2003 790 2014
91 1988-90 2737 1994 3 2003-05 740 2015
58 1988-91 16 1994-95 842 2004 792 2016
3466 1989 20 1994-96 2 2004-05 775 2017
95 1989-90 17 1994-97 707 2005 638 2018
150 1989-91 2271 1995 1 2005-06 284 2019
1077 199? 2 1995-96 2 2005-07
2834 1990 4 1995-97 785 2006
119 1990-91 2 1995-98 6 2006-07
References:
[1] https://www.hvsc.c64.org/download/C64Music/DOCUMENTS/SID_file_format.txt
[2] https://hvsc.c64.org/info
2019-08-10 10:50:51 +02:00
Fredrik Noring
7723c481db
decoder/sidplay: Fix windows-1252 to utf-8 string conversion
...
High Voltage SID Collection (HVSC) metadata fields are encoded in
windows-1252, as described in DOCUMENTS/SID_file_format.txt:
https://www.hvsc.c64.org/download/C64Music/DOCUMENTS/SID_file_format.txt
If utf-8 transcoding fails, or the ICU library is unavailable, fall
back to plain ASCII and replace other characters with '?'.
2019-08-10 10:45:02 +02:00
Max Kellermann
cf9ee33928
input/icy: support "charset" parameter in URI fragment
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/616
2019-08-10 10:07:13 +02:00
Max Kellermann
4a47bbd816
IcyMetadataParser: implement charset conversion
2019-08-10 10:07:13 +02:00
Max Kellermann
7654038d65
util/UriQueryParser: new library
2019-08-09 20:39:34 +02:00
Max Kellermann
e4612ecb66
util/UriExtract: add uri_get_fragment()
2019-08-09 20:39:23 +02:00
Max Kellermann
9c6850210d
util/UriExtract: uri_get_scheme() returns StringView
...
Reduce overhead by not duplicating the string.
2019-08-09 20:21:37 +02:00
Max Kellermann
40a2880857
util/UriUtil: split
2019-08-09 20:21:12 +02:00
Max Kellermann
ade712d711
util/UriUtil: relicense as BSD-2
2019-08-09 20:16:02 +02:00
Max Kellermann
175e13099c
doc/developer.rst: more details about error handling and OOM
2019-08-09 20:16:02 +02:00
Fredrik Noring
0ed10542cc
decoder/sidplay: Fix song length initialisation during container scan
...
The song length was previously undetermined.
2019-08-09 15:39:36 +02:00
Max Kellermann
ab830f9afd
increment version number to 0.21.14
2019-08-09 15:38:01 +02:00
Max Kellermann
349a2ea7eb
Merge branch 'sid-genre-option' of git://github.com/frno7/MPD
2019-08-09 14:45:41 +02:00
Max Kellermann
192ad91010
release v0.21.13
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1JSe4QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEq5gEACNRnk8lADXzerHiuhyySJTpo1hweh+tRpx
fEahsC1SWa5677SsvHtk+Er8HTrpr0mSCefBbfqAKBSsJzdm1TUepCbEZrKM3jF5
0PaRiKlOQraqLnT95AOVbdzKK0N2aKvf3aJfDkquG93YfMyJJr0oTGFfQNTT4VFC
+HuvcqlMragXfLD2xp9WxhjYTajDmCobeBlHKND7FD67VyQqWIwWsRMKZKXXeplS
kQlFSNLfb4L6x7Qvnz57wMSYHQ1yzjZKoEczjR5WEJBz4GYsw+8BB6M5TR+cyo+y
LjiEMYMk1b+YiIneuloRaeCS/5PxMBeCSC+w6uqfnm9wGA5dv6zAWwHWJ6XqIYTv
ORAxoWJ1oN3HAv7ao57g2kGJ5WZwrfVyiS0hViPM0D181w6dMvPgmWdltPZphxtY
3uNurG45lecXoTtuv4EqWeeVOBzoJI1dUyQ7e73a9+Cpl9u7suAoe/nm3F/nh5ti
l+I5VeK82GVBePXn02ZRAhkZ+Ll3jvt5Bpz/wyNutP6pWtFjYS6p1W19Hi2UiNOv
56+ackJFr4oCqOoCKWHbwJbyrx44nhnBxiyEOhGdVA9xdB2EpYKOoZ29iGKEO2um
+QytEt8gf6YVe3C51OlmJfnZoJ4+pwIWpQFyjT40CMy6ZL0swdLlMgFv5+LSjzrC
eKJz2/h4dg==
=ICvW
-----END PGP SIGNATURE-----
Merge tag 'v0.21.13'
release v0.21.13
2019-08-06 11:39:25 +02:00
Max Kellermann
d4d2bc072e
release v0.21.13
2019-08-06 11:35:42 +02:00
Max Kellermann
bcccc8f66c
output/jack: use jack_free() for Windows compatibility
2019-08-06 11:34:56 +02:00
Max Kellermann
848c63e2d5
output/jack: use std::atomic_bool for "shutdown" and "pause"
...
Without this, the compiler may optimize accesses away.
2019-08-06 11:34:00 +02:00
Max Kellermann
f6d0310f9c
output/jack: use SIZE_MAX instead of (size_t)-1
2019-08-06 11:33:52 +02:00
Max Kellermann
3ef043392c
input/cdio_paranoia: drop support for libcdio-paranoia older than 10.2+0.93+1
...
Version 10.2+0.93+1 was released five years ago in 2014 and is the
first version to feature cdio_cddap_free_messages(). There is no way
to check the libcdio-paranoia version at compile time, so let's just
remove support for older versions instead of attempting to fix the
cdio_cddap_free_messages() check at build time.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/613
2019-08-06 11:09:36 +02:00
Max Kellermann
864d6f312d
Revert "decoder/mad: use MAD_F_MIN and MAD_F_MAX"
...
This reverts commit f7ed7446ae
. It was
a bad idea, because MAD_F_MIN and MAD_F_MAX do not represent the
clamping limits, but the theoretical minimum and maximum values of the
mad_fixed_t data type.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/617
2019-08-05 13:07:41 +02:00
Max Kellermann
f44c67de09
increment version number to 0.21.13
2019-08-05 13:05:54 +02:00
Max Kellermann
91fb91d89c
util/StringView: prepare the transition to std::string_view
...
Unfortunately, we need to disable this for GCC versions older than 7,
because it doesn't have <string_view> yet.
2019-08-05 10:23:05 +02:00
Max Kellermann
8b399b7133
output/jack: use jack_free() for Windows compatibility
2019-08-05 09:35:41 +02:00
Max Kellermann
9d24f68f51
output/jack: convert to class, make attributes/methods private
2019-08-05 09:31:40 +02:00
Max Kellermann
44652fdb13
output/jack: convert callback functions to static methods
2019-08-05 09:29:27 +02:00
Max Kellermann
2892a6f5e2
output/jack: merge set_audioformat() into Open()
2019-08-05 09:28:41 +02:00
Max Kellermann
2fc40e5575
output/jack: eliminate "shutdown" flag, use only "error" (mutex protected)
2019-08-05 09:24:43 +02:00
Fredrik Noring
7363fe90bb
decoder/sidplay: Add "default_genre" option
...
Genres are not part of the SID format, so SID files are genreless. This
"default_genre" option may be used to assign a default genre to all SID
music, for example "SID", "C64", "Chiptune", etc.
2019-08-05 06:23:40 +02:00
Max Kellermann
d146bef740
output/jack: use jack_on_info_shutdown()
2019-08-04 20:25:13 +02:00
Max Kellermann
1f4c4be1f1
output/jack: use std::atomic_bool for "shutdown" and "pause"
...
Without this, the compiler may optimize accesses away.
2019-08-04 20:24:51 +02:00
Max Kellermann
90067d16c0
output/jack: use SIZE_MAX instead of (size_t)-1
2019-08-04 06:34:43 +02:00
Max Kellermann
cde6c46d2f
util/Macros: replace with std::size() (C++17)
2019-08-03 13:10:49 +02:00
ckdo
d305f187d5
Add the ability to specify media.role for pulse output plugin
...
This is useful in multiple mpd instances scenario, or multiple pulse outputs defined on the same mpd instance.
It is actually a more flexible way to route flows than the "sink" parameter, letting the PulseAudio routing do its job, but with the ability to isolate routing for each output.
If not specified, the role remains like it was before this commit, ie "music"
2019-08-03 13:03:05 +02:00
Richard Dodd
4f6a713b32
Add option to not connect jack ports automatically
2019-08-03 13:01:47 +02:00
Max Kellermann
8f981845dc
switch to C++17
...
Time to move on, two years after 2017.
2019-08-03 12:57:56 +02:00
Max Kellermann
c764b70b3a
decoder/mad: merge DecodeNextFrame() and DecodeNextFrameHeader()
2019-08-03 12:55:56 +02:00
Max Kellermann
52bb03e136
decoder/mad: eliminate redundant error handling from DecodeNextFrame()
...
Much of that is not possible when mad_header_decode() has already been
called.
2019-08-03 12:55:48 +02:00
Max Kellermann
a90685d6cf
release v0.21.12
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1FZnQQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEjrXD/0QChgJtx6sVPRpMK7KszwgpmxNkhDPA13l
puuYTg0eEZe9EJxNM82ouCNn2kOx9OjP5DKyeus0Dt4Pk5Cwj8HGeHqjTahtwHtD
jbVy5kiEZ57NjBoLFoQBI6vMuzcz/DKStq2HmPJ62NQCIqbiTQXPpWvDYAieTFV+
lbM7vc7VQ6A3bhms//vYMZYmQV7T4Eam3iEVxoQhX4Pd+wWXv+XcTfdI2UTUFWIY
mt7+AZlG2ynev+zszUtDLB4aFEbRcLUBlSKuPv3j5ox7BjleLJXltpVbisI+TDHL
nAyb2LtOTeVPpAaqiPeCju2ucWaUOsFkHmSCjPu8BHc8b4mLATiozv2BzY1qe5rX
G7DZxCLq3IBtY4u4FpR4kOuVcjTGFKCToHGl8N6GrPmfa3n+MqPLAqKx32tSq+r/
po2kbB9t0IXXT1njGWLb9W6y7z/7dsvy3YgjV6L7SfY/SA9MZELx+MBED2GSDYr9
eWLK7LDO5soBUZvnDVJZO/a1oP0n5WiSV9n2/YGgRJXcljW8tJ8C76yMNziPK7yn
Fjmc12o6kf5Afo3dNsLAdXH4p/8LeYK9IcJZmGfwBCccMHlnX+ySLfBOyuyUDD7g
nOV/o7av/HZzirQ9h2CGUZhBPbPARjvMI+mhDVGxUx3OYxW9UfokmMVEs4h21f0R
4XRbOUejVA==
=hzQJ
-----END PGP SIGNATURE-----
Merge tag 'v0.21.12'
release v0.21.12
2019-08-03 12:53:23 +02:00
Max Kellermann
ae19bda1f2
release v0.21.12
2019-08-03 12:48:20 +02:00
Max Kellermann
f2d8fd769d
player/Thread: don't restart unseekable song after failed seek attempt
...
The check IsSeekableCurrentSong() was added by commit
44b200240f
in version 0.20.19, but it
caused a regression: by doing the branch only if the current song is
seekable, the player would restart the current song if it was not
seekable, and later the initial seek would fail; but we already know
it's not seekable, and so we should fail early.
2019-08-03 12:30:10 +02:00
Max Kellermann
9661062ae2
decoder/mad: pass const reference to RecoverFrameError()
2019-08-03 11:59:41 +02:00
Max Kellermann
2a07354cad
decoder/mad: change integers to size_t
2019-08-03 11:44:02 +02:00
Max Kellermann
fc18fd571c
decoder/mad: return from SynthAndSubmit() early
2019-08-03 11:42:05 +02:00
Max Kellermann
51abed9732
decoder/mad: pass mad_pcm to mad_fixed_to_24_buffer()
2019-08-03 11:40:06 +02:00
Max Kellermann
d00afc912c
decoder/mad: eliminate the loop in SubmitPCM()
...
libmad has a hard-coded maximum PCM buffer size; if we make our
output_buffer just as large, we can avoid the loop, because any
possible size will fit.
2019-08-03 11:36:05 +02:00
Max Kellermann
9d0fe725eb
decoder/mad: rename a few misnamed methods
2019-08-03 11:32:42 +02:00
Max Kellermann
8a432c9b7f
decoder/mad: move code to LoadNextFrame()
2019-08-03 11:32:06 +02:00