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.
This commit is contained in:
parent
61a72a5d13
commit
f780ac418a
1
NEWS
1
NEWS
|
@ -7,6 +7,7 @@ ver 0.21.11 (not yet released)
|
|||
- alsa: fix busy loop while draining
|
||||
- alsa: fix missing drain call
|
||||
- alsa: improve xrun-avoiding silence generator
|
||||
- alsa: log when generating silence due to slow decoder
|
||||
- alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs
|
||||
* protocol
|
||||
- fix "list" with multiple "group" levels
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue