#ifndef __MODULEPROAPI_H__
#define __MODULEPROAPI_H__
#ifdef WIN32
#define __MODULE_EXPORT //extern "C" _declspec(dllexport)
#else
#define __MODULE_EXPORT extern "C"
#endif
#include "IModule.h"
///
/// export module create function .
///
/// any.
///
///
///
///
///
typedef IModule* (*Create)(u32 tag, ubool linkEnable ,u32 sampleRate, u32 framNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT uvoid ModuleProcessLibInit(uvoid);
__MODULE_EXPORT uvoid ModulesAsynProcess(uvoid);
__MODULE_EXPORT s32 Proc(IModule* m);
__MODULE_EXPORT IModule* SQECreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* AFCCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* AGCCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ANSCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* GatingAMCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* GSAMCreate(u32 n,ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* PriorityAMCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* CompressorCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* LimiterCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DelayCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DEQCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DeReverbCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DuckerCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* EchoCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ReverbCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* EQsCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ExpanderCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* NoiseGateCreate(u32 n,ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* CrossOverCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* MixerCreate(u32 n,ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* NHSCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* SignalGeneraterCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ContinuousSPLCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DummyCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* InputCreate(u32 n,ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* GainCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* OutputCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* MeterCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* GEQCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* RouteCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* FIRCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* HighPassCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* LowPassCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* HighShelfCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* LowShelfCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* AllPassCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* PitchCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* SysctlCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
#endif //__MODULEPROAPI_H__