Index: media/audio/fake_audio_input_stream.cc |
diff --git a/media/audio/fake_audio_input_stream.cc b/media/audio/fake_audio_input_stream.cc |
index 7fe3f825d28096114f6b4e867324765b1e8336e5..43804cb82689ab3497ea1e1c6ab231245600b0c9 100644 |
--- a/media/audio/fake_audio_input_stream.cc |
+++ b/media/audio/fake_audio_input_stream.cc |
@@ -185,7 +185,7 @@ void FakeAudioInputStream::DoCallback() { |
next_callback_time = base::TimeDelta(); |
if (PlayingFromFile()) { |
- PlayFileLooping(); |
+ PlayFile(); |
} else { |
PlayBeep(); |
} |
@@ -214,14 +214,16 @@ bool FakeAudioInputStream::PlayingFromFile() { |
return wav_audio_handler_.get() != nullptr; |
} |
-void FakeAudioInputStream::PlayFileLooping() { |
+void FakeAudioInputStream::PlayFile() { |
+ // Stop playing if we've played out the whole file. |
+ if (wav_audio_handler_->AtEnd(wav_file_read_pos_)) |
+ return; |
+ |
// Unfilled frames will be zeroed by CopyTo. |
size_t bytes_written; |
wav_audio_handler_->CopyTo(audio_bus_.get(), wav_file_read_pos_, |
&bytes_written); |
wav_file_read_pos_ += bytes_written; |
- if (wav_audio_handler_->AtEnd(wav_file_read_pos_)) |
- wav_file_read_pos_ = 0; |
callback_->OnData(this, audio_bus_.get(), buffer_size_, 1.0); |
} |