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

Side by Side Diff: webrtc/modules/audio_processing/logging/apm_data_dumper.h

Issue 1877713002: Replaced the data logging functionality in the AEC with a generic logging functionality (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Updated the buildfile according to reviewer comments Created 4 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_LOGGING_APM_DATA_DUMPER_H_
12 #define WEBRTC_MODULES_AUDIO_PROCESSING_LOGGING_APM_DATA_DUMPER_H_
13
14 #include <stdio.h>
15
16 #include <map>
17 #include <string>
18
19 #include "webrtc/base/array_view.h"
20 #include "webrtc/base/constructormagic.h"
21 #include "webrtc/common_audio/wav_file.h"
22
23 // Check to verify that the define is properly set.
24 #if !defined(WEBRTC_AEC_DEBUG_DUMP) || \
25 (WEBRTC_AEC_DEBUG_DUMP != 0 && WEBRTC_AEC_DEBUG_DUMP != 1)
26 #error "Set WEBRTC_AEC_DEBUG_DUMP to either 0 or 1"
27 #endif
28
29 namespace webrtc {
30
31 // Class that handles dumping of variables into files.
32 class ApmDataDumper {
33 public:
34 // Constructor that takes an instance index that may
35 // be used to distinguish data dumped from different
36 // instances of the code.
37 #if WEBRTC_AEC_DEBUG_DUMP == 1
38 explicit ApmDataDumper(int instance_index)
39 : instance_index_(instance_index) {}
40 #else
41 explicit ApmDataDumper(int instance_index) {}
42 #endif
43
44 ~ApmDataDumper();
45
46 // Reitializes the data dumping such that new versions
hlundin-webrtc 2016/04/25 11:29:59 Reinitializes
peah-webrtc 2016/04/25 11:46:40 Thanks! Done.
47 // of all files being dumped to are created.
48 void InitiateNewSetOfRecordings() {
49 #if WEBRTC_AEC_DEBUG_DUMP == 1
50 ++recording_set_index_;
51 #endif
52 }
53
54 // Methods for performing dumping of data of various types into
55 // various formats.
56 void DumpRaw(const std::string& name, int v_length, const float* v) {
57 #if WEBRTC_AEC_DEBUG_DUMP == 1
58 FILE* file = GetRawFile(name);
59 fwrite(v, sizeof(v[0]), v_length, file);
60 #endif
61 }
62
63 void DumpRaw(const std::string& name, rtc::ArrayView<const float> v) {
64 #if WEBRTC_AEC_DEBUG_DUMP == 1
65 DumpRaw(name, v.size(), v.data());
66 #endif
67 }
68
69 void DumpWav(const std::string& name,
70 int v_length,
71 const float* v,
72 int sample_rate_hz,
73 int num_channels) {
74 #if WEBRTC_AEC_DEBUG_DUMP == 1
75 WavWriter* file = GetWavFile(name, sample_rate_hz, num_channels);
76 file->WriteSamples(v, v_length);
77 #endif
78 }
79
80 void DumpMonoWav(const std::string& name,
81 rtc::ArrayView<const float> v,
82 int sample_rate_hz,
83 int num_channels) {
84 #if WEBRTC_AEC_DEBUG_DUMP == 1
85 DumpWav(name, v.size(), v.data(), sample_rate_hz, num_channels);
86 #endif
87 }
88
89 private:
90 #if WEBRTC_AEC_DEBUG_DUMP == 1
91 const int instance_index_;
92 int recording_set_index_ = 0;
93 std::map<std::string, FILE*> raw_files_;
94 std::map<std::string, WavWriter*> wav_files_;
95
96 FILE* GetRawFile(const std::string& name);
97 WavWriter* GetWavFile(const std::string& name,
98 int sample_rate_hz,
99 int num_channels);
100 #endif
101 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(ApmDataDumper);
102 };
103
104 } // namespace webrtc
105
106 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_LOGGING_APM_DATA_DUMPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698