Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
mock_hardware_audio_interface.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <cassert>
7
8#include "dsp/hardware_audio_interface.h"
9#include "dsp/iaudio_callback.h"
10
11namespace zrythm::test_helpers
12{
13
19class MockHardwareAudioInterface : public dsp::IHardwareAudioInterface
20{
21public:
22 explicit MockHardwareAudioInterface (
23 units::sample_rate_t sample_rate = units::sample_rate (48000),
24 units::sample_u32_t block_length = units::samples (256),
25 units::channel_count_t input_channels = units::channels (2),
26 units::channel_count_t output_channels = units::channels (2))
27 : device_info_{
28 .device_name = {},
29 .sample_rate = sample_rate,
30 .block_length = block_length,
31 .input_channel_count = input_channels,
32 .output_channel_count = output_channels,
33 }
34 {
35 }
36
37 [[nodiscard]] dsp::AudioDeviceInfo get_device_info () const override
38 {
39 return device_info_;
40 }
41
49 {
50 assert (!processing_active_);
51 device_info_ = std::move (info);
52 }
53
54 void add_audio_callback (dsp::IAudioCallback * callback) override
55 {
56 assert (callback_ == nullptr);
57 callback_ = callback;
58 if (callback_ != nullptr)
59 {
60 processing_active_ = true;
61 callback_->about_to_start ();
62 }
63 }
64
65 void remove_audio_callback (dsp::IAudioCallback * callback) override
66 {
67 assert (callback == callback_);
68 if (callback_ != nullptr)
69 {
70 callback_->stopped ();
71 }
72 callback_ = nullptr;
73 processing_active_ = false;
74 }
75
76private:
77 dsp::AudioDeviceInfo device_info_;
78 dsp::IAudioCallback * callback_ = nullptr;
79 bool processing_active_ = false;
80};
81
82} // namespace zrythm::test_helpers
Pure-abstract audio callback interface.
Abstraction for hardware audio interface.
void remove_audio_callback(dsp::IAudioCallback *callback) override
Removes a previously added audio callback.
void add_audio_callback(dsp::IAudioCallback *callback) override
Adds an audio callback to receive audio I/O events.
dsp::AudioDeviceInfo get_device_info() const override
Returns the current audio device information.
void set_device_info(dsp::AudioDeviceInfo info)
Updates the device info.
Information about an audio device.