// #define	SUPPORT_MP3
// #define	SUPPORT_OGG
#ifdef __cplusplus
extern "C" {
#endif
struct _getsnd;
typedef	struct _getsnd		_GETSND;
typedef	struct _getsnd		*GETSND;
typedef UINT (*GSDEC)(GETSND self, void *buf);
typedef void (*GSDECEND)(GETSND self);
typedef void *(*GSCNV)(GETSND self, void *buf, void *bufterm);
BOOL getwave_open(GETSND snd, UINT8 *ptr, UINT size);
BOOL getmp3_open(GETSND snd, UINT8 *ptr, UINT size);
BOOL getogg_open(GETSND snd, UINT8 *ptr, UINT size);
BOOL getsnd_setmixproc(GETSND snd, UINT samprate, UINT channles);
struct _getsnd {
	UINT8		*work;					// data load用バッファ
	UINT8		*buffer;				// デコード済みバッファ
	void		*buf;
	UINT		remain;
	long		mrate;
	long		rem;
	long		pcml;
	long		pcmr;
	UINT8		*datptr;
	UINT		datsize;
	void		*snd;					// optional
	GSDEC		dec;
	GSDECEND	decend;					// optional
	GSCNV		cnv;
	UINT		samplingrate;
	UINT		channels;
	UINT		bit;
	UINT		blocksamples;			// ブロックサンプル数
	UINT		blocksize;				// 1ブロックのワークサイズ
};
GETSND getsnd_create(void *datptr, UINT datsize);
void getsnd_destroy(GETSND hdl);
UINT getsnd_getpcmbyleng(GETSND hdl, void *pcm, UINT leng);
#ifdef __cplusplus
}
#endif
RetroPC.NET-CVS <cvs@retropc.net>