diff --git a/modules/AbsoluteFrameDifference.cpp b/modules/AbsoluteFrameDifference.cpp index 46130b0..5dac1ac 100644 --- a/modules/AbsoluteFrameDifference.cpp +++ b/modules/AbsoluteFrameDifference.cpp @@ -43,6 +43,7 @@ AbsoluteFrameDifference::AbsoluteFrameDifference() Bool AbsoluteFrameDifference::create( std::vector apcFrameList ) { + _BASIC_MODULE_API_2_CHECK_ m_pcFrameDifference = new PlaYUVerFrame( apcFrameList[0]->getWidth(), apcFrameList[0]->getHeight(), PlaYUVerFrame::GRAY ); return true; } diff --git a/modules/DisparityStereoVar.cpp b/modules/DisparityStereoVar.cpp index 424cdf9..907787e 100644 --- a/modules/DisparityStereoVar.cpp +++ b/modules/DisparityStereoVar.cpp @@ -57,6 +57,7 @@ DisparityStereoVar::DisparityStereoVar() Bool DisparityStereoVar::create( std::vector apcFrameList ) { + _BASIC_MODULE_API_2_CHECK_ m_pcDisparityFrame = new PlaYUVerFrame( apcFrameList[0]->getWidth(), apcFrameList[0]->getHeight(), PlaYUVerFrame::GRAY ); m_cStereoVar.minDisp = -( ( ( apcFrameList[0]->getWidth() / 8 ) + 15 ) & -16 ); return true; diff --git a/modules/FrameDifference.cpp b/modules/FrameDifference.cpp index f11ebe3..b524811 100644 --- a/modules/FrameDifference.cpp +++ b/modules/FrameDifference.cpp @@ -44,6 +44,7 @@ FrameDifference::FrameDifference() Bool FrameDifference::create( std::vector apcFrameList ) { + _BASIC_MODULE_API_2_CHECK_ UInt bitsPixel = ( apcFrameList[0]->getBitsPel() + 1 ) & 0x0F; m_iMaxDiffValue = ( 1 << ( bitsPixel - 1 ) ); m_pcFrameDifference = new PlaYUVerFrame( apcFrameList[0]->getWidth(), apcFrameList[0]->getHeight(), PlaYUVerFrame::GRAY, bitsPixel ); diff --git a/modules/PlaYUVerModuleIf.h b/modules/PlaYUVerModuleIf.h index 81b4dcd..f6e85a6 100644 --- a/modules/PlaYUVerModuleIf.h +++ b/modules/PlaYUVerModuleIf.h @@ -39,6 +39,13 @@ public: \ static PlaYUVerModuleIf* Create() { return new X(); } \ void Delete() { delete this; } +#define _BASIC_MODULE_API_2_CHECK_ \ +if( apcFrameList.size() != m_uiNumberOfFrames ) \ + return false; \ +for( UInt i = 0; i < apcFrameList.size(); i++ ) \ + if( !apcFrameList[i] ) \ + return false; + enum // Module API { MODULE_API_1, @@ -57,8 +64,11 @@ enum // Module type enum Module_NumberOfFrames { MODULE_REQUIRES_ONE_FRAME = 1, - MODULE_REQUIRES_TWO_FRAMES = 2, - MODULE_REQUIRES_THREE_FRAMES = 3, + MODULE_REQUIRES_TWO_FRAMES, + MODULE_REQUIRES_THREE_FRAMES, + MODULE_REQUIRES_FOUR_FRAMES, + MODULE_REQUIRES_FIVE_FRAMES, + MODULE_REQUIRES_SIX_FRAMES, }; enum Module_Requirements @@ -86,6 +96,7 @@ public: PlaYUVerModuleIf() { m_iModuleAPI = MODULE_API_1; + m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; } virtual ~PlaYUVerModuleIf() {