Max Kellermann
138c29320b
gme: adapt to API change in the upcoming version 0.7.0
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/833
2020-04-22 21:53:00 +02:00
Max Kellermann
8270043053
Revert "decoder/ffmpeg: copy the AVPacket in ffmpeg_send_packet()"
...
This reverts commit eb192137d6
.
This is no longer necessary because we require FFmpeg 3.1 or newer
since MPD 0.21.2.
This fixes a deprecation warning because the implicit AVPacket copy
constructor copies the deprecated attribute `convergence_duration`.
2020-04-01 17:30:28 +02:00
Max Kellermann
e1c43ec65f
Merge branch 'ucl' of git://github.com/neheb/MPD into v0.21.x
2020-03-26 17:28:21 +01:00
Rosen Penev
608d7ec1e7
[clang-tidy] change integer prefixes to uppercase
...
Found with readability-uppercase-literal-suffix
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-26 17:25:20 +01:00
Rosen Penev
85c27840a3
treewide: use boost::lround when std::round is unavailable
...
This is the case with uClibc-ng currently.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit 769cd0ee9f0cf8ceb026aa751b5d4a390bb5dbdc)
(changed define to match master)
2020-03-25 18:54:15 -07:00
John Regan
976372ff63
gme: check for empty metadata strings instead of nullptr
...
Using libgme 0.6.2 on macOS, it appears that gme_info_t strings can be
empty, which creates weird track titles: (001/050)
This adds an additional check for an empty string.
2020-02-25 20:12:08 +01:00
Max Kellermann
50003f6ad2
decoder/ffmpeg: add two more missing commas
2020-02-04 16:30:05 +01:00
Rosen Penev
0914644d2b
add missing comma
...
Found with bugprone-suspicious-missing-comma
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-04 16:29:23 +01:00
Max Kellermann
5ad6e7fec5
decoder/{audio,snd}file: handle MIME type "audio/wav"
2020-02-01 11:26:57 +01:00
Rosen Penev
0bb943ba3e
FfmpegDecoderPlugin: add WAV support
2020-02-01 11:24:51 +01:00
Rosen Penev
80a0cf694f
MadDecoderPlugin: fix bad printf format
...
max_frames is size_t, not unsigned long. Fixes GCC warning.
2020-01-31 21:21:39 +01:00
Max Kellermann
943a67c805
decoder/ogg: need to sync small files while looking for EOS
...
When calling OggSeekFindEOS() from inside a OggVisitor callback, then
the #InputStream may be in the middle of an Ogg packet, and the newly
initialized #ogg_sync_state will not be able to load it without the
help of ogg_sync_pageseek(). By passing "synced=false" to
OggSeekFindEOS(), we force the use of ogg_sync_pageseek() even when
not actually seeking.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/719
2020-01-25 20:07:11 +01:00
Max Kellermann
0cf90ee8b6
decoder/mad: work around bogus -Wuninitialized in GCC 10
2019-12-16 23:01:31 +01:00
Max Kellermann
92495d2b0b
decoder/mpcdec: fix bogus ReplayGain values
...
Apparently, libmpcdec sets gain/peak variables to zero if they are not
present. This clashes with our formula and results in bogus values
which cause noise during playback.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/640
2019-09-13 19:52:11 +02:00
Max Kellermann
9270829b5b
ReplayGainInfo: move more code to a function
2019-09-13 19:50:49 +02:00
Max Kellermann
b6243a9945
decoder/mpcdec: merge duplicate code
2019-09-13 19:50:43 +02:00
Max Kellermann
bf49c9e4e2
decoder/{dsf,dsdiff}: precalculate bit rate
2019-09-08 12:52:02 +02:00
Max Kellermann
0da9c91af2
decoder/{dsf,dsdiff}: fix displayed bit rate
...
The formula did not consider the channel count.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/639
2019-09-08 12:45:05 +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
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
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
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
Max Kellermann
187204f03c
decoder/mad: move code to HandleCurrentFrame()
2019-08-03 11:32:06 +02:00
Max Kellermann
5e5fadb5f2
decoder/mad: remove unnecessary initializers
...
These will not be used until they are initialized in SyncAndSend().
2019-08-03 08:49:26 +02:00
Max Kellermann
952c793235
decoder/mad: subtract libmad decoder delay from LAME encoder padding
...
Apparently, libmad not only inserts 529 samples of silence at the
beginning of the file, but also removes them at the end.
This solves the last piece of
https://github.com/MusicPlayerDaemon/MPD/issues/601
Closes https://github.com/MusicPlayerDaemon/MPD/issues/601
2019-08-03 08:35:00 +02:00
Max Kellermann
3e3d8c7f9d
decoder/mad: pad the input buffer with zero bytes and end of file
...
libmad requires padding the input buffer with "MAD_BUFFER_GUARD" zero
bytes at the end of the file, or else it is unable to decode the last
frame.
This fixes yet another bug which prevented this plugin from decoding
the last frame, see
https://github.com/MusicPlayerDaemon/MPD/issues/601
2019-08-03 08:32:27 +02:00
Max Kellermann
9b99a9897a
decoder/mad: don't count the Xing/LAME metadata frame
...
The Xing/LAME frame indicates how many frames there are, but that
excludes the initial Xing/LAME frame. Therefore, it should not be
counted.
This fixes an off-by-one bug which caused the last frame to be
skipped, fixing one part of
https://github.com/MusicPlayerDaemon/MPD/issues/601
2019-08-03 08:25:48 +02:00
Max Kellermann
4f56fdc397
decoder/mad: make "current_frame" zero-based
...
Increment "current_frame" after processing the frame.
2019-08-03 08:24:25 +02:00
Max Kellermann
c87d6825ec
decoder/mad: add API documentation
2019-08-03 08:07:30 +02:00
Max Kellermann
00830a20e3
decoder/mad: convert to class, make almost everything private
2019-08-03 07:52:51 +02:00
Max Kellermann
d39d2874b4
decoder/mad: move code to methods RunDecoder(), RunScan()
2019-08-03 07:49:41 +02:00
Max Kellermann
a0a74951b8
decoder/mad: eliminate attribute "bit_rate"
...
This also fixes a bug which caused the bit rate to not update after
seeking.
2019-08-03 00:38:45 +02:00
Max Kellermann
779a6855ff
decoder/mad: add noexcept
2019-08-03 00:28:59 +02:00
Max Kellermann
f7ed7446ae
decoder/mad: use MAD_F_MIN and MAD_F_MAX
2019-08-03 00:27:59 +02:00
Max Kellermann
9d44a6d2ae
decoder/mad: use Clamp()
2019-08-03 00:26:57 +02:00
Max Kellermann
10da9ee7ba
decoder/mad: refactor local variables in FillBuffer()
2019-08-02 23:19:11 +02:00
Max Kellermann
f9eff31205
decoder/mad: use sizeof(input_buffer)
2019-08-02 23:19:11 +02:00
Max Kellermann
1d74a029a2
decoder/mad: simplify variable initialization in FillBuffer()
2019-08-02 23:19:11 +02:00
Max Kellermann
6b8ca514bb
decoder/mad: fix broken log message
...
Broken since commit f8bfea8bae
2019-08-02 22:58:16 +02:00
Max Kellermann
f51e555154
decoder/mad: change "mp3_" suffix to "mad_"
2019-08-02 22:49:55 +02:00
Max Kellermann
61a3c69a06
decoder/mad: make enums strictly-typed
2019-08-02 22:49:55 +02:00
Max Kellermann
089615a01e
decoder/mad: include cleanup
2019-08-02 22:49:55 +02:00
Max Kellermann
b955334882
decoder/opus: ignore case in replay gain tag names
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/604
2019-07-29 10:40:37 +02:00