| Index: content/browser/renderer_host/media/audio_sync_reader.cc
|
| ===================================================================
|
| --- content/browser/renderer_host/media/audio_sync_reader.cc (revision 99444)
|
| +++ content/browser/renderer_host/media/audio_sync_reader.cc (working copy)
|
| @@ -8,12 +8,9 @@
|
|
|
| #include "base/process_util.h"
|
| #include "base/shared_memory.h"
|
| -#include "base/threading/platform_thread.h"
|
| #include "media/audio/audio_buffers_state.h"
|
| #include "media/audio/audio_util.h"
|
|
|
| -const int kMinIntervalBetweenReadCalls = 10;
|
| -
|
| AudioSyncReader::AudioSyncReader(base::SharedMemory* shared_memory)
|
| : shared_memory_(shared_memory) {
|
| }
|
| @@ -29,19 +26,6 @@
|
| uint32 AudioSyncReader::Read(void* data, uint32 size) {
|
| uint32 max_size = media::PacketSizeSizeInBytes(
|
| shared_memory_->created_size());
|
| -
|
| - // HACK: yield if reader is called too often.
|
| - // Problem is lack of synchronization between host and renderer. We cannot be
|
| - // sure if renderer already filled the buffer, and due to all the plugins we
|
| - // cannot change the API, so we yield if previous call was too recent.
|
| - // Optimization: if renderer is "new" one that writes length of data we can
|
| - // stop yielding the moment length is written -- not ideal solution,
|
| - // but better than nothing.
|
| - while (media::IsUnknownDataSize(shared_memory_, max_size) &&
|
| - ((base::Time::Now() - previous_call_time_).InMilliseconds() <
|
| - kMinIntervalBetweenReadCalls)) {
|
| - base::PlatformThread::YieldCurrentThread();
|
| - }
|
| uint32 read_size = std::min(media::GetActualDataSizeInBytes(shared_memory_,
|
| max_size),
|
| size);
|
| @@ -56,11 +40,9 @@
|
| // Zero out the entire buffer.
|
| memset(shared_memory_->memory(), 0, max_size);
|
|
|
| - // Store unknown length of data into buffer, in case renderer does not store
|
| - // the length itself. It also helps in decision if we need to yield.
|
| - media::SetUnknownDataSize(shared_memory_, max_size);
|
| + // Store max length of data into buffer, in case client does not do that.
|
| + media::SetActualDataSizeInBytes(shared_memory_, max_size, max_size);
|
|
|
| - previous_call_time_ = base::Time::Now();
|
| return read_size;
|
| }
|
|
|
|
|