Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / media / audio_input_sync_writer.cc
index 369e0a8..b9c8ee5 100644 (file)
@@ -7,6 +7,9 @@
 #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 {
 
@@ -15,7 +18,8 @@ AudioInputSyncWriter::AudioInputSyncWriter(
     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_ =
@@ -33,6 +37,24 @@ uint32 AudioInputSyncWriter::Write(const void* data,
                                    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 =