#pragma once #include #include #include #include #include namespace mous { class IRenderer { public: virtual ~IRenderer() { } virtual ErrorCode Open() = 0; virtual void Close() = 0; virtual ErrorCode Setup(int32_t& channels, int32_t& sampleRate, int32_t& bitsPerSample) = 0; virtual ErrorCode Write(const char* dat, uint32_t len) = 0; // 0(muted) to 100(max) virtual int VolumeLevel() const = 0; virtual void SetVolumeLevel(int level) = 0; // reimplement this to provide options virtual std::vector Options() const { return {}; }; }; }