Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(227)

Unified Diff: webrtc/modules/audio_processing/aec_dump/write_to_file_task.cc

Issue 2865113002: AecDump implementation. (Closed)
Patch Set: Removed extra build deps from dependent CL. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/audio_processing/aec_dump/write_to_file_task.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_processing/aec_dump/write_to_file_task.cc
diff --git a/webrtc/modules/audio_processing/aec_dump/write_to_file_task.cc b/webrtc/modules/audio_processing/aec_dump/write_to_file_task.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f9aa567a84f0546039191c935ec04eb6a0b9894c
--- /dev/null
+++ b/webrtc/modules/audio_processing/aec_dump/write_to_file_task.cc
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/modules/audio_processing/aec_dump/write_to_file_task.h"
+
+#include "webrtc/base/protobuf_utils.h"
+
+namespace webrtc {
+
+WriteToFileTask::WriteToFileTask(webrtc::FileWrapper* debug_file,
+ int64_t* num_bytes_left_for_log)
+ : debug_file_(debug_file),
+ num_bytes_left_for_log_(num_bytes_left_for_log) {}
+
+WriteToFileTask::~WriteToFileTask() = default;
+
+audioproc::Event* WriteToFileTask::GetEvent() {
+ return &event_;
+}
+
+bool WriteToFileTask::IsRoomForNextEvent(size_t event_byte_size) const {
+ int64_t next_message_size = event_byte_size + sizeof(int32_t);
+ return (*num_bytes_left_for_log_ < 0) ||
+ (*num_bytes_left_for_log_ >= next_message_size);
+}
+
+void WriteToFileTask::UpdateBytesLeft(size_t event_byte_size) {
+ RTC_DCHECK(IsRoomForNextEvent(event_byte_size));
+ if (*num_bytes_left_for_log_ >= 0) {
+ *num_bytes_left_for_log_ -= (sizeof(int32_t) + event_byte_size);
+ }
+}
+
+bool WriteToFileTask::Run() {
+ if (!debug_file_->is_open()) {
+ return true;
+ }
+
+ ProtoString event_string;
+ event_.SerializeToString(&event_string);
+
+ const size_t event_byte_size = event_.ByteSize();
+
+ if (!IsRoomForNextEvent(event_byte_size)) {
+ debug_file_->CloseFile();
+ return true;
+ }
+
+ UpdateBytesLeft(event_byte_size);
+
+ // Write message preceded by its size.
+ if (!debug_file_->Write(&event_byte_size, sizeof(int32_t))) {
+ RTC_NOTREACHED();
+ }
+ if (!debug_file_->Write(event_string.data(), event_string.length())) {
+ RTC_NOTREACHED();
+ }
+ return true; // Delete task from queue at once.
+}
+
+} // namespace webrtc
« no previous file with comments | « webrtc/modules/audio_processing/aec_dump/write_to_file_task.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698