| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/media/audio_input_sync_writer.h" | 5 #include "content/browser/renderer_host/media/audio_input_sync_writer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 | 226 |
| 227 void AudioInputSyncWriter::AddToNativeLog(const std::string& message) { | 227 void AudioInputSyncWriter::AddToNativeLog(const std::string& message) { |
| 228 MediaStreamManager::SendMessageToNativeLog(message); | 228 MediaStreamManager::SendMessageToNativeLog(message); |
| 229 } | 229 } |
| 230 | 230 |
| 231 bool AudioInputSyncWriter::PushDataToFifo(const AudioBus* data, | 231 bool AudioInputSyncWriter::PushDataToFifo(const AudioBus* data, |
| 232 double volume, | 232 double volume, |
| 233 bool key_pressed, | 233 bool key_pressed, |
| 234 uint32_t hardware_delay_bytes) { | 234 uint32_t hardware_delay_bytes) { |
| 235 if (overflow_buses_.size() == kMaxOverflowBusesSize) { | 235 if (overflow_buses_.size() == kMaxOverflowBusesSize) { |
| 236 const std::string error_message = "AISW: No room in fifo."; | 236 // We use |write_error_count_| for capping number of log messages. |
| 237 LOG(ERROR) << error_message; | 237 // |write_error_count_| also includes socket Send() errors, but those should |
| 238 AddToNativeLog(error_message); | 238 // be rare. |
| 239 if (write_error_count_ <= 50) { |
| 240 const std::string error_message = "AISW: No room in fifo."; |
| 241 LOG(WARNING) << error_message; |
| 242 AddToNativeLog(error_message); |
| 243 if (write_error_count_ == 50) { |
| 244 const std::string error_message = |
| 245 "AISW: Log cap reached, suppressing further fifo overflow logs."; |
| 246 LOG(WARNING) << error_message; |
| 247 AddToNativeLog(error_message); |
| 248 } |
| 249 } |
| 239 return false; | 250 return false; |
| 240 } | 251 } |
| 241 | 252 |
| 242 if (overflow_buses_.empty()) { | 253 if (overflow_buses_.empty()) { |
| 243 const std::string message = "AISW: Starting to use fifo."; | 254 const std::string message = "AISW: Starting to use fifo."; |
| 244 DVLOG(1) << message; | 255 DVLOG(1) << message; |
| 245 AddToNativeLog(message); | 256 AddToNativeLog(message); |
| 246 } | 257 } |
| 247 | 258 |
| 248 // Push parameters to fifo. | 259 // Push parameters to fifo. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 buffer->params.size = audio_bus_memory_size_; | 325 buffer->params.size = audio_bus_memory_size_; |
| 315 buffer->params.key_pressed = key_pressed; | 326 buffer->params.key_pressed = key_pressed; |
| 316 buffer->params.hardware_delay_bytes = hardware_delay_bytes; | 327 buffer->params.hardware_delay_bytes = hardware_delay_bytes; |
| 317 buffer->params.id = next_buffer_id_; | 328 buffer->params.id = next_buffer_id_; |
| 318 } | 329 } |
| 319 | 330 |
| 320 bool AudioInputSyncWriter::SignalDataWrittenAndUpdateCounters() { | 331 bool AudioInputSyncWriter::SignalDataWrittenAndUpdateCounters() { |
| 321 if (socket_->Send(¤t_segment_id_, sizeof(current_segment_id_)) != | 332 if (socket_->Send(¤t_segment_id_, sizeof(current_segment_id_)) != |
| 322 sizeof(current_segment_id_)) { | 333 sizeof(current_segment_id_)) { |
| 323 const std::string error_message = "AISW: No room in socket buffer."; | 334 const std::string error_message = "AISW: No room in socket buffer."; |
| 324 LOG(ERROR) << error_message; | 335 LOG(WARNING) << error_message; |
| 325 AddToNativeLog(error_message); | 336 AddToNativeLog(error_message); |
| 326 return false; | 337 return false; |
| 327 } | 338 } |
| 328 | 339 |
| 329 if (++current_segment_id_ >= shared_memory_segment_count_) | 340 if (++current_segment_id_ >= shared_memory_segment_count_) |
| 330 current_segment_id_ = 0; | 341 current_segment_id_ = 0; |
| 331 ++number_of_filled_segments_; | 342 ++number_of_filled_segments_; |
| 332 CHECK_LE(number_of_filled_segments_, | 343 CHECK_LE(number_of_filled_segments_, |
| 333 static_cast<int>(shared_memory_segment_count_)); | 344 static_cast<int>(shared_memory_segment_count_)); |
| 334 ++next_buffer_id_; | 345 ++next_buffer_id_; |
| 335 | 346 |
| 336 return true; | 347 return true; |
| 337 } | 348 } |
| 338 | 349 |
| 339 } // namespace content | 350 } // namespace content |
| OLD | NEW |