#pragma once

#include "stdafx.h"

struct AudioStatistics
{
	double AverageLatency = 0;
	uint32_t BufferUnderrunEventCount = 0;
	uint32_t BufferSize = 0;
};

class IAudioDevice
{
	public:
		virtual ~IAudioDevice() {}
		virtual void PlayBuffer(int16_t *soundBuffer, uint32_t bufferSize, uint32_t sampleRate, bool isStereo) = 0;
		virtual void Stop() = 0;
		virtual void Pause() = 0;
		virtual void ProcessEndOfFrame() = 0;
		virtual void UpdateSoundSettings() = 0;

		virtual string GetAvailableDevices() = 0;
		virtual void SetAudioDevice(string deviceName) = 0;
		
		virtual AudioStatistics GetStatistics() = 0;
};