Index: webrtc/modules/audio_processing/test/audio_file_processor.cc |
diff --git a/webrtc/modules/audio_processing/test/audio_file_processor.cc b/webrtc/modules/audio_processing/test/audio_file_processor.cc |
deleted file mode 100644 |
index ca244d550fed05248c5f650d93c09afb36dadc25..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/audio_processing/test/audio_file_processor.cc |
+++ /dev/null |
@@ -1,177 +0,0 @@ |
-/* |
- * Copyright (c) 2015 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/test/audio_file_processor.h" |
- |
-#include <algorithm> |
- |
-#include "webrtc/base/checks.h" |
-#include "webrtc/modules/audio_processing/test/protobuf_utils.h" |
- |
-using rtc::scoped_ptr; |
-using rtc::CheckedDivExact; |
-using std::vector; |
-using webrtc::audioproc::Event; |
-using webrtc::audioproc::Init; |
-using webrtc::audioproc::ReverseStream; |
-using webrtc::audioproc::Stream; |
- |
-namespace webrtc { |
-namespace { |
- |
-// Returns a StreamConfig corresponding to file. |
-StreamConfig GetStreamConfig(const WavFile& file) { |
- return StreamConfig(file.sample_rate(), file.num_channels()); |
-} |
- |
-// Returns a ChannelBuffer corresponding to file. |
-ChannelBuffer<float> GetChannelBuffer(const WavFile& file) { |
- return ChannelBuffer<float>( |
- CheckedDivExact(file.sample_rate(), AudioFileProcessor::kChunksPerSecond), |
- file.num_channels()); |
-} |
- |
-} // namespace |
- |
-WavFileProcessor::WavFileProcessor(scoped_ptr<AudioProcessing> ap, |
- scoped_ptr<WavReader> in_file, |
- scoped_ptr<WavWriter> out_file) |
- : ap_(ap.Pass()), |
- in_buf_(GetChannelBuffer(*in_file)), |
- out_buf_(GetChannelBuffer(*out_file)), |
- input_config_(GetStreamConfig(*in_file)), |
- output_config_(GetStreamConfig(*out_file)), |
- buffer_reader_(in_file.Pass()), |
- buffer_writer_(out_file.Pass()) {} |
- |
-bool WavFileProcessor::ProcessChunk() { |
- if (!buffer_reader_.Read(&in_buf_)) { |
- return false; |
- } |
- { |
- const auto st = ScopedTimer(mutable_proc_time()); |
- RTC_CHECK_EQ(kNoErr, |
- ap_->ProcessStream(in_buf_.channels(), input_config_, |
- output_config_, out_buf_.channels())); |
- } |
- buffer_writer_.Write(out_buf_); |
- return true; |
-} |
- |
-AecDumpFileProcessor::AecDumpFileProcessor(scoped_ptr<AudioProcessing> ap, |
- FILE* dump_file, |
- scoped_ptr<WavWriter> out_file) |
- : ap_(ap.Pass()), |
- dump_file_(dump_file), |
- out_buf_(GetChannelBuffer(*out_file)), |
- output_config_(GetStreamConfig(*out_file)), |
- buffer_writer_(out_file.Pass()) { |
- RTC_CHECK(dump_file_) << "Could not open dump file for reading."; |
-} |
- |
-AecDumpFileProcessor::~AecDumpFileProcessor() { |
- fclose(dump_file_); |
-} |
- |
-bool AecDumpFileProcessor::ProcessChunk() { |
- Event event_msg; |
- |
- // Continue until we process our first Stream message. |
- do { |
- if (!ReadMessageFromFile(dump_file_, &event_msg)) { |
- return false; |
- } |
- |
- if (event_msg.type() == Event::INIT) { |
- RTC_CHECK(event_msg.has_init()); |
- HandleMessage(event_msg.init()); |
- |
- } else if (event_msg.type() == Event::STREAM) { |
- RTC_CHECK(event_msg.has_stream()); |
- HandleMessage(event_msg.stream()); |
- |
- } else if (event_msg.type() == Event::REVERSE_STREAM) { |
- RTC_CHECK(event_msg.has_reverse_stream()); |
- HandleMessage(event_msg.reverse_stream()); |
- } |
- } while (event_msg.type() != Event::STREAM); |
- |
- return true; |
-} |
- |
-void AecDumpFileProcessor::HandleMessage(const Init& msg) { |
- RTC_CHECK(msg.has_sample_rate()); |
- RTC_CHECK(msg.has_num_input_channels()); |
- RTC_CHECK(msg.has_num_reverse_channels()); |
- |
- in_buf_.reset(new ChannelBuffer<float>( |
- CheckedDivExact(msg.sample_rate(), kChunksPerSecond), |
- msg.num_input_channels())); |
- const int reverse_sample_rate = msg.has_reverse_sample_rate() |
- ? msg.reverse_sample_rate() |
- : msg.sample_rate(); |
- reverse_buf_.reset(new ChannelBuffer<float>( |
- CheckedDivExact(reverse_sample_rate, kChunksPerSecond), |
- msg.num_reverse_channels())); |
- input_config_ = StreamConfig(msg.sample_rate(), msg.num_input_channels()); |
- reverse_config_ = |
- StreamConfig(reverse_sample_rate, msg.num_reverse_channels()); |
- |
- const ProcessingConfig config = { |
- {input_config_, output_config_, reverse_config_, reverse_config_}}; |
- RTC_CHECK_EQ(kNoErr, ap_->Initialize(config)); |
-} |
- |
-void AecDumpFileProcessor::HandleMessage(const Stream& msg) { |
- RTC_CHECK(!msg.has_input_data()); |
- RTC_CHECK_EQ(in_buf_->num_channels(), msg.input_channel_size()); |
- |
- for (int i = 0; i < msg.input_channel_size(); ++i) { |
- RTC_CHECK_EQ(in_buf_->num_frames() * sizeof(*in_buf_->channels()[i]), |
- msg.input_channel(i).size()); |
- std::memcpy(in_buf_->channels()[i], msg.input_channel(i).data(), |
- msg.input_channel(i).size()); |
- } |
- { |
- const auto st = ScopedTimer(mutable_proc_time()); |
- RTC_CHECK_EQ(kNoErr, ap_->set_stream_delay_ms(msg.delay())); |
- ap_->echo_cancellation()->set_stream_drift_samples(msg.drift()); |
- if (msg.has_keypress()) { |
- ap_->set_stream_key_pressed(msg.keypress()); |
- } |
- RTC_CHECK_EQ(kNoErr, |
- ap_->ProcessStream(in_buf_->channels(), input_config_, |
- output_config_, out_buf_.channels())); |
- } |
- |
- buffer_writer_.Write(out_buf_); |
-} |
- |
-void AecDumpFileProcessor::HandleMessage(const ReverseStream& msg) { |
- RTC_CHECK(!msg.has_data()); |
- RTC_CHECK_EQ(reverse_buf_->num_channels(), msg.channel_size()); |
- |
- for (int i = 0; i < msg.channel_size(); ++i) { |
- RTC_CHECK_EQ(reverse_buf_->num_frames() * sizeof(*in_buf_->channels()[i]), |
- msg.channel(i).size()); |
- std::memcpy(reverse_buf_->channels()[i], msg.channel(i).data(), |
- msg.channel(i).size()); |
- } |
- { |
- const auto st = ScopedTimer(mutable_proc_time()); |
- // TODO(ajm): This currently discards the processed output, which is needed |
- // for e.g. intelligibility enhancement. |
- RTC_CHECK_EQ(kNoErr, ap_->ProcessReverseStream( |
- reverse_buf_->channels(), reverse_config_, |
- reverse_config_, reverse_buf_->channels())); |
- } |
-} |
- |
-} // namespace webrtc |