
#ifndef _StreamBuffer_H_
#define _StreamBuffer_H_

#include "SoundBuffer.h"

/////////////////////////////////////////////////////////////////////////////////////////
//

class CStreamBuffer : public CSoundBuffer
{
protected:
    DWORD	m_dwLastPlayPos;
    DWORD	m_dwPlayProgress;
    DWORD	m_dwNotifySize;
    DWORD	m_dwNextWriteOffset;
	HANDLE	m_hNotificationEvent;
    bool	m_bFillNextNotificationWithSilence;
	bool	m_bLoopPlay;

private:
	CStreamBuffer( const CStreamBuffer & );												//사용하지 못하도록 막아놨음.
	CStreamBuffer & operator=( const CStreamBuffer & );

public:
	CStreamBuffer();
	CStreamBuffer( IDirectSound8 *, ISoundFile *, bool b3DSound, DWORD dwNumBuffers = 10 );
	CStreamBuffer( IDirectSound8 *, const char *, bool b3DSound, DWORD dwNumBuffers = 10 );
	~CStreamBuffer();

	void	Create( IDirectSound8 *, ISoundFile *, bool b3DSound, DWORD dwNumBuffers = 10, DWORD dwAddFlag = 0 );
	void	Create( IDirectSound8 *, const char *, bool b3DSound, DWORD dwNumBuffers = 10, DWORD dwAddFlag = 0 );
	void	Destroy();
	int		Play( bool bLoop );
	void	Play( DWORD dwIndex, bool bLoop );
	void	Reset( unsigned );
	void	ResetAll();
	HANDLE	GetEventNotify() { return m_hNotificationEvent; }
	void	HandleNotification();

	eSndObjType	GetType()			{ return SNDOBJTYPE_STREAMBUFFER; }
};

/////////////////////////////////////////////////////////////////////////////////////////

#endif