#pragma once

#include <vector>
#include <memory>

class AudioSample
{
public:

    AudioSample();

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

    std::vector<short> GetChannelData(std::size_t channel) const;
    void SetChannelData(const std::vector<short>& data, std::size_t channel);

    std::size_t GetNumChannels() const;
    unsigned GetSampleRate() const;
    unsigned GetBitDepth() const;

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

using AudioSamplePtr = std::unique_ptr<AudioSample>;
