summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-07-03net/AllocatedSocketAddress: import std::swapMax Kellermann
2019-07-03net/{Allocated,Static}SocketAddress: use IPv[46]Address::SetPort()Max Kellermann
2019-07-03net/ToString: move UnmapV4() to class IPv6AddressMax Kellermann
2019-07-03net/ToString: UnmapV4() returns IPv4AddressMax Kellermann
2019-07-03net/SocketAddress: use IPv[46]Address::Cast()Max Kellermann
2019-07-03Merge tag 'v0.21.11'Max Kellermann
release v0.21.11
2019-07-01Merge branch 'runtime_enumeration' of git://github.com/eugene2k/MPDMax Kellermann
2019-07-01Add runtime enumeration of supported schemas.Eugene Gorodinsky
Fix src/ls.cxx to only print unique schemas. Refactor src/ls.cxx to use src/input/InputPlugin functionality. Add dynamic enumeration support to curl plugin.
2019-06-28output/alsa: log when generating silence due to slow decoderMax Kellermann
MPD used to do that when this code lived in the player thread, but it was removed by commit 98a7c62d7a4f716d90af6d78e18d1a3b10bc54b3; and the replacement code in the ALSA output plugin didn't have it.
2019-06-28output/alsa: schedule a timer to generate silenceMax Kellermann
Without this timer, DispatchSockets() may disable the MultiSocketMonitor and if Play() doesn't get called soon, it never gets a chance to generate silence. However if Play() gets called, generating silence isn't necessary anymore... Resulting from this misdesign (added by commit ccafe3f3cf3 in 0.21.3), the silence generator didn't work reliably.
2019-06-28output/alsa: add a new flag "waiting" for xrun managementMax Kellermann
In DispatchSockets(), when there was not enough data, but enough for current playback, the method would disable the "active" flag so the next Play() call would re-enable the MultiSocketMonitor. This was an abuse of the flag which could result in a crash in Cancel(), because that method asserts that the period_buffer is empty, which it may be not. The solution is to add anther flag called "waiting" which shares some behavior with the old flag.
2019-06-28output/alsa: Cancel() also affects "active" (documentation)Max Kellermann
2019-06-28output/alsa: fix comment typoMax Kellermann
2019-06-28output/alsa: fix comment typoMax Kellermann
2019-06-28output/alsa: more assertions in class PeriodBufferMax Kellermann
2019-06-28output/alsa: use IsCleared() instead of IsDrained() in DrainInternal()Max Kellermann
Really drain all data from the period_buffer in any case.
2019-06-28output/alsa: replace PeriodBuffer::IsEmpty() with IsCleared()Max Kellermann
This assertion is not about whether all data has been consumed, but about whether there has been any data at all.
2019-06-28Merge branch 'v0.21.x'Max Kellermann
2019-06-28output/alsa: always redo DrainInternal() after writingMax Kellermann
Draining isn't finished just because the period_buffer has run empty. It is only finished after snd_pcm_drain() has succeeded.
2019-06-28output/alsa: check PCM state before calling snd_pcm_drain()Max Kellermann
Apparently, if snd_pcm_drain() returns EAGAIN, it does not actually want to be called again; the next call will snd_pcm_drain() will also return EAGAIN, forever, even though the PCM state has meanwhile switched to SND_PCM_STATE_SETUP. This causes a busy loop; to fix this, we should always check snd_pcm_state() to see if draining is really required.
2019-06-27output/alsa: check GetFrames()>0 instead of IsEmpty() in WriteFromPeriodBuffer()Max Kellermann
2019-06-27output/alsa: DrainInternal() ignores postponed partial frameMax Kellermann
2019-06-27output/alsa: add "full" assertion to WriteFromPeriodBuffer()Max Kellermann
2019-06-27output/alsa: add full check before calling FillWithSilence()Max Kellermann
2019-06-27output/alsa: improve silence generator test in DrainInternal()Max Kellermann
There cannot be partial frames in the buffer, so we don't need GetPeriodPosition(); it's enough to check whether head has been moved in this period.
2019-06-27output/alsa: hold back snd_pcm_writei() until period_buffer is fullMax Kellermann
This gives MPD more control, because attempts to avoid having partial periods in the ALSA period buffer. For example, this means that DrainInternal() doesn't need to generate silence to fill the partial period.
2019-06-27lib/alsa/PeriodBuffer: add missing includeMax Kellermann
2019-06-27lib/alsa/PeriodBuffer: add API documentationMax Kellermann
2019-06-27Merge branch 'v0.21.x'Max Kellermann
2019-06-26input/tidal: deprecated because Tidal has changed the protocolMax Kellermann
See https://github.com/MusicPlayerDaemon/MPD/issues/545
2019-06-26decoder/wildmidi: add fallbacks for libwildmidi<0.4Max Kellermann
Fix build breakage from commit ea639269d8b0ae3db06c46d546d54896a8d8c89e
2019-06-26decoder/wildmidi: remove unused variable wildmidi_domainMax Kellermann
2019-06-26decoder/wildmidi: throw PluginUnavailable on WildMidi_Init() errorMax Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/589
2019-06-26decoder/wildmidi: throw PluginUnavailable if config file does not existMax Kellermann
This makes the configuration error more visible, possibly addressing one part of https://github.com/MusicPlayerDaemon/MPD/issues/589
2019-06-26decoder/List: handle exception PluginUnavailableMax Kellermann
2019-06-26decoder/List: annotate exceptions thrown by DecoderPlugin::Init()Max Kellermann
2019-06-26pcm/Export: add GetSilence()Max Kellermann
2019-06-26pcm/Export: add GetInputBlockSize(), GetOutputBlockSize()Max Kellermann
2019-06-26pcm/Export: add GetInputFrameSize()Max Kellermann
2019-06-26pcm/Export: rename GetFrameSize() to GetOutputFrameSize()Max Kellermann
2019-06-26pcm/Export: rename CalcSourceSize() to CalcInputSize()Max Kellermann
2019-06-26pcm/Export: eliminate the AudioFormat parameter from GetFrameSize()Max Kellermann
2019-06-26pcm/Export: use the "channels" attribute in GetFrameSize()Max Kellermann
2019-06-26pcm/RestBuffer: make internal methods privateMax Kellermann
2019-06-18pcm/Export: split src_sample_format from alsa_channel_orderMax Kellermann
Combining these two in one single value saves some memory, but is complicated and we may need the src_sample_format for new features later.
2019-06-18pcm/Export: update API documentationMax Kellermann
2019-06-18Revert "MusicChunk: pad MusicChunkInfo to a multiple of 8 bytes"Max Kellermann
This reverts commit 2c3eeb7194b4871ed7227a2c0b7bfae90b05d17f. This workaround has been obsoleted by commits bf26adf55546771e92fcfd2cc192c70c7eb5f1cd and 32380d1db046dc596e9f8198d22050b2beab8a41
2019-06-18pcm/Dsd{16,32}: stash odd frames away for the next callMax Kellermann
Similar to commit 32380d1db046dc596e9f8198d22050b2beab8a41, these are the final parts for really fixing https://github.com/MusicPlayerDaemon/MPD/issues/469
2019-06-18pcm/Dsd{16,32}: convert public function to stateful classMax Kellermann
2019-06-18pcm/Export: update API documentationMax Kellermann