diff --git a/source/modules/FrameDifference.cpp b/source/modules/FrameDifference.cpp index e712efa..16b2add 100644 --- a/source/modules/FrameDifference.cpp +++ b/source/modules/FrameDifference.cpp @@ -35,7 +35,7 @@ static PlaYUVerModuleDefinition FrameDifferenceDef = FRAME_LEVEL_MODULE, "Measurements", "FrameDifference", - "Measure the difference between two images", + "Measure the difference between two images (Y plane)", true, }; FrameDifference::FrameDifference() @@ -46,12 +46,20 @@ FrameDifference::FrameDifference() Void FrameDifference::create( PlaYUVerFrame* Input ) { - m_pcFrameDifference = NULL; m_pcFrameDifference = new PlaYUVerFrame( Input->getWidth(), Input->getHeight(), PlaYUVerFrame::GRAY ); } -PlaYUVerFrame* FrameDifference::process( PlaYUVerFrame* Input1 ) +PlaYUVerFrame* FrameDifference::process( PlaYUVerFrame* Input1, PlaYUVerFrame* Input2 ) { + Pel* pInput1PelYUV = Input1->getPelBufferYUV()[0][0]; + Pel* pInput2PelYUV = Input1->getPelBufferYUV()[0][0]; + Pel* pOutputPelYUV = m_pcFrameDifference->getPelBufferYUV()[0][0]; + + for( UInt y = 0; y < m_pcFrameDifference->getHeight(); y++ ) + for( UInt x = 0; x < m_pcFrameDifference->getWidth(); x++ ) + { + *pOutputPelYUV++ = *pInput1PelYUV++ - *pInput2PelYUV++; + } return m_pcFrameDifference; } diff --git a/source/modules/FrameDifference.h b/source/modules/FrameDifference.h index 3ac2485..ae17e3d 100644 --- a/source/modules/FrameDifference.h +++ b/source/modules/FrameDifference.h @@ -49,7 +49,7 @@ public: { } Void create( PlaYUVerFrame* Input ); - PlaYUVerFrame* process( PlaYUVerFrame* Input1 ); + PlaYUVerFrame* process( PlaYUVerFrame* Input1, PlaYUVerFrame* Input2=NULL ); Void destroy(); };