// Speaker.h: interface for the CSpeaker class.
//


#pragma once

#include "BKSoundDevice.h"

class CSpeaker : public CBKSoundDevice
{
		static const std::array<SAMPLE_INT, 8> m_dSpeakerValues;

	protected:
		enum            {DEFAULT_SIZE = 2 * 1024 * 1014};
		SAMPLE_INT      m_nAverage{ 0.0 };
		std::unique_ptr<SAMPLE_INT[]> m_pReceiveTapeSamples; // массив данных получаемых с ленты, из которых узнается, что там прочлось
		size_t          m_tickCount{ 0 };
		int             m_ips{ 0 };

	public:

		CSpeaker();
		virtual ~CSpeaker() override;
		virtual void    ReInit() override;
		virtual void    Reset() override;

		void            ConfigureTapeBuffer(const int ips);

		void            ReceiveTapeBuffer(void *pBuff, const int nSampleLen);
		bool            GetTapeSample();

		virtual void    SetData(const uint16_t inVal) override;
		virtual void    GetSample(sOneSample *pSm) override;
};
