OXYGENHUB
◆ main openmsx / src / sound / WavAudioInput.hh
1010 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#ifndef WAVAUDIOINPUT_HH
2
#define WAVAUDIOINPUT_HH
3
4
#include "AudioInputDevice.hh"
5
#include "EmuTime.hh"
6
#include "FilenameSetting.hh"
7
#include "Observer.hh"
8
#include "WavData.hh"
9
10
namespace openmsx {
11
12
class CommandController;
13
14
class WavAudioInput final : public AudioInputDevice, private Observer<Setting>
15
{
16
public:
17
	explicit WavAudioInput(CommandController& commandController);
18
	~WavAudioInput() override;
19
20
	// AudioInputDevice
21
	[[nodiscard]] zstring_view getName() const override;
22
	[[nodiscard]] zstring_view getDescription() const override;
23
	void plugHelper(Connector& connector, EmuTime time) override;
24
	void unplugHelper(EmuTime time) override;
25
	[[nodiscard]] int16_t readSample(EmuTime time) override;
26
27
	template<typename Archive>
28
	void serialize(Archive& ar, unsigned version);
29
30
private:
31
	void loadWave();
32
	void update(const Setting& setting) noexcept override;
33
34
private:
35
	FilenameSetting audioInputFilenameSetting;
36
	WavData wav;
37
	EmuTime reference = EmuTime::zero();
38
};
39
40
} // namespace openmsx
41
42
#endif