995783bb2f
test/TestISO8601: unit test for time/ISO8601
2019-08-19 22:41:54 +02:00
f909615b14
include cleanups (powered by iwyu)
2019-08-15 17:57:20 +02:00
96a1c69c29
tag/Handler: add virtual method OnPicture()
...
Preparing for https://github.com/MusicPlayerDaemon/MPD/issues/42
2019-08-12 20:31:43 +02:00
4a47bbd816
IcyMetadataParser: implement charset conversion
2019-08-10 10:07:13 +02:00
7654038d65
util/UriQueryParser: new library
2019-08-09 20:39:34 +02:00
40a2880857
util/UriUtil: split
2019-08-09 20:21:12 +02:00
cde6c46d2f
util/Macros: replace with std::size() (C++17)
2019-08-03 13:10:49 +02:00
8f981845dc
switch to C++17
...
Time to move on, two years after 2017.
2019-08-03 12:57:56 +02:00
af99f9fc90
pcm/Volume: convert S16 to S24 to preserve quality and reduce noise
...
Applying software volume to S16 samples means several bits of
precision are lost; at 25% volume, two bits are lost. Additionally,
dithering adds some noise.
The problem gets worse when you apply the software volume code twice:
for the software mixer volume, and again for the replay gain. This
loses some more precision and adds even more dithering noise, which
can become audible (see
https://github.com/MusicPlayerDaemon/MPD/issues/542 ).
By converting everything to 24 bit, we need to shift only two bits to
the right instead of ten, losing nearly no precision, and dithering is
not needed. Even if the output device is unable to play S24 directly,
we can convert back to S16 with only one stage of dithering.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/542
2019-07-30 20:03:37 +02:00
991bbea875
Merge branch 'v0.21.x'
2019-07-29 11:32:00 +02:00
90ea3bf985
playlist/Song: support backslash in relative URIs
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/607
2019-07-29 09:58:53 +02:00
83b0871248
test/test_translate_song: remove unused variable "s1"
2019-07-29 09:52:57 +02:00
d8aec4b2dc
test/run_decoder: catch StopDecoder
...
This exception is usually thrown by class DecoderBridge, but the Opus
plugin (ab)uses it as well, so we need to catch it.
2019-07-12 17:49:12 +02:00
5fa7610264
pcm/Volume: Open() returns output sample format
...
Prepare for a new mode which may convert to a different sample format
when applying volume, to reduce dithering.
2019-07-05 19:03:00 +02:00
d663f81420
include cleanups (powered by iwyu)
2019-07-05 09:59:58 +02:00
4650a903b4
decoder/Bridge: add noexcept
2019-07-05 08:57:51 +02:00
beed004b10
pcm/Export: add GetSilence()
2019-06-26 16:04:46 +02:00
730e67d766
test/test_pcm_export: add tests for Get{In,Out}put{Frame,Block}Size()
2019-06-26 16:01:19 +02:00
bf26adf555
pcm/Dsd{16,32}: stash odd frames away for the next call
...
Similar to commit 32380d1db0
, these are
the final parts for really fixing
https://github.com/MusicPlayerDaemon/MPD/issues/469
2019-06-18 11:19:27 +02:00
28e07e900f
pcm/Export: convert the DSD bools to an enum
...
These options are exclusive.
2019-06-17 22:35:00 +02:00
32380d1db0
pcm/Dop: stash odd frames away for the next call
...
First part of the "real" fix for
https://github.com/MusicPlayerDaemon/MPD/issues/469
2019-06-17 22:18:44 +02:00
e87f0ca771
pcm/Pcm*: drop more "Pcm" prefixes from source file names
2019-06-17 11:17:48 +02:00
a139279575
Copyright year 2019
2019-06-17 11:17:30 +02:00
fd5e74dbd0
pcm/Pcm{Dop,Export}: drop "Pcm" prefix
2019-06-16 12:11:44 +02:00
bd6b7aa88e
archive/Lookup: move to fs/LookupFile.cxx
...
This can be used for other purposes as well.
2019-06-15 14:26:26 +02:00
fcf6415963
archive/Lookup: pass class Path
2019-06-15 14:06:50 +02:00
be79b44dc8
archive/Lookup: pass const pointer
2019-06-15 14:04:34 +02:00
17f207ffd1
archive/Lookup: return AllocatedPath
2019-06-15 13:57:28 +02:00
548aa00111
tag/Handler: pass StringView to OnTag() and OnPair()
...
Eliminates a number of allocations, because callers don't need to copy
the strings to a newly allocated buffer only to null-terminate them.
And most callers don't need to have a null-terminated string.
2019-06-06 13:00:53 +02:00
71f9332bd3
test/TestCircularBuffer: add constexpr
to fix -Wvla
2019-06-06 12:40:32 +02:00
e1ac377812
archive/ArchiveLookup: replace output parameters with a struct
2019-05-31 19:56:25 +02:00
12e75a523a
archive/ArchiveLookup: remove "suffix" output parameter
...
Let the caller do this. Our GetSuffix() function was broken anyway.
2019-05-31 19:01:22 +02:00
fa13648f2c
archive/ArchiveLookup: throw on error
2019-05-31 18:52:11 +02:00
7739b3960c
mixer/Listener: add noexcept
2019-05-31 14:09:47 +02:00
971450f0d4
input/InputStream: make IsEOF() and IsAvailable() const
2019-05-29 13:31:54 +02:00
e0d5d88104
Log: make LogLevel the first parameter
...
Prepare for templated functions.
2019-05-23 12:17:59 +02:00
9a78371b5c
DetachedSong: allow LoadFile(), Update() to throw
2019-05-22 10:19:25 +02:00
214ddee2f5
util/Time*: move to time/
2019-05-08 15:47:58 +02:00
973c87b351
event/Call, ...: use wait() with predicate
2019-05-07 20:01:45 +02:00
1b5c1f75a4
input/InputStreams: pass std::unique_lock<> to various methods
2019-05-07 19:09:39 +02:00
92022658f9
thread/Cond: add wait() overload which takes a unique_lock<>
...
Just like std::condition_variable, which however has no way to specify
the std::mutex directly.
2019-04-26 11:51:45 +02:00
b51bae5500
thread/*Cond: rename methods to match std::condition_variable
2019-04-25 19:46:43 +02:00
c7c303eec3
db/DatabaseListener: add noexcept
2019-04-24 14:57:30 +02:00
a30af2ba42
lib/chromaprint/DecoderClient: replace method PrintResult()
2019-04-05 13:40:05 +02:00
8006911a1f
decoder/Client: add noexcept
2019-04-05 09:03:42 +02:00
e78d825059
pcm/PcmConvert: eliminate Open() and Close()
...
Let the constructor and destructor do this. This means that all users
have to be converted to allocate PcmConvert dynamically.
2019-04-04 21:01:08 +02:00
8a07724b23
test/RunChromaprint: move class ChromaprintDecoderClient to lib/chromaprint/
2019-04-04 20:29:27 +02:00
5256929b17
tag/Chromaprint: move to lib/chromaprint/Context.hxx
2019-04-04 20:21:10 +02:00
93d91936b5
test/run_filter: check for partial writes
2019-03-25 08:59:34 +01:00
2220383d83
test/run_filter: move code to WriteOrThrow()
2019-03-25 08:59:25 +01:00