
/*
  File: include/sq2_audiosys/sq2_audiosys.h
  Description: Main audio system include file for Sonique 2
  Part of the Mantis project
  (c) 2002 Lycos Inc.

  This file is distributed for the sole purpose of allowing you to write
  software to interface with Sonique 2 and other Mantis programs. It is
  not to be modified or used for any other purpose without written
  authorization.

  If you redistribute this file, it must be in the original package
  complete with all other files provided, including the usage agreement.

  Do not remove this notice.
*/

#ifndef _SQ2_AUDIOSYS_H_
#define _SQ2_AUDIOSYS_H_

#include "Interface_MediaSystem.h"
#include "Interface_Splicer.h"
#include "mia.h"

// {56C9F896-6289-4c9a-A2B9-1C692B9BB879}
DEFINE_MID(FID_SQ2_AUDIOSYS, 0x56c9f896, 0x6289, 0x4c9a, 0xa2, 0xb9, 0x1c, 0x69, 0x2b, 0x9b, 0xb8, 0x79);

// {97B66169-2421-4189-B853-75F9E283CDA1}
DEFINE_MID(MID_SQ2_AUDIOSYS, 0x97b66169, 0x2421, 0x4189, 0xb8, 0x53, 0x75, 0xf9, 0xe2, 0x83, 0xcd, 0xa1);

// {84F1B2A1-2AC3-43a0-8384-70B780CEADC8}
DEFINE_MID(MID_MEDIAENDPOINT_DUMMY, 0x84f1b2a1, 0x2ac3, 0x43a0, 0x83, 0x84, 0x70, 0xb7, 0x80, 0xce, 0xad, 0xc8);



class MSQ2AudioSys : public MGeneric
{
public:
	virtual MMediaChain*	__stdcall GetNewChain(bool bIncludeDSPs)    							= 0;
	virtual MRESULT			__stdcall EnumerateFilters(MMediaFilter** ppToHere, MID* pFactory)		= 0;
	virtual MRESULT			__stdcall EnumerateEndpoints(MMediaFilter** ppToHere, MID* pFactory)	= 0;
	virtual MRESULT			__stdcall EnumerateStreams(MMediaStream** ppToHere, MID* pFactory)		= 0;
	virtual MRESULT			__stdcall EnumerateDSPs(MMediaFilter** ppToHere, MID* pFactory)			= 0;
	virtual MRESULT			__stdcall EnumerateMiscAudio(MMediaFilter** ppToHere, MID* pFactory)    = 0;

	virtual MRESULT			__stdcall SelectDefaultEndpoint( MID Factory )							= 0;
	virtual MRESULT			__stdcall QueryDefaultEndpoint( MID& Factory )							= 0;
	virtual MRESULT			__stdcall GetDefaultEndpoint( MMediaFilter** ppToHere )					= 0;
};

typedef HeapMidPtr<MSQ2AudioSys, &FID_SQ2_AUDIOSYS, &MID_SQ2_AUDIOSYS, true >	SQ2AudioSysPtr;
typedef HeapMidPtr<MMediaSplicer, &FID_SQ2_AUDIOSYS, &MID_MEDIASPLICER>			MediaSplicerPtr;
typedef HeapMidPtr<MPacketPool, &FID_SQ2_AUDIOSYS, &MID_PACKETPOOL, true>		PacketPoolPtr;
typedef HeapMidPtr<MMediaFilter, &FID_SQ2_AUDIOSYS, &MID_MEDIAENDPOINT_DUMMY, true>	DummyEndpointPtr;

#endif//_SQ2_AUDIOSYS_H_
