Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-01-01 | copyright year 2021 | Max Kellermann | |
2020-03-16 | fix double promotions | Rosen Penev | |
Found with -Wdouble-promotion Signed-off-by: Rosen Penev <rosenp@gmail.com> | |||
2020-03-12 | replace assert.h with cassert | Rosen Penev | |
The former was deprecated with C++14. According to the C++11 and C++17 standards, both files are identical. Signed-off-by: Rosen Penev <rosenp@gmail.com> | |||
2020-01-18 | copyright year 2020 | Max Kellermann | |
2019-07-30 | pcm/Volume: convert S16 to S24 to preserve quality and reduce noise | Max Kellermann | |
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-05 | pcm/Volume: Open() returns output sample format | Max Kellermann | |
Prepare for a new mode which may convert to a different sample format when applying volume, to reduce dithering. | |||
2019-07-05 | pcm/Volume: allow any exception | Max Kellermann | |
2019-07-05 | pcm/Volume: calculate PCM_VOLUME_1 | Max Kellermann | |
2019-07-05 | pcm/Volume: fix API documentation | Max Kellermann | |
2019-06-17 | pcm/Pcm*: drop more "Pcm" prefixes from source file names | Max Kellermann | |
2019-06-17 | Copyright year 2019 | Max Kellermann | |
2019-03-08 | AudioFormat, pcm/Dsd*: remove redundant `inline` keywords from `constexpr` ↵ | Max Kellermann | |
functions | |||
2018-10-31 | *: copyright year 2018 | Max Kellermann | |
2018-01-01 | pcm/*: add "noexcept" | Max Kellermann | |
2017-05-08 | *: add "noexcept" to many, many function prototypes | Max Kellermann | |
This eliminates some overhead, because the compiler doesn't need to consider these functions throwing. | |||
2017-01-17 | AudioFormat: move enum SampleFormat to pcm/SampleFormat.hxx | Max Kellermann | |
2017-01-03 | update copyright year | Max Kellermann | |
2016-09-09 | pcm/Convert: migrate from class Error to C++ exceptions | Max Kellermann | |
2016-07-01 | pcm/Volume: remove assert() from destructor | Max Kellermann | |
While this assert() was useful when we had to track the object's state manually, there was no practical purpose other than verifying old code, and it complicates our new C++ code. | |||
2016-03-01 | *: include cleanup (using iwyu) | Max Kellermann | |
2016-02-26 | update copyright year to 2016 | Max Kellermann | |
2015-01-01 | Copyright year 2015 | Max Kellermann | |
2014-01-13 | copyright year 2014 | Max Kellermann | |
2013-12-28 | pcm/Volume: remove unused function pcm_volume_dither() | Max Kellermann | |
2013-12-28 | pcm/Volume: improved dithering | Max Kellermann | |
Instead of just adding a rectangular random value before shifting back to the normal scale, use the existing PcmDither library. | |||
2013-12-23 | pcm/Volume: convert to class | Max Kellermann | |
Prepare for adding state. | |||
2013-12-23 | pcm/PcmVolume: rename to Volume.cxx | Max Kellermann | |