/* * 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 "modules/audio_processing/test/conversational_speech/mock_wavreader_factory.h" #include "absl/strings/string_view.h" #include "modules/audio_processing/test/conversational_speech/mock_wavreader.h" #include "rtc_base/logging.h" #include "test/gmock.h" namespace webrtc { namespace test { namespace conversational_speech { using ::testing::_; using ::testing::Invoke; MockWavReaderFactory::MockWavReaderFactory( const Params& default_params, const std::map& params) : default_params_(default_params), audiotrack_names_params_(params) { ON_CALL(*this, Create(_)) .WillByDefault(Invoke(this, &MockWavReaderFactory::CreateMock)); } MockWavReaderFactory::MockWavReaderFactory(const Params& default_params) : MockWavReaderFactory(default_params, std::map{}) {} MockWavReaderFactory::~MockWavReaderFactory() = default; std::unique_ptr MockWavReaderFactory::CreateMock( absl::string_view filepath) { // Search the parameters corresponding to filepath. size_t delimiter = filepath.find_last_of("/\\"); // Either windows or posix std::string filename(filepath.substr( delimiter == absl::string_view::npos ? 0 : delimiter + 1)); const auto it = audiotrack_names_params_.find(filename); // If not found, use default parameters. if (it == audiotrack_names_params_.end()) { RTC_LOG(LS_VERBOSE) << "using default parameters for " << filepath; return std::unique_ptr(new MockWavReader( default_params_.sample_rate, default_params_.num_channels, default_params_.num_samples)); } // Found, use the audiotrack-specific parameters. RTC_LOG(LS_VERBOSE) << "using ad-hoc parameters for " << filepath; RTC_LOG(LS_VERBOSE) << "sample_rate " << it->second.sample_rate; RTC_LOG(LS_VERBOSE) << "num_channels " << it->second.num_channels; RTC_LOG(LS_VERBOSE) << "num_samples " << it->second.num_samples; return std::unique_ptr(new MockWavReader( it->second.sample_rate, it->second.num_channels, it->second.num_samples)); } } // namespace conversational_speech } // namespace test } // namespace webrtc