#ifndef TWOSF2WAV_SAMPLEDATA_H
#define TWOSF2WAV_SAMPLEDATA_H
#include <vector>
#include <cstdint>
class IInterpolator;
class SampleData : public std::vector<int32_t>
{
public:
enum Format {
Pcm8,
Pcm16,
Adpcm
};
SampleData();
SampleData(uint32_t baseAddr, uint16_t loopStart, uint32_t loopLength, Format format);
SampleData(const SampleData&) = default;
SampleData(SampleData&&) = default;
~SampleData() = default;
SampleData& operator=(const SampleData&) = default;
SampleData& operator=(SampleData&&) = default;
int32_t sampleAt(double time, IInterpolator* interp = nullptr) const;
uint32_t baseAddr;
uint16_t loopStart;
uint32_t loopLength;
private:
void loadPcm8();
void loadPcm16();
void loadAdpcm();
};
#endif