diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ebdc87e..27f2141 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,43 +13,71 @@ env: BUILD_TYPE: Release jobs: - check-build: + check-build-linux: # The CMake configure and build commands are platform agnostic and should work equally # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ubuntu-latest - + name: Build (Linux) + env: + CC: gcc-13 + CXX: g++-13 steps: - name: Install dependencies run: sudo apt-get update && sudo apt-get install cmake qtbase5-dev libavcodec-dev libavformat-dev libavutil-dev libopencv-dev libopencv-video-dev libopencv-contrib-dev - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build with default options # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -D CMAKE_C_COMPILER=gcc-12 -D CMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON; cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + run: | + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Build without threads - run: cmake -B ${{github.workspace}}/build-without-thread -D CMAKE_C_COMPILER=gcc-12 -D CMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON -DCALYP_MANAGED_RESOURCES=OFF -DCALYP_THREADED_MODULES=OFF; cmake --build ${{github.workspace}}/build-without-thread --config ${{env.BUILD_TYPE}} + run: | + cmake -B ${{github.workspace}}/build-without-thread -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON -DCALYP_MANAGED_RESOURCES=OFF -DCALYP_THREADED_MODULES=OFF + cmake --build ${{github.workspace}}/build-without-thread --config ${{env.BUILD_TYPE}} - name: Build without dependencies - run: cmake -B ${{github.workspace}}/build-without-deps -D CMAKE_C_COMPILER=gcc-12 -D CMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON -DUSE_OPENCV=OFF -DUSE_FFMPEG=OFF; cmake --build ${{github.workspace}}/build-without-deps --config ${{env.BUILD_TYPE}} + run: | + cmake -B ${{github.workspace}}/build-without-deps -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON -DUSE_OPENCV=OFF -DUSE_FFMPEG=OFF + cmake --build ${{github.workspace}}/build-without-deps --config ${{env.BUILD_TYPE}} - name: Install Qt& run: sudo apt-get install qt6-base-dev - name: Build with Qt& (autodetect) - run: cmake -B ${{github.workspace}}/build-qt6 -D CMAKE_C_COMPILER=gcc-12 -D CMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON; cmake --build ${{github.workspace}}/build-qt6 --config ${{env.BUILD_TYPE}} + run: | + cmake -B ${{github.workspace}}/build-qt6 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON + cmake --build ${{github.workspace}}/build-qt6 --config ${{env.BUILD_TYPE}} - check-tests: + check-build-macos: + name: Build (macOS) + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: brew install cmake qt opencv ffmpeg + - name: Build with default options + run: | + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DUSE_WERROR=ON + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + check-tests-linux: + name: Tests (Linux) runs-on: ubuntu-latest + needs: check-build-linux + env: + CC: gcc-13 + CXX: g++-13 steps: - name: Install dependencies run: sudo apt-get update && sudo apt-get install cmake qtbase5-dev qt6-base-dev libavcodec-dev libavformat-dev libavutil-dev libopencv-dev libopencv-video-dev libopencv-contrib-dev - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Check out tests data uses: actions/checkout@master @@ -60,7 +88,7 @@ jobs: - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -D CMAKE_C_COMPILER=gcc-12 -D CMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTS=ON -DCALYP_TEST_DATA_DIR=${{github.workspace}}/tests_data + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTS=ON -DCALYP_TEST_DATA_DIR=${{github.workspace}}/tests_data - name: Build # Build your program with the given configuration diff --git a/CMakeLists.txt b/CMakeLists.txt index 76f0620..7d29172 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,7 +242,7 @@ IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Release") ENDIF() -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -funroll-loops -Wno-unused-function") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -funroll-loops") # if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") endif() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 0fef6e8..1674414 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -8,6 +8,8 @@ EXPORT(PACKAGE MyLib) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/..) +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") + SET(Calyp_Lib_Frame_SRCS CalypPixel.cpp PixelFormats.h PixelFormats.cpp CalypFrame.h CalypFrame.cpp) SET(Calyp_Lib_Stream_SRCS diff --git a/modules/ThreeSixtyNxN.cpp b/modules/ThreeSixtyNxN.cpp index 0d02132..871cdcb 100644 --- a/modules/ThreeSixtyNxN.cpp +++ b/modules/ThreeSixtyNxN.cpp @@ -43,8 +43,7 @@ ThreeSixtyNxN::ThreeSixtyNxN() m_pchModuleLongName = "ERP to NxN"; m_pchModuleTooltip = "Downsampling ERP to NxN"; m_uiNumberOfFrames = 1; - m_uiModuleRequirements = ClpModuleFeature::SkipWhilePlaying | - ClpModuleFeature::Options; + m_uiModuleRequirements = ClpModuleFeature::SkipWhilePlaying | ClpModuleFeature::Options; m_cModuleOptions.addOptions() /**/ ( "Downsampling", m_uiDownsampling, "ERP to NxN (0 for up, 1 for down and 2 for recon) [1]" ) /**/ @@ -60,11 +59,13 @@ bool ThreeSixtyNxN::create( std::vector apcFrameList ) m_uiDownsampling = m_uiDownsampling > 2 ? 1 : m_uiDownsampling; if( m_uiDownsampling == 0 ) { - m_pcOutputFrame = new CalypFrame( 2 * apcFrameList[0]->getHeight(), apcFrameList[0]->getHeight(), apcFrameList[0]->getPelFormat(), apcFrameList[0]->getBitsPel() ); + m_pcOutputFrame = new CalypFrame( 2 * apcFrameList[0]->getHeight(), apcFrameList[0]->getHeight(), + apcFrameList[0]->getPelFormat(), apcFrameList[0]->getBitsPel() ); } else { - m_pcOutputFrame = new CalypFrame( apcFrameList[0]->getHeight(), apcFrameList[0]->getHeight(), apcFrameList[0]->getPelFormat(), apcFrameList[0]->getBitsPel() ); + m_pcOutputFrame = new CalypFrame( apcFrameList[0]->getHeight(), apcFrameList[0]->getHeight(), + apcFrameList[0]->getPelFormat(), apcFrameList[0]->getBitsPel() ); } return true; @@ -73,23 +74,18 @@ bool ThreeSixtyNxN::create( std::vector apcFrameList ) #define WIDTH_TRIM_START_POINT 0.0 #define WIDTH_FINAL 1.0 -//#define CLAMP8BITS( in ) ( uint8_t )( ( in > 255 ? 255 : in < 0 ? 0 : in ) + 0.5 ) +// #define CLAMP8BITS( in ) ( uint8_t )( ( in > 255 ? 255 : in < 0 ? 0 : in ) + 0.5 ) #define CLAMP_RANGE( X, MIN, MAX ) ( ( X ) < MIN ? MIN : ( ( X ) > MAX ? MAX : X ) ) #define CIRCULAR( a, b ) ( ( ( a < 0 ? b : 0 ) + ( a % b ) ) % b ) #define PI 3.14159265358979323846264338327950288419716939937510 #define s60 0.8660254037844386467637231707529361834714026269051 #define s45 0.7071067811865475244008443621048490392848359376884 -//interpolação Lanczos3 360 +// interpolação Lanczos3 360 static inline ClpPel interpol_lanczos3( ClpPel* image, double x, int N, int max_value ) { static const double cs[][2] = { - { 1, 0 }, - { -0.5, -s60 }, - { -0.5, s60 }, - { 1, 0 }, - { -0.5, -s60 }, - { -0.5, s60 }, + { 1, 0 }, { -0.5, -s60 }, { -0.5, s60 }, { 1, 0 }, { -0.5, -s60 }, { -0.5, s60 }, }; double sum_coeffs = 0, sum = 0, coeffs[6]; @@ -117,23 +113,6 @@ static inline ClpPel interpol_lanczos3( ClpPel* image, double x, int N, int max_ return CLAMP_RANGE( sum, 0, max_value ); } -//interpolação cúbica 360 -static inline ClpPel interpol_cub( ClpPel* image, double x, int N, int max_value ) -{ - int x_int = floor( x ); - x -= x_int; - bool n0 = x > 0; - ClpPel x1 = *( image + CIRCULAR( x_int, N ) ); - if( !n0 ) - return x1; - ClpPel x2 = *( image + CIRCULAR( x_int + n0, N ) ); - ClpPel x0 = *( image + CIRCULAR( x_int - 1, N ) ); - ClpPel x3 = *( image + CIRCULAR( x_int + n0 + 1, N ) ); - - ClpPel out = CLAMP_RANGE( x1 - x * ( x0 - x2 + x * ( 2 * x1 - 2 * x0 - x2 + x3 + x * ( x0 - x1 + x2 - x3 ) ) ), 0, max_value ); //cubic - return out; -} - void ThreeSixtyNxN::downsamplingOperation( const CalypFrame* pcInputFrame ) { for( unsigned ch = 0; ch < m_pcOutputFrame->getNumberChannels(); ch++ ) diff --git a/tools/CalypTools.cpp b/tools/CalypTools.cpp index 288c4ee..f09a9ff 100644 --- a/tools/CalypTools.cpp +++ b/tools/CalypTools.cpp @@ -26,7 +26,6 @@ #include #include -#include #include #include "config.h" @@ -721,7 +720,7 @@ int CalypTools::ListStatistics() log( CLP_LOG_RESULT, " Range: " ); for( unsigned channel = 0; channel < currFrame->getNumberChannels(); channel++ ) { - log( CLP_LOG_RESULT, std::format( "[{}:{}]", min[channel], max[channel] ) ); + log( CLP_LOG_RESULT, "[%d:%d]", min[channel], max[channel] ); } log( CLP_LOG_RESULT, "|\n" );