#pragma once

#include "IAudioInterface.h"
#include "AudioDevice.h"

#include <memory>

class WasapiInterface : public IAudioInterface
{

public:

    WasapiInterface();

    ~WasapiInterface();

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

    void OpenDevice(const AudioDevicePtr& device) override;

    void SetAccessType(const AudioDevicePtr& device);

    void SetSampleFormat(const AudioDevicePtr& device);

    void SetSampleRate(const AudioDevicePtr& device);

    void SetPeriod(const AudioDevicePtr& device);

    void SetBufferSize(const AudioDevicePtr& device);

    void SetChannelNumber(const AudioDevicePtr& device);

    void Play(const AudioDevicePtr& device) override;
};

using AlsaInterfacePtr = std::shared_ptr<WasapiInterface>;
