summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-08-17Merge branch 'exp2' of git://github.com/neheb/MPDHEADmasterMax Kellermann
2021-08-16constexpr/std::array conversionsRosen Penev
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-16constexpr global variable conversionRosen Penev
Found with cppcoreguidelines-avoid-non-const-global-variables Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-16clang-tidy: use defaultRosen Penev
Found with modernize-use-default Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-08-10time/FileTime: move code to SystemClock.hxxMax Kellermann
2021-08-10time/FileTime: add ChronoToFileTime()Max Kellermann
2021-08-10time/FileTime: preserve the FILETIME resolutionMax Kellermann
Don't truncate the FILETIME to second resolution to pass it to std::chrono::system_clock::from_time_t(); instead, calculate the offset between the FILETIME epoch and the std::system_clock::time_point epoch, and use that to initialize the time_point directly.
2021-08-10time/FileTime: add FileTimeToChronoDuration()Max Kellermann
2021-08-10time/FileTime: allow negative timesMax Kellermann
2021-08-10time/FileTime: use uint_least64_tMax Kellermann
2021-08-10test/time/TestFileTime: new unit testMax Kellermann
2021-08-10test/time/TestISO8601: disable on Windows for nowMax Kellermann
2021-08-10python/meson: set exe_wrapper=wine for Windows buildsMax Kellermann
Allows running the unit tests on Linux.
2021-08-10python/meson: set needs_exe_wrapper=true only for Android targetsMax Kellermann
2021-08-10python/meson: split the f.write() call and use f-stringsMax Kellermann
2021-08-10python/project: re-add support for version suffixMax Kellermann
Got lost in commit 0f56ddb80554e014714b9d0385a0bf175521a61d
2021-08-10output/wasapi: check ENABLE_DSD before setting dsd_modeMax Kellermann
2021-08-10test/meson.build: add missing dependencies on libfmtMax Kellermann
2021-08-10output/pipewire: append output name to PW node nameMax Kellermann
2021-08-10output/pipewire: add config option "remote"Max Kellermann
2021-08-10output/pipewire: allow specifying a target by its nameMax Kellermann
2021-08-10output/pipewire: create inactive stream, fill ring_buffer firstMax Kellermann
This avoids underruns at the start of playback.
2021-08-10output/pipewire: wait for buffer to fill before resumingMax Kellermann
2021-08-10output/pipewire: smaller ring buffer, 500ms should be enoughMax Kellermann
2021-08-10output/pipewire: add type alias for boost::lockfree::spsc_queueMax Kellermann
2021-08-10output/pipewire: update `nbytes` after calling PcmSilence()Max Kellermann
This was missing in commit 8a243e6e28bd94
2021-08-10output/pipewire: call pw_stream_flush() only if really drainingMax Kellermann
If draining was not requested, generate silence instead if there is no data in the ring buffer. The problem is that pw_stream_flush() appears to disable the stream permanently, even though there is no state_changed callback - the stream state remains at PW_STREAM_STATE_STREAMING, but the stream is defunct. I have no idea why and I havn't found any documentation about it. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1219
2021-08-09output/pipewire: reset the "paused" flagMax Kellermann
This was missing in commit 4d1ce7023b8a7
2021-08-06Merge tag 'v0.22.10'Max Kellermann
release v0.22.10
2021-08-06release v0.22.10v0.22.10Max Kellermann
2021-08-06mixer/alsa: use cached values to work around rounding errorsMax Kellermann
This replaces 967af603270246f1c97e11b8bad6a0eb65c81318 with a more effective workaround. Closes https://github.com/MusicPlayerDaemon/MPD/issues/822
2021-08-06mixer/alsa: skip the snd_mixer_handle_events() call in ↵Max Kellermann
alsa_mixer_elem_callback() snd_mixer_handle_events() has already been called by DispatchSockets(). This way, we can also skip the exception handler.
2021-08-06mixer/alsa: move alsa_mixer_elem_callback() into the AlsaMixer classMax Kellermann
2021-08-06mixer/alsa: move code to GetPercentVolume()Max Kellermann
2021-08-06mixer/alsa: move code to NormalizedToPercent()Max Kellermann
2021-08-06mixer/alsa: move code to GetNormalizedVolume()Max Kellermann
2021-08-06build/openssl: pass --cross-compile-prefix to ./ConfigureMax Kellermann
2021-08-06build/openssl: pass RANLIB=... to "make install"Max Kellermann
The "install_dev" target runs ranlib during installation, and this can break the Android build.
2021-08-06python/build/libs.py: update OpenSSL to 3.0.0-beta2Max Kellermann
2021-08-06python/build/libs.py: update CURL to 7.78.0Max Kellermann
2021-08-06doc/plugins.rst: move filter graph URL to ffmpeg.orgMax Kellermann
2021-08-05db/simple: prune CUE entries from database for non-existent songsMax Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1019
2021-08-05db/update/Playlist: prepend "../" only for relative URIsMax Kellermann
Prepending "../" to absolute URIs would break them.
2021-08-05fs/Traits: add PathTraitsUTF8::IsAbsoluteOrHasScheme()Max Kellermann
2021-08-05db/simple/Directory: remove obsolete API docMax Kellermann
2021-08-05decoder/Bridge: call UpdateStreamTag() only if there is no pending seekMax Kellermann
If UpdateStreamTag() gets called while an initial seek is pending, the result will never be submitted to a MusicChunk. By avoiding the UpdateStreamTag() call in that case (by moving UpdateStreamTag() to after the PrepareInitialSeek() check), the song_tag is preserved until UpdateStreamTag() is called again from SubmitData(). This fixes missing tags in the "httpd" output. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1137
2021-08-05tag/Tag: add Merge() which takes Tag pointersMax Kellermann
2021-08-05tag/Tag: Merge() returns Tag, MergePtr() returns std::unique_ptr<Tag>Max Kellermann
2021-08-05output/oss: enable DoPConstantin Fuerst
Explanation This adds support for DOP using the PcmExport function if the macro ENABLE_DSD is defined. If enabled within the config-file using "dop", the boolean dop_setting will be true. If DSD input is encountered and the setting is on, it is checked whether the oss-device supports the required samplerate. If that is the case, dop_active is set to true and conversion of the input is prevented. If the sample rate is not supported, conversion to S32 is requested. When playing back, the PcmExport is used to pack the incoming stream into PCM. Reasoning This is required for OSs without the required driver support for native DSD playback that also have no ALSA. Mainly *BSD users are the target audience for this functionality, as ALSA here is only a proxy without full functionality. Requirements DAC that supports the DOP standard Building with OSS, DSD and S32-Format Supported Formats / Required PCM Formats DSF, DFF and WavPack-DSD will work. DSD64, 1 Channel -> S24:176.4kHz (untested, lack of time / missing samples) DSD64, 2 Channel -> S24:352.8kHz DSD64, 4 Channel -> S24:705.6kHz (untested, lmissing equipment) DSD128, 1 Channel -> S24:352.8kHz (untested, lack of time / missing samples) DSD128, 2 Channel -> S24:705.6kHz DSD256, 1 Channel -> S24:705.6kHz (untested, lack of time / missing samples) Changes inclusion of required files adding new domain for logging adding dop_satisfied private function adding required member variables for storing dop state and for dop-packing adding dop boolean parameter to many functions that are required to act a little differently when dop is active Testing This has been tested to work with a Sabaj Da2 on FreeBSD, where the red status indicator LED clearly shows that DSD playback is taking place, instead of purple for "hi-res" which is seen when converting. Issues I have not tested this with S24 and right now AFMT_S32_NE is required. If not defined, ENABLE_DSD will be undef'ed. This will be addressed in a bit, however no DAC which supports DOP but not 32Bit is known to me. Also, AFMT_S32_NE is not defined when building on FreeBSD which is why this is just blatantly defined in the file at the moment. Additionally, the new dop-option is not added into any documentation whatsoever.
2021-08-05output/oss: replace the AudioFormat field with 3 raw OSS integersMax Kellermann
This simplifies Reopen().