Index: content/renderer/media/speech_recognition_audio_sink.cc |
diff --git a/content/renderer/media/speech_recognition_audio_sink.cc b/content/renderer/media/speech_recognition_audio_sink.cc |
index 01c548eb7ed62d1fb6b3b2f5bcf2a8d14889346d..c3931b2875df18653ebea45c56f6b6d60de97e93 100644 |
--- a/content/renderer/media/speech_recognition_audio_sink.cc |
+++ b/content/renderer/media/speech_recognition_audio_sink.cc |
@@ -30,9 +30,9 @@ SpeechRecognitionAudioSink::SpeechRecognitionAudioSink( |
DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
DCHECK(params.IsValid()); |
DCHECK(IsSupportedTrack(track)); |
- const size_t memory_length = media::AudioBus::CalculateMemorySize(params) + |
- sizeof(media::AudioInputBufferParameters); |
- CHECK(shared_memory_.Map(memory_length)); |
+ const size_t kSharedMemorySize = sizeof(media::AudioInputBufferParameters) + |
+ media::AudioBus::CalculateMemorySize(params); |
+ CHECK(shared_memory_.Map(kSharedMemorySize)); |
media::AudioInputBuffer* buffer = |
static_cast<media::AudioInputBuffer*>(shared_memory_.memory()); |
@@ -127,9 +127,11 @@ void SpeechRecognitionAudioSink::OnData(const int16* audio_data, |
DCHECK_EQ(input_bus_->channels(), number_of_channels); |
if (fifo_->frames() + number_of_frames > fifo_->max_frames()) { |
// This would indicate a serious issue with the browser process or the |
- // SyncSocket and/or SharedMemory. We stop delivering any data to the peer. |
- NOTREACHED() << "Audio FIFO overflow"; |
- return; |
+ // SyncSocket and/or SharedMemory. We drop any previous buffers and try to |
+ // recover by resuming where the peer left of. |
+ DVLOG(1) << "Audio FIFO overflow"; |
no longer working on chromium
2014/10/13 12:28:56
DLOG(ERROR) << "Audio FIFO overflow";
burnik
2014/10/13 12:37:06
Done.
|
+ fifo_->Clear(); |
+ buffer_index_ = GetAudioInputBuffer()->params.size; |
} |
// TODO(xians): A better way to handle the interleaved and deinterleaved |
// format switching, see issue/317710. |
@@ -146,7 +148,7 @@ void SpeechRecognitionAudioSink::OnData(const int16* audio_data, |
// The peer must write to it (incrementing by 1) once the the buffer was |
// consumed. This is intentional not to block this audio capturing thread. |
if (buffer_index_ != GetAudioInputBuffer()->params.size) { |
- DLOG(WARNING) << "Buffer synchronization lag"; |
+ DVLOG(1) << "Buffer synchronization lag"; |
return; |
} |