| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMEOS_ASH_SERVICES_RECORDING_AUDIO_CAPTURE_TEST_BASE_H_ |
| #define CHROMEOS_ASH_SERVICES_RECORDING_AUDIO_CAPTURE_TEST_BASE_H_ |
| |
| #include "base/time/time.h" |
| #include "media/audio/simple_sources.h" |
| #include "media/base/audio_parameters.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace recording { |
| |
| // Defines a base class test fixture for testing audio streams and their mixing. |
| class AudioCaptureTestBase : public testing::Test { |
| public: |
| AudioCaptureTestBase(); |
| AudioCaptureTestBase(const AudioCaptureTestBase&) = delete; |
| AudioCaptureTestBase& operator=(const AudioCaptureTestBase&) = delete; |
| ~AudioCaptureTestBase() override = default; |
| |
| // Returns a `TimeTicks` that is offset from origin by `delay`. |
| static base::TimeTicks GetTimestamp(base::TimeDelta delay); |
| |
| // Returns true if both `bus1` and `bus2` has the same number of channels, |
| // frames, and the values of all the frames are equal. |
| static bool AreBusesEqual(const media::AudioBus& bus1, |
| const media::AudioBus& bus2); |
| |
| // Creates and returns an audio bus that matches the `audio_parameters_` after |
| // it uses the `SineWaveAudioSource` to fill it with data. |
| std::unique_ptr<media::AudioBus> ProduceAudio(base::TimeTicks timestamp); |
| |
| protected: |
| media::AudioParameters audio_parameters_; |
| media::SineWaveAudioSource audio_source_; |
| }; |
| |
| } // namespace recording |
| |
| #endif // CHROMEOS_ASH_SERVICES_RECORDING_AUDIO_CAPTURE_TEST_BASE_H_ |