From 4a4e0c1890b26ac4b989f888dd6dbf681b1da92f Mon Sep 17 00:00:00 2001 From: Joao Carreira Date: Tue, 24 Mar 2015 18:27:05 +0000 Subject: [PATCH] Change apply when playing and add OPTIONS requirement --- app/ModulesHandle.cpp | 31 ++++++------- modules/AbsoluteFrameDifference.cpp | 2 - modules/DisparityStereoVar.cpp | 3 +- modules/FilterComponent.cpp | 3 -- modules/FrameBinarization.cpp | 3 +- modules/FrameDifference.cpp | 1 - modules/LumaAverage.cpp | 18 ++++---- modules/PlaYUVerModuleIf.h | 72 +++++++++++++++++------------ 8 files changed, 70 insertions(+), 63 deletions(-) diff --git a/app/ModulesHandle.cpp b/app/ModulesHandle.cpp index 8bcd29d..35c4791 100644 --- a/app/ModulesHandle.cpp +++ b/app/ModulesHandle.cpp @@ -303,9 +303,11 @@ Void ModulesHandle::enableModuleIf( PlaYUVerAppModuleIf *pcCurrModuleIf ) pcCurrModuleIf->m_pcSubWindow[i] = videoSubWindowList.at( i ); } - ModulesHandleOptDialog moduleOptDialog( m_pcParent, pcCurrModuleIf ); - moduleOptDialog.runConfiguration(); - + if( pcCurrModuleIf->m_pcModule->m_uiModuleRequirements & MODULE_REQUIRES_OPTIONS ) + { + ModulesHandleOptDialog moduleOptDialog( m_pcParent, pcCurrModuleIf ); + moduleOptDialog.runConfiguration(); + } if( pcCurrModuleIf->m_pcModule->m_iModuleType == FRAME_PROCESSING_MODULE ) { if( ( pcCurrModuleIf->m_pcModule->m_uiModuleRequirements & MODULE_REQUIRES_NEW_WINDOW ) || bShowModulesNewWindow ) @@ -326,18 +328,15 @@ Void ModulesHandle::enableModuleIf( PlaYUVerAppModuleIf *pcCurrModuleIf ) else if( pcCurrModuleIf->m_pcModule->m_iModuleType == FRAME_MEASUREMENT_MODULE ) { pcCurrModuleIf->m_pcDisplaySubWindow = NULL; - if( pcCurrModuleIf->m_pcModule->m_uiModuleRequirements & MODULE_REQUIRES_SIDEBAR ) - { - pcCurrModuleIf->m_pcModuleDock = new ModuleHandleDock( m_pcParent, pcCurrModuleIf ); - QString titleDockWidget; - titleDockWidget.append( pcCurrModuleIf->m_pcModule->m_pchModuleName ); - titleDockWidget.append( " Information" ); - pcCurrModuleIf->m_pcDockWidget = new QDockWidget( titleDockWidget, m_pcParent ); - pcCurrModuleIf->m_pcDockWidget->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); - pcCurrModuleIf->m_pcDockWidget->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea ); - pcCurrModuleIf->m_pcDockWidget->setWidget( pcCurrModuleIf->m_pcModuleDock ); - qobject_cast( m_pcParent )->addDockWidget( Qt::RightDockWidgetArea, pcCurrModuleIf->m_pcDockWidget ); - } + pcCurrModuleIf->m_pcModuleDock = new ModuleHandleDock( m_pcParent, pcCurrModuleIf ); + QString titleDockWidget; + titleDockWidget.append( pcCurrModuleIf->m_pcModule->m_pchModuleName ); + titleDockWidget.append( " Information" ); + pcCurrModuleIf->m_pcDockWidget = new QDockWidget( titleDockWidget, m_pcParent ); + pcCurrModuleIf->m_pcDockWidget->setFeatures( QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable ); + pcCurrModuleIf->m_pcDockWidget->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea ); + pcCurrModuleIf->m_pcDockWidget->setWidget( pcCurrModuleIf->m_pcModuleDock ); + qobject_cast( m_pcParent )->addDockWidget( Qt::RightDockWidgetArea, pcCurrModuleIf->m_pcDockWidget ); } // Create Module @@ -431,7 +430,7 @@ Bool ModulesHandle::applyModuleIf( PlaYUVerAppModuleIf *pcCurrModuleIf, Bool isP { Bool bRet = false; QApplication::setOverrideCursor( Qt::WaitCursor ); - if( !isPlaying || ( isPlaying && pcCurrModuleIf->m_pcModule->m_bApplyWhilePlaying ) ) + if( !( isPlaying && ( pcCurrModuleIf->m_pcModule->m_uiModuleRequirements & MODULE_REQUIRES_SKIP_WHILE_PLAY ) ) ) { #ifdef PLAYUVER_THREADED_MODULES if( !disableThreads ) diff --git a/modules/AbsoluteFrameDifference.cpp b/modules/AbsoluteFrameDifference.cpp index 8af3b45..d0c1405 100644 --- a/modules/AbsoluteFrameDifference.cpp +++ b/modules/AbsoluteFrameDifference.cpp @@ -37,8 +37,6 @@ AbsoluteFrameDifference::AbsoluteFrameDifference() m_pchModuleTooltip = "Measure the absolute difference between two images (Y plane), e. g., abs( Y1 - Y2 )"; m_uiModuleRequirements = MODULE_REQUIRES_NEW_WINDOW; m_uiNumberOfFrames = MODULE_REQUIRES_TWO_FRAMES; - m_bApplyWhilePlaying = APPLY_WHILE_PLAYING; - m_pcFrameDifference = NULL; } diff --git a/modules/DisparityStereoVar.cpp b/modules/DisparityStereoVar.cpp index 1dee936..210bc17 100644 --- a/modules/DisparityStereoVar.cpp +++ b/modules/DisparityStereoVar.cpp @@ -37,8 +37,7 @@ DisparityStereoVar::DisparityStereoVar() m_pchModuleName = "StereoVar"; m_pchModuleTooltip = "Measure the disparity between two images using the Stereo Var method (OpenCV)"; m_uiNumberOfFrames = MODULE_REQUIRES_TWO_FRAMES; - m_uiModuleRequirements = MODULE_REQUIRES_NEW_WINDOW; - m_bApplyWhilePlaying = !APPLY_WHILE_PLAYING; + m_uiModuleRequirements = MODULE_REQUIRES_SKIP_WHILE_PLAY | MODULE_REQUIRES_NEW_WINDOW; m_pcDisparityFrame = NULL; m_cStereoVar.levels = 3; // ignored with USE_AUTO_PARAMS diff --git a/modules/FilterComponent.cpp b/modules/FilterComponent.cpp index 6102704..17258fb 100644 --- a/modules/FilterComponent.cpp +++ b/modules/FilterComponent.cpp @@ -66,7 +66,6 @@ FilterComponentLuma::FilterComponentLuma() m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES) m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; // Module requirements (check PlaYUVerModulesIf.h). // Several requirements should be "or" between each others. - m_bApplyWhilePlaying = APPLY_WHILE_PLAYING; // Apply module while playing } Void FilterComponentLuma::create( PlaYUVerFrame* InputFrame ) @@ -88,7 +87,6 @@ FilterComponentChromaU::FilterComponentChromaU() m_pchModuleTooltip = "Filter U matrix of YUV frame"; m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; - m_bApplyWhilePlaying = !APPLY_WHILE_PLAYING; } Void FilterComponentChromaU::create( PlaYUVerFrame* InputFrame ) @@ -110,7 +108,6 @@ FilterComponentChromaV::FilterComponentChromaV() m_pchModuleTooltip = "Filter V matrix of YUV frame"; m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; - m_bApplyWhilePlaying = !APPLY_WHILE_PLAYING; } Void FilterComponentChromaV::create( PlaYUVerFrame* InputFrame ) diff --git a/modules/FrameBinarization.cpp b/modules/FrameBinarization.cpp index 5f4dfe1..ce46630 100644 --- a/modules/FrameBinarization.cpp +++ b/modules/FrameBinarization.cpp @@ -35,8 +35,7 @@ FrameBinarization::FrameBinarization() m_pchModuleName = "FrameBinarization"; m_pchModuleTooltip = "Binarize frame"; m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; - m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; - m_bApplyWhilePlaying = APPLY_WHILE_PLAYING; + m_uiModuleRequirements = MODULE_REQUIRES_OPTIONS; m_cModuleOptions.addOptions()/**/ ( "threshold", m_uiThreshold, "Threshold level for binarization (0-255) [128]" ); diff --git a/modules/FrameDifference.cpp b/modules/FrameDifference.cpp index f3b8dd1..983f1e7 100644 --- a/modules/FrameDifference.cpp +++ b/modules/FrameDifference.cpp @@ -37,7 +37,6 @@ FrameDifference::FrameDifference() m_pchModuleTooltip = "Measure the difference between two images (Y plane), Y1 - Y2, with max absolute diff of 128"; m_uiModuleRequirements = MODULE_REQUIRES_NEW_WINDOW; m_uiNumberOfFrames = MODULE_REQUIRES_TWO_FRAMES; - m_bApplyWhilePlaying = APPLY_WHILE_PLAYING; m_pcFrameDifference = NULL; } diff --git a/modules/LumaAverage.cpp b/modules/LumaAverage.cpp index c32a79d..3636a72 100644 --- a/modules/LumaAverage.cpp +++ b/modules/LumaAverage.cpp @@ -30,13 +30,14 @@ namespace plaYUVer LumaAverage::LumaAverage() { /* Module Definition */ - m_iModuleType = FRAME_MEASUREMENT_MODULE; - m_pchModuleCategory = "Measurements"; - m_pchModuleName = "LumaAverage"; - m_pchModuleTooltip = "Measure the average of luma component"; - m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; - m_uiModuleRequirements = MODULE_REQUIRES_SIDEBAR; - m_bApplyWhilePlaying = APPLY_WHILE_PLAYING; + m_iModuleType = FRAME_MEASUREMENT_MODULE; // Apply module to the frames or to the whole sequence. + // Currently only support for frame + m_pchModuleCategory = "Measurements"; // Category (sub-menu) + m_pchModuleName = "LumaAverage"; // Name + m_pchModuleTooltip = "Measure the average of luma component"; // Description + m_uiNumberOfFrames = MODULE_REQUIRES_ONE_FRAME; // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES) + m_uiModuleRequirements = MODULE_REQUIRES_NOTHING; // Module requirements (check PlaYUVerModulesIf.h). + // Several requirements should be "or" between each others. } Void LumaAverage::create( PlaYUVerFrame* frame ) @@ -61,5 +62,6 @@ Void LumaAverage::destroy() } -} // NAMESPACE +} +// NAMESPACE diff --git a/modules/PlaYUVerModuleIf.h b/modules/PlaYUVerModuleIf.h index 4388a0c..227374e 100644 --- a/modules/PlaYUVerModuleIf.h +++ b/modules/PlaYUVerModuleIf.h @@ -38,7 +38,7 @@ public: \ static PlaYUVerModuleIf* Create() { return new X(); } \ void Delete() { delete this; } -enum // Module type +enum // Module type { FRAME_PROCESSING_MODULE, FRAME_MEASUREMENT_MODULE, @@ -47,32 +47,21 @@ enum // Module type #define APPLY_WHILE_PLAYING true #define MAX_NUMBER_FRAMES 3 -enum // Number of frames +enum Module_NumberOfFrames { MODULE_REQUIRES_ONE_FRAME = 1, MODULE_REQUIRES_TWO_FRAMES = 2, MODULE_REQUIRES_THREE_FRAMES = 3, }; -enum // Requirements +enum Module_Requirements { MODULE_REQUIRES_NOTHING = 0, - MODULE_REQUIRES_NEW_WINDOW = 2, - MODULE_REQUIRES_SIDEBAR = 4, - MODULES_REQUIREMENTS_TOTAL, + MODULE_REQUIRES_SKIP_WHILE_PLAY = 2, + MODULE_REQUIRES_OPTIONS = 4, + MODULE_REQUIRES_NEW_WINDOW = 6, }; -typedef struct -{ - Int m_iModuleType; - const Char* m_pchModuleCategory; - const Char* m_pchModuleName; - const Char* m_pchModuleTooltip; - UInt m_uiNumberOfFrames; - UInt m_uiModuleRequirements; - Bool m_bApplyWhilePlaying; -} PlaYUVerModuleDefinition; - class PlaYUVerModuleIf { public: @@ -81,27 +70,52 @@ public: const Char* m_pchModuleCategory; const Char* m_pchModuleName; const Char* m_pchModuleTooltip; - UInt m_uiNumberOfFrames; + enum Module_NumberOfFrames m_uiNumberOfFrames; UInt m_uiModuleRequirements; - Bool m_bApplyWhilePlaying; Options m_cModuleOptions; - PlaYUVerModuleIf() {} - virtual ~PlaYUVerModuleIf() {} + PlaYUVerModuleIf() + { + } + virtual ~PlaYUVerModuleIf() + { + } virtual void Delete() = 0; - virtual Void create() {} - virtual Void create( PlaYUVerFrame* ) {} + virtual Void create() + { + } + virtual Void create( PlaYUVerFrame* ) + { + } - virtual PlaYUVerFrame* process( PlaYUVerFrame* ) { return NULL; } - virtual PlaYUVerFrame* process( PlaYUVerFrame*, PlaYUVerFrame* ) { return NULL; } - virtual PlaYUVerFrame* process( PlaYUVerFrame*, PlaYUVerFrame*, PlaYUVerFrame* ) { return NULL; } + virtual PlaYUVerFrame* process( PlaYUVerFrame* ) + { + return NULL; + } + virtual PlaYUVerFrame* process( PlaYUVerFrame*, PlaYUVerFrame* ) + { + return NULL; + } + virtual PlaYUVerFrame* process( PlaYUVerFrame*, PlaYUVerFrame*, PlaYUVerFrame* ) + { + return NULL; + } - virtual Double measure( PlaYUVerFrame* ) { return 0; } - virtual Double measure( PlaYUVerFrame*, PlaYUVerFrame* ) { return 0; } - virtual Double measure( PlaYUVerFrame*, PlaYUVerFrame*, PlaYUVerFrame* ) { return 0; } + virtual Double measure( PlaYUVerFrame* ) + { + return 0; + } + virtual Double measure( PlaYUVerFrame*, PlaYUVerFrame* ) + { + return 0; + } + virtual Double measure( PlaYUVerFrame*, PlaYUVerFrame*, PlaYUVerFrame* ) + { + return 0; + } virtual Void destroy() = 0;