OXYGENHUB
◆ main openmsx / src / cassette / CasImage.hh
928 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#ifndef CASIMAGE_HH
2
#define CASIMAGE_HH
3
4
#include "CassetteImage.hh"
5
#include <cstdint>
6
#include <vector>
7
8
namespace openmsx {
9
10
class CliComm;
11
class Filename;
12
class FilePool;
13
14
/**
15
 * Code based on "cas2wav" tool by Vincent van Dam
16
 */
17
class CasImage final : public CassetteImage
18
{
19
public:
20
	CasImage(const Filename& fileName, FilePool& filePool, CliComm& cliComm);
21
22
	// CassetteImage
23
	[[nodiscard]] int16_t getSampleAt(EmuTime time) const override;
24
	[[nodiscard]] EmuTime getEndTime() const override;
25
	[[nodiscard]] unsigned getFrequency() const override;
26
	void fillBuffer(unsigned pos, std::span<float*, 1> bufs, unsigned num) const override;
27
	[[nodiscard]] float getAmplificationFactorImpl() const override;
28
29
	struct Data {
30
		std::vector<int8_t> wave;
31
		unsigned frequency;
32
	};
33
34
private:
35
	Data init(const Filename& filename, FilePool& filePool, CliComm& cliComm);
36
37
private:
38
	const Data data;
39
};
40
41
} // namespace openmsx
42
43
#endif