/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__AUDIOSTREAMINTERFACE__
#define	__AUDIOSTREAMINTERFACE__


		#include "audio/sample_format.h"


namespace GS {

/*
	@short	Audio stream interface.
	@author	Emmanuel Julien (ejulien@nworks.fr)
*/
struct	IAudioStream
{
		SampleFormat	format;

		/// Return the stream data format (eg. "OGG").
virtual	const char		*GetFormat() = 0;

virtual	bool			Seek(int t_ms = 0) = 0;
virtual	bool			IsEOF() const = 0;

virtual	size_t			GetPCM(void *) = 0;
virtual	size_t			GetPCMBufferSize() const = 0;

virtual	bool			Open(const char *uri) = 0;
virtual	void			Close() = 0;

virtual	~IAudioStream() {}
};

} // GS


#endif	// __AUDIOSTREAMINTERFACE__
