#include <algorithm>
#include "base/memory/shared_memory.h"
+#include "content/browser/renderer_host/media/media_stream_manager.h"
+
+static const uint32 kLogDelayThreadholdMs = 500;
namespace content {
int shared_memory_segment_count)
: shared_memory_(shared_memory),
shared_memory_segment_count_(shared_memory_segment_count),
- current_segment_id_(0) {
+ current_segment_id_(0),
+ creation_time_(base::Time::Now()) {
DCHECK_GT(shared_memory_segment_count, 0);
DCHECK_EQ(shared_memory->requested_size() % shared_memory_segment_count, 0u);
shared_memory_segment_size_ =
uint32 size,
double volume,
bool key_pressed) {
+ std::ostringstream oss;
+ if (last_write_time_.is_null()) {
+ // This is the first time Write is called.
+ base::TimeDelta interval = base::Time::Now() - creation_time_;
+ oss << "Audio input data received for the first time: delay = "
+ << interval.InMilliseconds() << "ms.";
+ } else {
+ base::TimeDelta interval = base::Time::Now() - last_write_time_;
+ if (interval.InMilliseconds() > kLogDelayThreadholdMs) {
+ oss << "Audio input data delay unexpectedly long: delay = "
+ << interval.InMilliseconds() << "ms.";
+ }
+ }
+ if (!oss.str().empty())
+ MediaStreamManager::SendMessageToNativeLog(oss.str());
+
+ last_write_time_ = base::Time::Now();
+
uint8* ptr = static_cast<uint8*>(shared_memory_->memory());
ptr += current_segment_id_ * shared_memory_segment_size_;
media::AudioInputBuffer* buffer =