Initial definition of a module to measure PSNR and to display results on a dock

This commit is contained in:
jfmcarreira committed 2014-06-27 02:20:34 +01:00
1 parent 3a09163a38
commit 4fc7218c79
6 files changed
+54 -30

No files matched your search

+20 -11
View File
@@ -19,7 +19,7 @@
/**
* \file MeasurePSNR.cpp
* \brief Measure PSNR module
* \brief Frame Difference module
*/
#include <cstdio>
@@ -37,32 +37,41 @@ static PlaYUVerModuleDefinition MeasurePSNRDef =
"PSNR",
"Measure the PSNR between two images",
MODULE_REQUIRES_TWO_FRAMES,
MODULE_REQUIRES_NEW_WINDOW,
MODULE_REQUIRES_SIDEBAR,
APPLY_WHILE_PLAYING,
};
MeasurePSNR::MeasurePSNR()
{
m_pcFilteredFrame = NULL;
setModuleDefinition( MeasurePSNRDef );
}
Void MeasurePSNR::create( PlaYUVerFrame* InputFrame )
Void MeasurePSNR::create( PlaYUVerFrame* Org )
{
m_pcFilteredFrame = NULL;
m_pcFilteredFrame = new PlaYUVerFrame( InputFrame->getWidth(), InputFrame->getHeight(), PlaYUVerFrame::GRAY );
}
PlaYUVerFrame* MeasurePSNR::process( PlaYUVerFrame* InputFrame )
Double MeasurePSNR::measure( PlaYUVerFrame* Org, PlaYUVerFrame* Rec )
{
return m_pcFilteredFrame;
Pel* pInput1PelYUV = Org->getPelBufferYUV()[0][0];
Pel* pInput2PelYUV = Rec->getPelBufferYUV()[0][0];
Int aux_pel_1, aux_pel_2;
Double diff = 0;
for( UInt y = 0; y < Org->getHeight(); y++ )
for( UInt x = 0; x < Org->getWidth(); x++ )
{
aux_pel_1 = *pInput1PelYUV++;
aux_pel_2 = *pInput2PelYUV++;
diff += abs( aux_pel_1 - aux_pel_2 );
}
return diff;
}
Void MeasurePSNR::destroy()
{
if( m_pcFilteredFrame )
delete m_pcFilteredFrame;
m_pcFilteredFrame = NULL;
}
} // NAMESPACE
+4 -7
View File
@@ -19,17 +19,16 @@
/**
* \file MeasurePSNR.h
* \brief Measure PSNR module
* \brief Frame Difference module
*/
#ifndef __MEASUREPSNR_H__
#define __MEASUREPSNR_H__
#include "config.h"
#include "PlaYUVerDefs.h"
#include <iostream>
#include <cstdio>
#include "TypeDef.h"
#include "PlaYUVerFrame.h"
#include "PlaYUVerModuleIf.h"
@@ -47,10 +46,8 @@ public:
virtual ~MeasurePSNR()
{
}
Void create( PlaYUVerFrame* InputFrame );
PlaYUVerFrame* process( PlaYUVerFrame* InputFrame );
Void create( PlaYUVerFrame* );
Double measure( PlaYUVerFrame*, PlaYUVerFrame* );
Void destroy();
};