#ifndef _MGR_MODULE_HH__ #define _MGR_MODULE_HH__ #include #include "typedefs.h" #include "errcode.h" #include "frame.hpp" #define __runtime_check_begin() \ ufloat clock_start,clock_stop; \ clock_start = clock() #define __runtime_check_end(secs) \ clock_stop = clock();\ secs = ((ufloat) (clock_stop - clock_start))/ CLOCKS_PER_SEC class IModule { private: u32 mID; u16 mTag; u16 mType ; protected: u16 mInputPortNum; //Ä£¿éÊäÈë¶Ë¿ÚÊýÁ¿ u16 mOutputPortNum; //ģʽÊä³ö¶Ë¿ÚÊýÁ¿ //Ä£¿éÊäÈë¶Ë¿Ú¶ÔÓ¦µÄÒôƵbufferÖ¸Õ룬²»¿ÉÐÞ¸ÄÄÚÈÝ //Èç¹ûÖ¸ÕëΪ¿Õ£¬ËµÃ÷¸Ã¶Ë¿ÚûÓÐÊäÈë const Frame** mDataIn; //Ä£¿éÊä³ö¶Ë¿Ú¶ÔÓ¦µÄÒôƵbufferÖ¸Õë ,¿ÉÒÔÐÞ¸ÄÄÚÈÝ //Èç¹ûÖ¸ÕëΪ¿Õ£¬ËµÃ÷¸Ã¶Ë¿ÚûÓÐÊä³ö Frame** mDataOut; u32 mSampleRate; u32 mSampleNum; ufloat mSecs; public: inline uvoid SetModuleInfo(u32 ID, u16 type , u16 tag) { mID = ID;mTag = tag;mType = type; } inline u32 GetModuleID() {return mID;} inline u32 GetModuleType() {return mType;} inline u32 GetModuleTag() {return mTag;} inline u16 GetModuleInputNum() {return mInputPortNum ;} inline u16 GetModuleOutputNum() {return mOutputPortNum ;} inline ErrStatus SetOutputChannelDataPtr(u16 index, Frame* data) { if (index >= mOutputPortNum) { return ERR_PARAM; } mDataOut[index] = data; return ErrStatus::SUCCESS; } inline ErrStatus SetInputChannelDataPtr(u16 index, const Frame* data) { if (index >= mInputPortNum) { return ERR_PARAM; } mDataIn[index] = data; return ErrStatus::SUCCESS; } IModule(u32 sampleRate, u32 framNum, u16 inputNum, u16 outputNum) { mInputPortNum = inputNum; mOutputPortNum = outputNum; mSampleRate = sampleRate; mSampleNum = framNum; mDataIn = (const Frame**)unull; mDataOut = (Frame**)unull; mSecs =0; mID =0; mTag = 0 ; mType =0 ; if (inputNum > 0) { mDataIn = new const Frame * [inputNum]; for(u32 i=0;i 0) { mDataOut = new Frame * [outputNum] ; for(u32 i=0;i /// Ä£¿é´¦Àíº¯Êý /// /// virtual ErrStatus Proc() =0; /// /// »ñȡģ¿éµçƽ /// /// Ä£¿éµçƽָÕë /// Ä£¿éµçƽÊýÁ¿ virtual u32 GetLevel(s16* level) = 0; /// /// »ñȡģ¿éÖ´ÐÐʱ¼ä /// /// Ä£¿éÖ´ÐÐʱ¼ä, Ã뵥λ virtual ufloat GetRuntime() { return mSecs ;} }; #endif