#pragma once

#include <vector>
#include <memory>

class AudioSample
{
public:
    using ChannelData = std::vector<short>;

    AudioSample();

    static std::unique_ptr<AudioSample> Create();

    ChannelData getChannelData(std::size_t channel) const;
    std::size_t getNumChannels() const;
    unsigned getSampleRate() const;
    unsigned getBitDepth() const;

    void setChannelData(const ChannelData& data, std::size_t channel);

private:
    unsigned mSampleRate { 44100 };
    unsigned mBitDepth{ 16 };
    std::vector<ChannelData> mData;
};

using AudioSamplePtr = std::unique_ptr<AudioSample>;
