#ifndef CSoundDecoderWave_h
#define CSoundDecoderWave_h 


/*!
 *	\file
 *	\brief	WAVEファイルをＰＣＭに変換するインターフェース
 *
 *	\author 田芝連治（永井友之）
 */

#include"CSoundDecoder.h"
#include"../../Auxiliary/FileIO/CFileRead.h"


namespace Maid
{

	class CSoundDecoderWave : public ISoundDecoder
	{
	public:
		CSoundDecoderWave();
		virtual ~CSoundDecoderWave();
		virtual MRESULT	Open( const MySTL::wstring& FileName );
		virtual uint32	Read( void* pDst, uint32 dwSize );
		virtual void	SetPosition( sint32 Offset, POSITION ePos );
		virtual void	Close();
		virtual uint32	GetPosition()		const;
		virtual uint32	GetLength()			const;
		virtual uint32	GetSamplesPerSec()	const;
		virtual uint32	GetChannels()		const;
		virtual uint32	GetBitsPerBlock()	const;

		virtual MRESULT  Test( const MySTL::wstring& FileName )const;
		virtual ISoundDecoder* Clone() const { return new CSoundDecoderWave; }	//!<	クローンの作成

	private:
		CFileRead	m_hFile;

		WAVEFORMATEX	m_WaveFormat;		//!<	読み込んだファイルフォーマット
		uint32			m_SampleLength;		//!<	PCMデータの長さ（サンプル単位）
		uint32			m_BeginOffset;		//!<	PCMデータの先頭オフセット

	};
}

#endif