Age | Commit message (Collapse) | Author | |
---|---|---|---|
2020-11-16 | filter/ffmpeg: detect the output sample format | Max Kellermann | |
Some FFmpeg filters change the sample format, and since MPD assumes this never happens, this results in loud noise instead of music. This commit finally implements the TODO comment by sending one frame of silence to the filter and checking the output frame's format. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1009 | |||
2020-11-15 | output/Control: allow copy elision (fix -Wpessimizing-move) | Max Kellermann | |
2020-11-15 | Fixes #994 - moveoutput: new AudioOutputControl created from copyMoving an ↵ | Stapper | |
output to a partition is now done via MultipleOutputs::AddCopy(),using a new AudioOutputControl constructor. Tags and always_on settings willpersist when moving outputs between partitions. | |||
2020-11-10 | decoder/dsdiff: apply padding to odd-sized chunks | Max Kellermann | |
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1001 | |||
2020-11-06 | storage/curl: fix nullptr dereference | Max Kellermann | |
Pass a std::string to PathTraitsUTF8::Relative(), implicitly casting it to std::string_view. This selects the right overload which returns std::string_view instead of `const char *`; the latter could return `nullptr` which would cause the implicit conversion of the return value to std::string_view to crash. Regression caused by commits ead208987dd and a98d627c0bd. Closes https://github.com/MusicPlayerDaemon/MPD/issues/995 | |||
2020-11-04 | filter/LoadChain: use the AutoConvertFilter | Max Kellermann | |
This adds support for input samples other than 16 bit to the FFmpeg filter plugin. | |||
2020-11-04 | filter/AutoConvert: move the Filter class to TwoFilters.cxx | Max Kellermann | |
2020-11-04 | filter/AutoConvert: eliminate AutoConvertFilter if possible | Max Kellermann | |
If no conversion is necessary, return the child Filter as-is. This allows removing all nullptr checks from AutoConvertFilter. | |||
2020-11-04 | filter/ffmpeg: interleave the output AVFrame | Max Kellermann | |
If the FFmpeg filter outputs planar data, interleave it, just like the FFmpeg decoder plugin does. | |||
2020-11-04 | decoder/ffmpeg: move code to lib/ffmpeg/Interleave.cxx | Max Kellermann | |
To be reused by the FFmpeg filter plugin. | |||
2020-11-04 | decoder/ffmpeg: use AVFrame fields instead of AVCodecContext fields | Max Kellermann | |
2020-11-04 | lib/ffmpeg/Buffer: add missing include | Max Kellermann | |
2020-11-04 | lib/ffmpeg/Buffer: disallow copying | Max Kellermann | |
2020-11-04 | lib/ffmpeg/Buffer: add `noexcept` | Max Kellermann | |
2020-11-04 | lib/ffmpeg/{Buffer,Time}: remove obsolete "#undef SampleFormat" | Max Kellermann | |
This compatibility macro has been removed from FFmpeg long ago. | |||
2020-11-04 | filter/convert: convert_filter_new() returns std::unique_ptr | Max Kellermann | |
2020-11-04 | filter/chain: pass std::string_view to filter_chain_append() | Max Kellermann | |
2020-11-04 | filter/LoadChain: use IterableSplitString() | Max Kellermann | |
2020-11-04 | filter/chain: copy the child name | Max Kellermann | |
filter_chain_parse() passes a temporary string pointer which results in a use-after-free in the PreparedChainFilter::Child::Open() error message. | |||
2020-11-04 | filter/chain: remove unused field ChainFilter::Child::name | Max Kellermann | |
2020-11-04 | playlist/registry: add option "as_directory" | Max Kellermann | |
This allows users to disable the "CUE files as directories" feature without having to disable the CUE playlist plugin completely. This feature has been annoying some users. | |||
2020-11-04 | playlist/registry: simplify ExtractMimeTypeMainPart() | Max Kellermann | |
2020-10-28 | lib/yajl/Handle: strip newlines from error messages | Max Kellermann | |
Closes https://github.com/MusicPlayerDaemon/MPD/issues/981 | |||
2020-10-28 | lib/yajl/Handle: un-inline the throwing code | Max Kellermann | |
Reduces header dependencies. | |||
2020-10-28 | util/FormatString: update API documentation | Max Kellermann | |
2020-10-28 | protocol/Ack: remove unused variable `ack_domain` | Max Kellermann | |
2020-10-28 | Main: save the state_file on shutdown | Max Kellermann | |
This got lost in commit 5d597a3646cc (v0.21.19), but it was never noticed because the state_file_interval was way too short due to commit 3413d1bf23a, fixed recently by commit 27cc7b352d5 | |||
2020-10-28 | db/simple: purge songs for unavailable decoder plugins on update | Max Kellermann | |
2020-10-28 | fs/Traits: add GetPathSuffix() | Max Kellermann | |
2020-10-28 | db/simple/Directory: add `pure` attribute | Max Kellermann | |
2020-10-28 | db/update/Walk: add code comments | Max Kellermann | |
2020-10-27 | db/simple: purge special directories for unavailable plugins on update | Max Kellermann | |
2020-10-27 | db/update/Walk: adjust lamba indent | Max Kellermann | |
2020-10-27 | fs/Traits: add GetFilenameSuffix() | Max Kellermann | |
2020-10-17 | lib/nfs/patches: disable the snprintf->sprintf_s alias | Max Kellermann | |
snprintf() is available on mingw, and the libnfs kludge broke the build with mingw, because sprintf_s() was now both an inline function and a "dllimport" function (because the macro renamed the inline function snprintf() to sprintf_s() in mingw's stdio.h). | |||
2020-10-16 | decoder/opus: fix track/album ReplayGain fallback | Max Kellermann | |
Fixes regression by commit 23d5a2b8620cea69958d087fc7e13fe1e5adb83d - that commit always pretended that any Opus file has both track and album gain, and thus disabled the fallback to the other if one is not set. This patch changes the logic to only submit ReplayGain if at least one value is set, and apply the offset only to that value. If none is available, then the new check in HandleAudio() will submit only the output gain. Closes https://github.com/MusicPlayerDaemon/MPD/issues/977 | |||
2020-10-16 | decoder/opus: submit output_gain even if there is no OpusTags packet | Max Kellermann | |
2020-10-16 | decoder/opus: move formula to EbuR128ToReplayGain() | Max Kellermann | |
2020-10-16 | decoder/opus: move comment to `output_gain` field | Max Kellermann | |
2020-10-16 | decoder/opus: convert field `output_gain` to float | Max Kellermann | |
2020-10-15 | lib/dbus/Watch: add missing include for assert() | Max Kellermann | |
2020-10-15 | output/osx: fix several -Wdouble-promotion warnings | Max Kellermann | |
2020-10-15 | net/SocketAddress: include cleanup | Max Kellermann | |
2020-10-08 | event/SocketMonitor: don't filter out ERROR/HANGUP | Max Kellermann | |
By bit-wise ANDing the reported flags with GetScheduledFlags(), ERROR/HANGUP always get cleared. This means the MPD event loop could never report those conditions. | |||
2020-10-08 | event/TimerEvent: add type alias for std::chrono::steady_clock::duration | Max Kellermann | |
2020-10-08 | event/TimerEvent: use `using` instead of `typedef` | Max Kellermann | |
2020-10-08 | event/TimerEvent: use auto_unlink hook | Max Kellermann | |
2020-10-08 | event/Loop: reorder includes | Max Kellermann | |
This just happened to break the Windows build because of the `GetObject` macro in `windows.h`, so I added a kludge to PollResultGeneric.hxx. | |||
2020-10-08 | StateFileConfig, ...: drop obsolete out-of-class definition | Max Kellermann | |
2020-10-08 | config/Data: cast to std::chrono::steady_clock::duration properly | Max Kellermann | |
Oh no, 3413d1bf23a was broken! Instead of passing a number as "seconds" to the duration constructor, it just abused the duration constructor as cast operator, which caused custom state_file_interval settings to be extremely short. |