diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/mac/audio_input_mac.cc | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/media/audio/mac/audio_input_mac.cc b/media/audio/mac/audio_input_mac.cc index 69791cf..e741b29 100644 --- a/media/audio/mac/audio_input_mac.cc +++ b/media/audio/mac/audio_input_mac.cc @@ -197,17 +197,15 @@ void PCMQueueInAudioInputStream::HandleInputBuffer( // back to back once that internal buffer is filled. When this happens the // renderer client does not have enough time to read data back from the // shared memory before the next write comes along. If HandleInputBuffer() - // is called too frequently, Sleep() to simulate realtime input and ensure - // the shared memory doesn't get trampled. + // is called too frequently, Sleep() at least 5ms to ensure the shared + // memory doesn't get trampled. // TODO(dalecurtis): This is a HACK. Long term the AudioQueue path is going // away in favor of the AudioUnit based AUAudioInputStream(). Tracked by - // http://crbug.com/161383 + // http://crbug.com/161383. base::TimeDelta elapsed = base::Time::Now() - last_fill_; - base::TimeDelta buffer_length = base::TimeDelta::FromMilliseconds( - audio_buffer->mAudioDataByteSize * base::Time::kMillisecondsPerSecond / - static_cast<float>(format_.mBytesPerFrame * format_.mSampleRate)); - if (elapsed < buffer_length) - base::PlatformThread::Sleep(buffer_length - elapsed); + const base::TimeDelta kMinDelay = base::TimeDelta::FromMilliseconds(5); + if (elapsed < kMinDelay) + base::PlatformThread::Sleep(kMinDelay - elapsed); callback_->OnData(this, reinterpret_cast<const uint8*>(audio_buffer->mAudioData), |