| Index: chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc
|
| diff --git a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc
|
| index 62332edb9f611744f21eee147b19ee14738d29a1..6df49ef5e834d9f46b19ac4852b875559fd53506 100644
|
| --- a/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc
|
| +++ b/chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.cc
|
| @@ -83,6 +83,7 @@ StreamMixerAlsaInputImpl::StreamMixerAlsaInputImpl(
|
| fade_frames_remaining_(0),
|
| fade_out_frames_total_(0),
|
| zeroed_frames_(0),
|
| + is_underflowing_(false),
|
| weak_factory_(this) {
|
| LOG(INFO) << "Create " << this;
|
| DCHECK(delegate_);
|
| @@ -237,6 +238,10 @@ void StreamMixerAlsaInputImpl::DidQueueData(bool end_of_stream) {
|
|
|
| void StreamMixerAlsaInputImpl::OnSkipped() {
|
| DCHECK(mixer_task_runner_->BelongsToCurrentThread());
|
| + if (!is_underflowing_) {
|
| + LOG(WARNING) << "Underflow for " << this;
|
| + is_underflowing_ = true;
|
| + }
|
| if (state_ == kStateNormalPlayback) {
|
| // Fade in once this input starts providing data again.
|
| fade_frames_remaining_ = NormalFadeFrames();
|
| @@ -316,6 +321,7 @@ void StreamMixerAlsaInputImpl::GetResampledData(::media::AudioBus* dest,
|
| DCHECK(dest);
|
| DCHECK_EQ(kNumOutputChannels, dest->channels());
|
| DCHECK_GE(dest->frames(), frames);
|
| + is_underflowing_ = false;
|
|
|
| if (state_ == kStatePaused || state_ == kStateDeleted) {
|
| dest->ZeroFramesPartial(0, frames);
|
|
|