diff --git a/CMakeLists.txt b/CMakeLists.txt index 705684f..225cb9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,6 @@ OPTION(BUILD_TOOLS "Build Command Line Application" ON) OPTION(BUILD_EXAMPLES "Build Examples" OFF) OPTION(BUILD_DOC "Build Documentation" OFF) OPTION(BUILD_TESTS "Build Google Tests" OFF) -OPTION(BUILD_TESTS_CATCH2 "Build Catch2 Tests" OFF) OPTION(BUILD_WITH_SANITIZERS "Build with sanitizers" OFF) OPTION(BUILD_WITH_THREAD_SANITIZER "Build with thread sanitizer" OFF) @@ -123,21 +122,13 @@ IF(BUILD_TESTS) CACHE BOOL "" FORCE ) FETCHCONTENT_MAKEAVAILABLE(googletest) - SET_PACKAGE_PROPERTIES( googletest PROPERTIES URL "https://github.com/google/googletest" DESCRIPTION "Google unit tests" TYPE OPTIONAL ) - SET(CALYP_TEST_DATA_DIR - "CALYP_TEST_DATA_DIR" - CACHE PATH "Location of video information for testing" - ) -ENDIF() -IF(BUILD_TESTS_CATCH2) - INCLUDE(FetchContent) FETCHCONTENT_DECLARE( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git @@ -151,7 +142,13 @@ IF(BUILD_TESTS_CATCH2) TYPE OPTIONAL ) INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/_deps/catch2-src/contrib/Catch.cmake) + INCLUDE(CTest) ENABLE_TESTING() + + SET(CALYP_TEST_DATA_DIR + "CALYP_TEST_DATA_DIR" + CACHE PATH "Location of video information for testing" + ) ENDIF() OPTION(USE_OPENCV "Add OpenCV support" ON) diff --git a/app/CalypAppModuleIf.cpp b/app/CalypAppModuleIf.cpp index e165bf2..eafb878 100644 --- a/app/CalypAppModuleIf.cpp +++ b/app/CalypAppModuleIf.cpp @@ -219,16 +219,13 @@ void CalypAppModuleIf::show() #ifdef CALYP_THREADED_MODULES if( m_Mutex.try_lock() ) { - displayWindow->setFillWindow( false ); - displayWindow->setCurrFrame( m_pcProcessedFrame ); + m_pcDisplaySubWindow->setFillWindow( false ); + m_pcDisplaySubWindow->setCurrFrame( m_pcProcessedFrame ); m_Mutex.unlock(); } - else - { #endif - displayWindow->setFillWindow( false ); - displayWindow->setCurrFrame( m_pcProcessedFrame ); - } + m_pcDisplaySubWindow->setFillWindow( false ); + m_pcDisplaySubWindow->setCurrFrame( m_pcProcessedFrame ); break; } case CLP_FRAME_MEASUREMENT_MODULE: @@ -241,6 +238,7 @@ void CalypAppModuleIf::disable() { QApplication::setOverrideCursor( Qt::WaitCursor ); #ifdef CALYP_THREADED_MODULES + QMutexLocker locker( &m_Mutex ); m_Mutex.lock(); m_Mutex.unlock(); #endif diff --git a/app/ModulesHandle.cpp b/app/ModulesHandle.cpp index 5153439..bef67ac 100644 --- a/app/ModulesHandle.cpp +++ b/app/ModulesHandle.cpp @@ -276,6 +276,10 @@ void ModulesHandle::activateModule() QString ModuleIfName = pcAction->data().toString(); auto pcCurrModuleIf = CalypModulesFactory::Get()->CreateModule( ModuleIfName.toLocal8Bit().constData() ); + if( pcCurrModuleIf == nullptr ) + { + return; + } auto pcCurrAppModuleIf = std::make_shared( this, pcAction, std::move( pcCurrModuleIf ) ); QList videoSubWindowList; diff --git a/examples/modules/CMakeLists.txt b/examples/modules/CMakeLists.txt index 9b35f35..25c0bf1 100644 --- a/examples/modules/CMakeLists.txt +++ b/examples/modules/CMakeLists.txt @@ -9,8 +9,8 @@ PROJECT("modules_example") # THIS FIND_PACKAGE( Calyp ) INCLUDE_DIRECTORIES( ${CALYP_INCLUDE_DIRS} ) OR INCLUDE_DIRECTORIES(../../lib) -ADD_LIBRARY(FrameBinarization SHARED FrameBinarization_APIv1.cpp) -TARGET_LINK_LIBRARIES(FrameBinarization ${PROJECT_LIBRARY}) +ADD_LIBRARY(FrameBinarizationAPIv1 SHARED FrameBinarizationAPIv1.cpp) +TARGET_LINK_LIBRARIES(FrameBinarizationAPIv1 ${PROJECT_LIBRARY}) ADD_LIBRARY(AbsoluteFrameDifferenceExample SHARED AbsoluteFrameDifferenceExample.cpp) TARGET_LINK_LIBRARIES(AbsoluteFrameDifferenceExample ${PROJECT_LIBRARY}) diff --git a/examples/modules/FrameBinarization_APIv1.cpp b/examples/modules/FrameBinarizationAPIv1.cpp similarity index 83% rename from examples/modules/FrameBinarization_APIv1.cpp rename to examples/modules/FrameBinarizationAPIv1.cpp index bd371a6..956fdf3 100644 --- a/examples/modules/FrameBinarization_APIv1.cpp +++ b/examples/modules/FrameBinarizationAPIv1.cpp @@ -18,20 +18,20 @@ */ /** - * \file FrameBinarization_APIv1.cpp + * \file FrameBinarizationAPIv1.cpp * \brief Binarize frame module (example of APIv1) */ -#include "FrameBinarization_APIv1.h" +#include "FrameBinarizationAPIv1.h" -REGISTER_CLASS_MAKER( FrameBinarization_APIv1 ) +REGISTER_CLASS_MAKER( FrameBinarizationAPIv1 ) -FrameBinarization_APIv1::FrameBinarization_APIv1() +FrameBinarizationAPIv1::FrameBinarizationAPIv1() { /* Module Definition */ m_iModuleType = CLP_FRAME_PROCESSING_MODULE; m_pchModuleCategory = "Utilities"; - m_pchModuleName = "FrameBinarization_APIv1"; + m_pchModuleName = "FrameBinarizationAPIv1"; m_pchModuleLongName = "Frame Binarization API v1"; m_pchModuleTooltip = "Binarize frame"; m_uiNumberOfFrames = 1; @@ -44,13 +44,13 @@ FrameBinarization_APIv1::FrameBinarization_APIv1() m_uiThreshold = 128; } -void FrameBinarization_APIv1::create( CalypFrame* frame ) +void FrameBinarizationAPIv1::create( CalypFrame* frame ) { m_pcBinFrame = NULL; m_pcBinFrame = new CalypFrame( frame->getWidth(), frame->getHeight(), CLP_GRAY, 8 ); } -CalypFrame* FrameBinarization_APIv1::process( CalypFrame* frame ) +CalypFrame* FrameBinarizationAPIv1::process( CalypFrame* frame ) { const ClpPel* pPelInput = frame->getPelBufferYUV()[0][0]; ClpPel* pPelBin = m_pcBinFrame->getPelBufferYUV()[0][0]; @@ -62,7 +62,7 @@ CalypFrame* FrameBinarization_APIv1::process( CalypFrame* frame ) return m_pcBinFrame; } -void FrameBinarization_APIv1::destroy() +void FrameBinarizationAPIv1::destroy() { if( m_pcBinFrame ) delete m_pcBinFrame; diff --git a/examples/modules/FrameBinarization_APIv1.h b/examples/modules/FrameBinarizationAPIv1.h similarity index 78% rename from examples/modules/FrameBinarization_APIv1.h rename to examples/modules/FrameBinarizationAPIv1.h index e2a0265..d3eb4b3 100644 --- a/examples/modules/FrameBinarization_APIv1.h +++ b/examples/modules/FrameBinarizationAPIv1.h @@ -18,29 +18,29 @@ */ /** - * \file FrameBinarization_APIv1.h + * \file FrameBinarizationAPIv1.h * \brief Binarize frame module (example of APIv1) */ -#ifndef __FRAMEBINARIZATION_APIV1_H__ -#define __FRAMEBINARIZATION_APIV1_H__ +#ifndef __FRAMEBINARIZATIONAPIV1_H__ +#define __FRAMEBINARIZATIONAPIV1_H__ #include "CalypModuleIf.h" -class FrameBinarization_APIv1 : public CalypModuleIf +class FrameBinarizationAPIv1 : public CalypModuleIf { - REGISTER_CLASS_FACTORY( FrameBinarization_APIv1 ) + REGISTER_CLASS_FACTORY( FrameBinarizationAPIv1 ) private: CalypFrame* m_pcBinFrame; unsigned int m_uiThreshold; public: - FrameBinarization_APIv1(); - virtual ~FrameBinarization_APIv1() {} + FrameBinarizationAPIv1(); + virtual ~FrameBinarizationAPIv1() {} void create( CalypFrame* ); CalypFrame* process( CalypFrame* ); void destroy(); }; -#endif // __FRAMEBINARIZATION_APIV1_H__ +#endif // __FRAMEBINARIZATIONAPIV1_H__ diff --git a/examples/stream/testStreamReading.cpp b/examples/stream/testStreamReading.cpp index d578098..43d9973 100644 --- a/examples/stream/testStreamReading.cpp +++ b/examples/stream/testStreamReading.cpp @@ -38,8 +38,7 @@ int main( int argc, char* argv[] ) double n = 0; CalypStream stream; - //stream.open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/Kendo_c4_1024x768_yuv420p.yuv" ), 1024, 768, 0, 8, CLP_BIG_ENDIAN, 1, true ); - stream.open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/SteamLocomotiveTrain_2560x1600_60_10bit_crop.yuv" ), 2560, 1600, 0, 10, CLP_LITTLE_ENDIAN, 1, true ); + stream.open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/Foreman.yuv" ), 352, 288, 0, 8, CLP_BIG_ENDIAN, 1, true ); while( 1 ) { diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 06557bb..98a68ae 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -76,8 +76,5 @@ ENDIF() IF(BUILD_TESTS) ADD_SUBDIRECTORY(tests) -ENDIF() - -IF(BUILD_TESTS_CATCH2) ADD_SUBDIRECTORY(catch2) ENDIF() diff --git a/lib/catch2/CMakeLists.txt b/lib/catch2/CMakeLists.txt index 25a3125..8bae1ea 100644 --- a/lib/catch2/CMakeLists.txt +++ b/lib/catch2/CMakeLists.txt @@ -8,6 +8,4 @@ SET(Calyp_Lib_Catch2_Tests_SRCS CalypFrameTests.cpp) ADD_EXECUTABLE(CalypLibCatch2Tests ${Calyp_Lib_Catch2_Tests_SRCS}) TARGET_LINK_LIBRARIES(CalypLibCatch2Tests ${PROJECT_LIBRARY} Catch2::Catch2) - -INCLUDE(CTest) CATCH_DISCOVER_TESTS(CalypLibCatch2Tests) diff --git a/lib/tests/PlaYUVerFrameQualityTests.cpp b/lib/tests/PlaYUVerFrameQualityTests.cpp index 123d946..9ec1827 100644 --- a/lib/tests/PlaYUVerFrameQualityTests.cpp +++ b/lib/tests/PlaYUVerFrameQualityTests.cpp @@ -34,12 +34,12 @@ protected: // Can be omitted if not needed. static void SetUpTestCase() { - pcStreamPast = new CalypStream; + pcStreamPast = std::make_unique(); pcStreamPast->open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/BasketballDrill_F10_832x480_yuv420p.yuv" ), 832, 480, 0, 8, CLP_BIG_ENDIAN, 1, true ); pcFramePast = pcStreamPast->getCurrFrame(); - pcStreamFuture = new CalypStream; + pcStreamFuture = std::make_unique(); pcStreamFuture->open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/BasketballDrill_F15_832x480_yuv420p.yuv" ), 832, 480, 0, 8, CLP_BIG_ENDIAN, 1, true ); pcFrameFuture = pcStreamFuture->getCurrFrame(); @@ -50,27 +50,22 @@ protected: // Can be omitted if not needed. static void TearDownTestCase() { - pcStreamPast->close(); - delete pcStreamPast; - pcStreamPast = NULL; - - pcStreamFuture->close(); - delete pcStreamFuture; - pcStreamFuture = NULL; + pcStreamPast = nullptr; + pcStreamFuture = nullptr; } // Some expensive resource shared by all tests. - static CalypStream* pcStreamPast; + static std::unique_ptr pcStreamPast; static CalypFrame* pcFramePast; - static CalypStream* pcStreamFuture; + static std::unique_ptr pcStreamFuture; static CalypFrame* pcFrameFuture; }; -CalypStream* CalypFrameQualityTest::pcStreamPast = NULL; -CalypStream* CalypFrameQualityTest::pcStreamFuture = NULL; -CalypFrame* CalypFrameQualityTest::pcFramePast = NULL; -CalypFrame* CalypFrameQualityTest::pcFrameFuture = NULL; +std::unique_ptr CalypFrameQualityTest::pcStreamPast{ nullptr }; +std::unique_ptr CalypFrameQualityTest::pcStreamFuture{ nullptr }; +CalypFrame* CalypFrameQualityTest::pcFramePast{ nullptr }; +CalypFrame* CalypFrameQualityTest::pcFrameFuture{ nullptr }; TEST_F( CalypFrameQualityTest, MSE ) { diff --git a/modules/tests/TestModuleCreate.cpp b/modules/tests/TestModuleCreate.cpp index 0defc40..6c2f828 100644 --- a/modules/tests/TestModuleCreate.cpp +++ b/modules/tests/TestModuleCreate.cpp @@ -38,7 +38,7 @@ protected: { ClpString moduleName = CALYP_TEST_MODULE_NAME; - pcStream = new CalypStream; + pcStream = std::make_unique(); pcStream->open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/BasketballDrill_F10_832x480_yuv420p.yuv" ), 832, 480, 0, 8, CLP_BIG_ENDIAN, 1, true ); } @@ -48,9 +48,7 @@ protected: // Can be omitted if not needed. static void TearDownTestCase() { - pcStream->close(); - delete pcStream; - pcStream = NULL; + pcStream = nullptr; } // Called before each test @@ -70,18 +68,18 @@ protected: } } + // Called after each test void TearDown() { - pcModule->Delete(); } - CalypModuleIf* pcModule; + std::unique_ptr pcModule; // Some expensive resource shared by all tests. - static CalypStream* pcStream; + static std::unique_ptr pcStream; }; -CalypStream* TestModuleCreate::pcStream = NULL; +std::unique_ptr TestModuleCreate::pcStream{ nullptr }; TEST_F( TestModuleCreate, FIND_MODULE ) { diff --git a/modules/tests/TestModuleProcessNumberOfFrames.cpp b/modules/tests/TestModuleProcessNumberOfFrames.cpp index c128d37..b468ea1 100644 --- a/modules/tests/TestModuleProcessNumberOfFrames.cpp +++ b/modules/tests/TestModuleProcessNumberOfFrames.cpp @@ -36,11 +36,6 @@ protected: // Can be omitted if not needed. static void SetUpTestCase() { - ClpString moduleName = CALYP_TEST_MODULE_NAME; - - pcStream = new CalypStream; - pcStream->open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/BasketballDrill_F10_832x480_yuv420p.yuv" ), 832, 480, 0, 8, - CLP_BIG_ENDIAN, 1, true ); } // Per-test-case tear-down. @@ -48,9 +43,7 @@ protected: // Can be omitted if not needed. static void TearDownTestCase() { - pcStream->close(); - delete pcStream; - pcStream = NULL; + pcStream = nullptr; } // Called before each test @@ -58,7 +51,7 @@ protected: { ClpString moduleName = CALYP_TEST_MODULE_NAME; - pcStream = new CalypStream; + pcStream = std::make_unique(); pcStream->open( ClpString( CALYP_TEST_DATA_DIR ) + ClpString( "/BasketballDrill_F10_832x480_yuv420p.yuv" ), 832, 480, 0, 8, CLP_BIG_ENDIAN, 1, true ); @@ -76,16 +69,15 @@ protected: void TearDown() { - pcModule->Delete(); } - CalypModuleIf* pcModule; + std::unique_ptr pcModule; // Some expensive resource shared by all tests. - static CalypStream* pcStream; + static std::unique_ptr pcStream; }; -CalypStream* TestModuleProcessNumberOfFrames::pcStream = NULL; +std::unique_ptr TestModuleProcessNumberOfFrames::pcStream{ nullptr }; TEST_F( TestModuleProcessNumberOfFrames, PROCESS_OK ) {