OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 // of the Audio Processing Module. The recordings are called | 96 // of the Audio Processing Module. The recordings are called |
97 // 'aec-dumps' and are stored in a protobuf format defined in | 97 // 'aec-dumps' and are stored in a protobuf format defined in |
98 // debug.proto. | 98 // debug.proto. |
99 class AecDump { | 99 class AecDump { |
100 public: | 100 public: |
101 // A capture stream frame is logged before and after processing in | 101 // A capture stream frame is logged before and after processing in |
102 // the same protobuf message. To facilitate that, a CaptureStreamInfo | 102 // the same protobuf message. To facilitate that, a CaptureStreamInfo |
103 // instance is first filled with Input, then Output. | 103 // instance is first filled with Input, then Output. |
104 // | 104 // |
105 // To log an input/output pair, first call | 105 // To log an input/output pair, first call |
106 // AecDump::GetCaptureStreamInfo. Add the input and output to | 106 // AecDump::GetCaptureStreamInfo. Add the input and output to the |
107 // it. Then call AecDump::WriteCaptureStreamMessage. | 107 // returned CaptureStreamInfo pointer. Then call |
| 108 // AecDump::WriteCaptureStreamMessage. |
108 class CaptureStreamInfo { | 109 class CaptureStreamInfo { |
109 public: | 110 public: |
110 virtual ~CaptureStreamInfo() = default; | 111 virtual ~CaptureStreamInfo() = default; |
111 virtual void AddInput(const FloatAudioFrame& src) = 0; | 112 virtual void AddInput(const FloatAudioFrame& src) = 0; |
112 virtual void AddOutput(const FloatAudioFrame& src) = 0; | 113 virtual void AddOutput(const FloatAudioFrame& src) = 0; |
113 | 114 |
114 virtual void AddInput(const AudioFrame& frame) = 0; | 115 virtual void AddInput(const AudioFrame& frame) = 0; |
115 virtual void AddOutput(const AudioFrame& frame) = 0; | 116 virtual void AddOutput(const AudioFrame& frame) = 0; |
116 | 117 |
117 virtual void set_delay(int delay) = 0; | 118 virtual void set_delay(int delay) = 0; |
118 virtual void set_drift(int drift) = 0; | 119 virtual void set_drift(int drift) = 0; |
119 virtual void set_level(int level) = 0; | 120 virtual void set_level(int level) = 0; |
120 virtual void set_keypress(bool keypress) = 0; | 121 virtual void set_keypress(bool keypress) = 0; |
121 }; | 122 }; |
122 | 123 |
123 virtual ~AecDump() = default; | 124 virtual ~AecDump() = default; |
124 | 125 |
125 virtual std::unique_ptr<CaptureStreamInfo> CreateCaptureStreamInfo() | 126 virtual CaptureStreamInfo* GetCaptureStreamInfo() = 0; |
126 const = 0; | |
127 | 127 |
128 // The Write* methods are always safe to call concurrently or | 128 // The Write* methods are always safe to call concurrently or |
129 // otherwise for all implementing subclasses. The intended mode of | 129 // otherwise for all implementing subclasses. The intended mode of |
130 // operation is to create a protobuf object from the input, and send | 130 // operation is to create a protobuf object from the input, and send |
131 // it away to be written to file asynchronously. | 131 // it away to be written to file asynchronously. |
132 virtual void WriteInitMessage( | 132 virtual void WriteInitMessage( |
133 const InternalAPMStreamsConfig& streams_config) = 0; | 133 const InternalAPMStreamsConfig& streams_config) = 0; |
134 | 134 |
135 virtual void WriteRenderStreamMessage(const AudioFrame& frame) = 0; | 135 virtual void WriteRenderStreamMessage(const AudioFrame& frame) = 0; |
136 | 136 |
137 virtual void WriteRenderStreamMessage(const FloatAudioFrame& src) = 0; | 137 virtual void WriteRenderStreamMessage(const FloatAudioFrame& src) = 0; |
138 | 138 |
139 virtual void WriteCaptureStreamMessage( | 139 virtual void WriteCaptureStreamMessage() = 0; |
140 std::unique_ptr<CaptureStreamInfo> stream_info) = 0; | |
141 | 140 |
142 // If not |forced|, only writes the current config if it is | 141 // If not |forced|, only writes the current config if it is |
143 // different from the last saved one; if |forced|, writes the config | 142 // different from the last saved one; if |forced|, writes the config |
144 // regardless of the last saved. | 143 // regardless of the last saved. |
145 virtual void WriteConfig(const InternalAPMConfig& config, bool forced) = 0; | 144 virtual void WriteConfig(const InternalAPMConfig& config, bool forced) = 0; |
146 }; | 145 }; |
147 } // namespace webrtc | 146 } // namespace webrtc |
148 | 147 |
149 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_INCLUDE_AEC_DUMP_H_ | 148 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_INCLUDE_AEC_DUMP_H_ |
OLD | NEW |