| Index: webrtc/modules/audio_processing/aec_dump/capture_stream_info_impl.h
|
| diff --git a/webrtc/modules/audio_processing/aec_dump/capture_stream_info_impl.h b/webrtc/modules/audio_processing/aec_dump/capture_stream_info_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4aa2fa43e10b380c3c5b54577262b0b1ca796587
|
| --- /dev/null
|
| +++ b/webrtc/modules/audio_processing/aec_dump/capture_stream_info_impl.h
|
| @@ -0,0 +1,137 @@
|
| +/*
|
| + * 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.
|
| + */
|
| +
|
| +#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AEC_DUMP_CAPTURE_STREAM_INFO_IMPL_H_
|
| +#define WEBRTC_MODULES_AUDIO_PROCESSING_AEC_DUMP_CAPTURE_STREAM_INFO_IMPL_H_
|
| +
|
| +#include <memory>
|
| +#include <utility>
|
| +#include <vector>
|
| +
|
| +#include "webrtc/base/checks.h"
|
| +#include "webrtc/base/ignore_wundef.h"
|
| +#include "webrtc/base/logging.h"
|
| +#include "webrtc/modules/audio_processing/include/aec_dump.h"
|
| +#include "webrtc/modules/include/module_common_types.h"
|
| +
|
| +// Files generated at build-time by the protobuf compiler.
|
| +RTC_PUSH_IGNORING_WUNDEF()
|
| +#ifdef WEBRTC_ANDROID_PLATFORM_BUILD
|
| +#include "external/webrtc/webrtc/modules/audio_processing/debug.pb.h"
|
| +#else
|
| +#include "webrtc/modules/audio_processing/debug.pb.h"
|
| +#endif
|
| +RTC_POP_IGNORING_WUNDEF()
|
| +
|
| +namespace webrtc {
|
| +
|
| +// Optionally inherit from TaskQueue task.
|
| +class CaptureStreamInfoImpl final : public AecDump::CaptureStreamInfo {
|
| + public:
|
| + explicit CaptureStreamInfoImpl(std::unique_ptr<audioproc::Event> event);
|
| + ~CaptureStreamInfoImpl() override;
|
| + void AddInput(const std::vector<rtc::ArrayView<const float>>& src) override;
|
| + void AddOutput(const std::vector<rtc::ArrayView<const float>>& src) override;
|
| +
|
| + void AddInput(const AudioFrame& frame) override;
|
| + void AddOutput(const AudioFrame& frame) override;
|
| +
|
| + void set_delay(int delay) override;
|
| + void set_drift(int drift) override;
|
| + void set_level(int level) override;
|
| + void set_keypress(bool keypress) override;
|
| +
|
| + std::unique_ptr<audioproc::Event> GetEventMsg() {
|
| + return std::unique_ptr<audioproc::Event>(event_.release());
|
| + }
|
| +
|
| + private:
|
| + std::unique_ptr<audioproc::Event> event_;
|
| +};
|
| +
|
| +CaptureStreamInfoImpl::CaptureStreamInfoImpl(
|
| + std::unique_ptr<audioproc::Event> event)
|
| + : event_(std::move(event)) {
|
| + RTC_DCHECK(event_);
|
| + event_->set_type(audioproc::Event::STREAM);
|
| +}
|
| +
|
| +CaptureStreamInfoImpl::~CaptureStreamInfoImpl() = default;
|
| +
|
| +void CaptureStreamInfoImpl::AddInput(
|
| + const std::vector<rtc::ArrayView<const float>>& src) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + auto* stream = event_->mutable_stream();
|
| + for (const auto& channel_view : src) {
|
| + stream->add_input_channel(channel_view.begin(), channel_view.size());
|
| + }
|
| +}
|
| +
|
| +void CaptureStreamInfoImpl::AddOutput(
|
| + const std::vector<rtc::ArrayView<const float>>& src) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + auto* stream = event_->mutable_stream();
|
| + for (const auto& channel_view : src) {
|
| + stream->add_output_channel(channel_view.begin(), channel_view.size());
|
| + }
|
| +}
|
| +
|
| +void CaptureStreamInfoImpl::AddInput(const AudioFrame& frame) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + audioproc::Stream* stream = event_->mutable_stream();
|
| + const size_t data_size =
|
| + sizeof(int16_t) * frame.samples_per_channel_ * frame.num_channels_;
|
| + stream->set_input_data(frame.data_, data_size);
|
| +}
|
| +
|
| +void CaptureStreamInfoImpl::AddOutput(const AudioFrame& frame) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + audioproc::Stream* stream = event_->mutable_stream();
|
| + const size_t data_size =
|
| + sizeof(int16_t) * frame.samples_per_channel_ * frame.num_channels_;
|
| + stream->set_output_data(frame.data_, data_size);
|
| +}
|
| +
|
| +void CaptureStreamInfoImpl::set_delay(int delay) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + event_->mutable_stream()->set_delay(delay);
|
| +}
|
| +void CaptureStreamInfoImpl::set_drift(int drift) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + event_->mutable_stream()->set_drift(drift);
|
| +}
|
| +void CaptureStreamInfoImpl::set_level(int level) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + event_->mutable_stream()->set_level(level);
|
| +}
|
| +void CaptureStreamInfoImpl::set_keypress(bool keypress) {
|
| + if (!event_) {
|
| + return;
|
| + }
|
| + event_->mutable_stream()->set_keypress(keypress);
|
| +}
|
| +
|
| +} // namespace webrtc
|
| +
|
| +#endif // WEBRTC_MODULES_AUDIO_PROCESSING_AEC_DUMP_CAPTURE_STREAM_INFO_IMPL_H_
|
|
|