diff options
author | Max Kellermann <max@musicpd.org> | 2019-06-28 14:35:56 +0200 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2019-06-28 18:15:30 +0200 |
commit | f780ac418a38a0a86ffcead364a27367b9210710 (patch) | |
tree | 6ba4e54e6dd7791beede0aeb9ba79a2009814081 /src/output | |
parent | 61a72a5d131e89f069d2d2de9411de8fe4c21f23 (diff) |
output/alsa: log when generating silence due to slow decoder
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.
Diffstat (limited to 'src/output')
-rw-r--r-- | src/output/plugins/AlsaOutputPlugin.cxx | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/output/plugins/AlsaOutputPlugin.cxx b/src/output/plugins/AlsaOutputPlugin.cxx index 7e1919e43..8ccdd2121 100644 --- a/src/output/plugins/AlsaOutputPlugin.cxx +++ b/src/output/plugins/AlsaOutputPlugin.cxx @@ -27,6 +27,7 @@ #include "../OutputAPI.hxx" #include "mixer/MixerList.hxx" #include "pcm/PcmExport.hxx" +#include "system/PeriodClock.hxx" #include "thread/Mutex.hxx" #include "thread/Cond.hxx" #include "util/Manual.hxx" @@ -65,6 +66,8 @@ class AlsaOutput final */ TimerEvent silence_timer; + PeriodClock throttle_silence_log; + Manual<PcmExport> pcm_export; /** @@ -1073,6 +1076,9 @@ try { return; } + if (throttle_silence_log.CheckUpdate(std::chrono::seconds(5))) + FormatWarning(alsa_output_domain, "Decoder is too slow; playing silence to avoid xrun"); + /* insert some silence if the buffer has not enough data yet, to avoid ALSA xrun */ period_buffer.FillWithSilence(silence, out_frame_size); |