Change modules' cmake files and add new module. Now multiple modules per file are supported
This commit is contained in:
+2
-2
@@ -16,7 +16,7 @@ ENDIF(UNIX)
|
||||
SET( PROJECT_NAME "playuver" )
|
||||
|
||||
PROJECT( ${PROJECT_NAME} )
|
||||
INCLUDE( PlaYUVerVersion.cmake )
|
||||
INCLUDE( cmake/PlaYUVerVersion.cmake )
|
||||
|
||||
INCLUDE( cmake/CMakeMacros.cmake )
|
||||
|
||||
@@ -83,7 +83,7 @@ INCLUDE( cmake/LibPixfc.cmake )
|
||||
######################################################################################
|
||||
SET( MODULES_DIR ${SRC_DIR}/modules )
|
||||
INCLUDE_DIRECTORIES( ${MODULES_DIR} )
|
||||
FILE( GLOB ModuleCMakeFiles cmake/Module*.cmake )
|
||||
FILE( GLOB ModuleCMakeFiles ModuleDefinition.cmake )
|
||||
|
||||
file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "// This files defines the macro to \n"
|
||||
"// define a list of modules\n"
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
######################################################################################
|
||||
# Default Modules
|
||||
######################################################################################
|
||||
|
||||
ADD_MODULE( FilterComponentLuma "FilterComponentLuma" )
|
||||
ADD_MODULE( FilterComponentChromaU "FilterComponentLuma" )
|
||||
ADD_MODULE( FrameDifference "FrameDifference" )
|
||||
ADD_MODULE( MeasurePSNR "MeasurePSNR" )
|
||||
|
||||
IF( USE_OPENCV )
|
||||
ADD_MODULE( DisparityStereoVar "DisparityStereoVar" )
|
||||
ENDIF()
|
||||
|
||||
@@ -105,7 +105,7 @@ macro(ADD_MODULE name file )
|
||||
set(MODULES_LIBS ${MODULES_LIBS} ${__modulename})
|
||||
add_definitions( -DUSE_${name} )
|
||||
LIST(APPEND MODULES_LIST ${name} )
|
||||
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${name}.h\"\n")
|
||||
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${file}.h\"\n")
|
||||
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "\\\n REGISTER_MODULE( ${name} ); ")
|
||||
endif()
|
||||
unset(__modulename)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
######################################################################################
|
||||
# Default Modules
|
||||
######################################################################################
|
||||
|
||||
ADD_MODULE( FilterFrame "FilterFrame.cpp" )
|
||||
ADD_MODULE( FrameDifference "FrameDifference.cpp" )
|
||||
ADD_MODULE( MeasurePSNR "MeasurePSNR.cpp" )
|
||||
|
||||
IF( USE_OPENCV )
|
||||
ADD_MODULE( DisparityStereoVar "DisparityStereoVar.cpp" )
|
||||
ENDIF()
|
||||
|
||||
@@ -102,8 +102,6 @@ private:
|
||||
QDockWidget* m_pcDockWidget;
|
||||
ModuleHandleDock* m_pcModuleDock;
|
||||
|
||||
PlaYUVerModuleDefinition m_cModuleDef;
|
||||
|
||||
PlaYUVerStream* m_pcModuleStream;
|
||||
PlaYUVerFrame* m_pcProcessedFrame;
|
||||
Double m_dMeasurementResult;
|
||||
@@ -144,7 +142,8 @@ public:
|
||||
PlaYUVerModuleDefinition getModuleDefinition() { return m_cModuleDef; }
|
||||
|
||||
protected:
|
||||
virtual void run();
|
||||
PlaYUVerModuleDefinition m_cModuleDef;
|
||||
virtual void run();
|
||||
};
|
||||
|
||||
} // NAMESPACE
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
/* This file is a part of plaYUVer project
|
||||
* Copyright (C) 2014 by Luis Lucas (luisfrlucas@gmail.com)
|
||||
* Joao Carreira (jfmcarreira@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file FilterComponentLuma.cpp
|
||||
* \brief Filter frame module
|
||||
*/
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "FilterComponentLuma.h"
|
||||
#include "PlaYUVerFrame.h"
|
||||
|
||||
namespace plaYUVer
|
||||
{
|
||||
|
||||
FilterComponent::FilterComponent()
|
||||
{
|
||||
m_pcFilteredFrame = NULL;
|
||||
}
|
||||
|
||||
Void FilterComponent::createFilter( UInt uiWidth, UInt uiHeight )
|
||||
{
|
||||
m_pcFilteredFrame = NULL;
|
||||
m_pcFilteredFrame = new PlaYUVerFrame( uiWidth, uiHeight, PlaYUVerFrame::GRAY );
|
||||
}
|
||||
|
||||
PlaYUVerFrame* FilterComponent::filterComponent( PlaYUVerFrame* InputFrame, Int Component )
|
||||
{
|
||||
Pel*** pppOutputPelYUV = m_pcFilteredFrame->getPelBufferYUV();
|
||||
Pel*** pppInputPelYUV = InputFrame->getPelBufferYUV();
|
||||
memcpy( pppOutputPelYUV[Component][0], pppInputPelYUV[Component][0], m_pcFilteredFrame->getWidth() * m_pcFilteredFrame->getHeight() * sizeof(Pel) );
|
||||
return m_pcFilteredFrame;
|
||||
}
|
||||
|
||||
Void FilterComponent::destroy()
|
||||
{
|
||||
if( m_pcFilteredFrame )
|
||||
delete m_pcFilteredFrame;
|
||||
m_pcFilteredFrame = NULL;
|
||||
}
|
||||
|
||||
|
||||
PlaYUVerModuleDefinition FilterComponentLumaDef = {
|
||||
FRAME_PROCESSING_MODULE, // Apply module to the frames or to the whole sequence.
|
||||
// Currently only support for frame
|
||||
"Filter Component", // Category (sub-menu)
|
||||
"Luma", // Name
|
||||
"Filter Y matrix of YUV frame", // Description
|
||||
MODULE_REQUIRES_ONE_FRAME, // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES)
|
||||
MODULE_REQUIRES_NOTHING, // Module requirements (check PlaYUVerModulesIf.h).
|
||||
// Several requirements should be "or" between each others.
|
||||
APPLY_WHILE_PLAYING, // Apply module while playing
|
||||
};
|
||||
|
||||
FilterComponentLuma::FilterComponentLuma()
|
||||
{
|
||||
setModuleDefinition( FilterComponentLumaDef );
|
||||
}
|
||||
|
||||
Void FilterComponentLuma::create( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
createFilter( InputFrame->getWidth(), InputFrame->getHeight() );
|
||||
}
|
||||
|
||||
PlaYUVerFrame* FilterComponentLuma::process( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
return filterComponent( InputFrame, LUMA );
|
||||
}
|
||||
|
||||
PlaYUVerModuleDefinition FilterComponentCrDef = {
|
||||
FRAME_PROCESSING_MODULE, // Apply module to the frames or to the whole sequence.
|
||||
// Currently only support for frame
|
||||
"Filter Component", // Category (sub-menu)
|
||||
"Chroma U", // Name
|
||||
"Filter Y matrix of YUV frame", // Description
|
||||
MODULE_REQUIRES_ONE_FRAME, // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES)
|
||||
MODULE_REQUIRES_NOTHING, // Module requirements (check PlaYUVerModulesIf.h).
|
||||
// Several requirements should be "or" between each others.
|
||||
APPLY_WHILE_PLAYING, // Apply module while playing
|
||||
};
|
||||
|
||||
FilterComponentChromaU::FilterComponentChromaU()
|
||||
{
|
||||
setModuleDefinition( FilterComponentCrDef );
|
||||
}
|
||||
|
||||
Void FilterComponentChromaU::create( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
createFilter( InputFrame->getWidth(), InputFrame->getHeight() );
|
||||
}
|
||||
|
||||
PlaYUVerFrame* FilterComponentChromaU::process( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
return filterComponent( InputFrame, CHROMA_U );
|
||||
}
|
||||
|
||||
} // NAMESPACE
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file FilterFrame.h
|
||||
* \file FilterComponentLuma.h
|
||||
* \brief Filter frame module
|
||||
*/
|
||||
|
||||
#ifndef __FILTERFRAME_H__
|
||||
#define __FILTERFRAME_H__
|
||||
#ifndef __FILTERCOMPONENT_H__
|
||||
#define __FILTERCOMPONENT_H__
|
||||
|
||||
#include "config.h"
|
||||
#include "PlaYUVerDefs.h"
|
||||
@@ -37,22 +37,40 @@
|
||||
namespace plaYUVer
|
||||
{
|
||||
|
||||
class FilterFrame: public PlaYUVerModuleIf
|
||||
class FilterComponent
|
||||
{
|
||||
private:
|
||||
PlaYUVerFrame* m_pcFilteredFrame;
|
||||
|
||||
public:
|
||||
FilterFrame();
|
||||
virtual ~FilterFrame()
|
||||
FilterComponent();
|
||||
virtual ~FilterComponent()
|
||||
{
|
||||
}
|
||||
|
||||
Void create( PlaYUVerFrame* InputFrame );
|
||||
|
||||
PlaYUVerFrame* process( PlaYUVerFrame* InputFrame );
|
||||
Void createFilter( UInt uiWidth, UInt uiHeight );
|
||||
PlaYUVerFrame* filterComponent( PlaYUVerFrame* InputFrame, Int Component );
|
||||
Void destroy();
|
||||
};
|
||||
|
||||
class FilterComponentLuma: public FilterComponent, public PlaYUVerModuleIf
|
||||
{
|
||||
public:
|
||||
FilterComponentLuma();
|
||||
virtual ~FilterComponentLuma()
|
||||
{
|
||||
}
|
||||
Void create( PlaYUVerFrame* InputFrame );
|
||||
PlaYUVerFrame* process( PlaYUVerFrame* InputFrame );
|
||||
};
|
||||
|
||||
class FilterComponentChromaU: public FilterComponent, public PlaYUVerModuleIf
|
||||
{
|
||||
public:
|
||||
FilterComponentChromaU();
|
||||
virtual ~FilterComponentChromaU()
|
||||
{
|
||||
}
|
||||
Void create( PlaYUVerFrame* InputFrame );
|
||||
PlaYUVerFrame* process( PlaYUVerFrame* InputFrame );
|
||||
};
|
||||
|
||||
} // NAMESPACE
|
||||
@@ -1,73 +0,0 @@
|
||||
/* This file is a part of plaYUVer project
|
||||
* Copyright (C) 2014 by Luis Lucas (luisfrlucas@gmail.com)
|
||||
* Joao Carreira (jfmcarreira@gmail.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file FilterFrame.cpp
|
||||
* \brief Filter frame module
|
||||
*/
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "FilterFrame.h"
|
||||
#include "PlaYUVerFrame.h"
|
||||
|
||||
namespace plaYUVer
|
||||
{
|
||||
|
||||
PlaYUVerModuleDefinition FilterFrameDef = {
|
||||
FRAME_PROCESSING_MODULE, // Apply module to the frames or to the whole sequence.
|
||||
// Currently only support for frame
|
||||
"Filters", // Category (sub-menu)
|
||||
"Y_Filter", // Name
|
||||
"Filter Y matrix of YUV frame", // Description
|
||||
MODULE_REQUIRES_ONE_FRAME, // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES)
|
||||
MODULE_REQUIRES_NOTHING, // Module requirements (check PlaYUVerModulesIf.h).
|
||||
// Several requirements should be "or" between each others.
|
||||
APPLY_WHILE_PLAYING, // Apply module while playing
|
||||
};
|
||||
|
||||
FilterFrame::FilterFrame()
|
||||
{
|
||||
setModuleDefinition( FilterFrameDef );
|
||||
m_pcFilteredFrame = NULL;
|
||||
}
|
||||
|
||||
Void FilterFrame::create( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
m_pcFilteredFrame = NULL;
|
||||
m_pcFilteredFrame = new PlaYUVerFrame( InputFrame->getWidth(), InputFrame->getHeight(), PlaYUVerFrame::GRAY );
|
||||
}
|
||||
|
||||
PlaYUVerFrame* FilterFrame::process( PlaYUVerFrame* InputFrame )
|
||||
{
|
||||
Pel*** pppOutputPelYUV = m_pcFilteredFrame->getPelBufferYUV();
|
||||
Pel*** pppInputPelYUV = InputFrame->getPelBufferYUV();
|
||||
memcpy( pppOutputPelYUV[LUMA][0], pppInputPelYUV[LUMA][0], m_pcFilteredFrame->getWidth() * m_pcFilteredFrame->getHeight() * sizeof(Pel) );
|
||||
return m_pcFilteredFrame;
|
||||
}
|
||||
|
||||
Void FilterFrame::destroy()
|
||||
{
|
||||
if( m_pcFilteredFrame )
|
||||
delete m_pcFilteredFrame;
|
||||
m_pcFilteredFrame = NULL;
|
||||
}
|
||||
|
||||
} // NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user