mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
[build] Fix building for other than x86 target
This commit is contained in:
parent
3479218ca8
commit
7557067b41
|
@ -61,9 +61,6 @@ if(MSVC)
|
||||||
add_definitions(-DWIN32_LEAN_AND_MEAN -D_WIN32 -DWIN32 -DWIN64)
|
add_definitions(-DWIN32_LEAN_AND_MEAN -D_WIN32 -DWIN32 -DWIN64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# ToDo: allow compiling on other than x86
|
|
||||||
add_definitions(-DCOMPILE_INTEL)
|
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_SHARED_LIBS)
|
||||||
list( APPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" "./" "../lib" )
|
list( APPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" "./" "../lib" )
|
||||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
@ -101,7 +98,10 @@ if(MSVC)
|
||||||
target_include_directories(uvg266 PUBLIC src/threadwrapper/include)
|
target_include_directories(uvg266 PUBLIC src/threadwrapper/include)
|
||||||
set_property( SOURCE ${LIB_SOURCES_STRATEGIES_AVX2} APPEND PROPERTY COMPILE_FLAGS "/arch:AVX2" )
|
set_property( SOURCE ${LIB_SOURCES_STRATEGIES_AVX2} APPEND PROPERTY COMPILE_FLAGS "/arch:AVX2" )
|
||||||
else()
|
else()
|
||||||
set_property( SOURCE ${LIB_SOURCES_STRATEGIES_AVX2} APPEND PROPERTY COMPILE_FLAGS "-mavx2 -mbmi -mpopcnt -mlzcnt -mbmi2" )
|
list(APPEND ALLOW_AVX2 "x86_64" "AMD64")
|
||||||
|
if(${CMAKE_SYSTEM_PROCESSOR} IN_LIST ALLOW_AVX2)
|
||||||
|
set_property( SOURCE ${LIB_SOURCES_STRATEGIES_AVX2} APPEND PROPERTY COMPILE_FLAGS "-mavx2 -mbmi -mpopcnt -mlzcnt -mbmi2" )
|
||||||
|
endif()
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(uvg266 PUBLIC Threads::Threads)
|
target_link_libraries(uvg266 PUBLIC Threads::Threads)
|
||||||
|
|
|
@ -419,10 +419,11 @@ Others might encounter the same problem and there is probably much to
|
||||||
improve in the build process. We want to make this as simple as
|
improve in the build process. We want to make this as simple as
|
||||||
possible.
|
possible.
|
||||||
|
|
||||||
|
**CMakeLists.txt assumes that the x86 based CPUs are 64bit and support AVX2**
|
||||||
|
|
||||||
### CMake
|
### CMake
|
||||||
Depending on the platform, some additional tools are required for compiling uvg266 with CMake.
|
Depending on the platform, some additional tools are required for compiling uvg266 with CMake.
|
||||||
For Ubuntu, the required packages are `automake autoconf build-essential`.
|
For Ubuntu, the required packages are `build-essential cmake`.
|
||||||
|
|
||||||
Run the following commands to compile and install uvg266.
|
Run the following commands to compile and install uvg266.
|
||||||
|
|
||||||
|
@ -433,6 +434,7 @@ Run the following commands to compile and install uvg266.
|
||||||
|
|
||||||
Visual Studio natively supports opening the `CMakeLists.txt` of the CMake build package has been installed.
|
Visual Studio natively supports opening the `CMakeLists.txt` of the CMake build package has been installed.
|
||||||
Otherwise CMake-CLI can be used to generate the Visual Studio project files.
|
Otherwise CMake-CLI can be used to generate the Visual Studio project files.
|
||||||
|
**When building shared library with visual studio the tests will fail to link, the main binary will still work**
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
This project includes a [Dockerfile](./Dockerfile), which enables building for Docker.
|
This project includes a [Dockerfile](./Dockerfile), which enables building for Docker.
|
||||||
|
@ -442,6 +444,8 @@ For other examples, see [Dockerfile](./Dockerfile)
|
||||||
|
|
||||||
## Paper
|
## Paper
|
||||||
|
|
||||||
|
**The paper is open access**
|
||||||
|
|
||||||
Please cite [this paper](https://ieeexplore.ieee.org/document/9690938) for uvg266:
|
Please cite [this paper](https://ieeexplore.ieee.org/document/9690938) for uvg266:
|
||||||
|
|
||||||
```M. Viitanen, J. Sainio, A. Mercat, A. Lemmetti, and J. Vanne, “From HEVC to VVC: the First Development Steps of a Practical Intra Video Encoder,” Accepted to IEEE Transactions on Consumer Electronics```
|
```M. Viitanen, J. Sainio, A. Mercat, A. Lemmetti, and J. Vanne, “From HEVC to VVC: the First Development Steps of a Practical Intra Video Encoder,” Accepted to IEEE Transactions on Consumer Electronics```
|
||||||
|
@ -484,7 +488,7 @@ You can generate Doxygen documentation pages by running the command
|
||||||
- Main automatic way of testing is with Github Actions. Commits, branches
|
- Main automatic way of testing is with Github Actions. Commits, branches
|
||||||
and pull requests are tested automatically.
|
and pull requests are tested automatically.
|
||||||
- Uninitialized variables and such are checked with Valgrind.
|
- Uninitialized variables and such are checked with Valgrind.
|
||||||
- Bitstream validity is checked with HM.
|
- Bitstream validity is checked with VTM.
|
||||||
- Compilation is checked on GCC and Clang on Linux, and Clang on OSX.
|
- Compilation is checked on GCC and Clang on Linux, and Clang on OSX.
|
||||||
- Windows msys2 and msvc builds are checked automatically on Appveyor.
|
- Windows msys2 and msvc builds are checked automatically on Appveyor.
|
||||||
- If your changes change the bitstream, decode with VTM to check that
|
- If your changes change the bitstream, decode with VTM to check that
|
||||||
|
|
|
@ -36,10 +36,6 @@
|
||||||
|
|
||||||
#include "strategies/avx2/dct-avx2.h"
|
#include "strategies/avx2/dct-avx2.h"
|
||||||
|
|
||||||
#if COMPILE_INTEL_AVX2
|
|
||||||
#include "uvg266.h"
|
|
||||||
#if UVG_BIT_DEPTH == 8
|
|
||||||
#include <immintrin.h>
|
|
||||||
|
|
||||||
#include "strategyselector.h"
|
#include "strategyselector.h"
|
||||||
#include "tables.h"
|
#include "tables.h"
|
||||||
|
@ -56,7 +52,10 @@ extern const int16_t uvg_g_dct_8_t[8][8];
|
||||||
extern const int16_t uvg_g_dct_16_t[16][16];
|
extern const int16_t uvg_g_dct_16_t[16][16];
|
||||||
extern const int16_t uvg_g_dct_32_t[32][32];
|
extern const int16_t uvg_g_dct_32_t[32][32];
|
||||||
|
|
||||||
|
#if COMPILE_INTEL_AVX2
|
||||||
|
#include "uvg266.h"
|
||||||
|
#if UVG_BIT_DEPTH == 8
|
||||||
|
#include <immintrin.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \file
|
* \file
|
||||||
|
@ -940,10 +939,6 @@ static void matrix_i ## type ## _## n ## x ## n ## _avx2(int8_t bitdepth, const
|
||||||
TRANSFORM(dct, 32);
|
TRANSFORM(dct, 32);
|
||||||
ITRANSFORM(dct, 32);
|
ITRANSFORM(dct, 32);
|
||||||
|
|
||||||
#endif // UVG_BIT_DEPTH == 8
|
|
||||||
#endif //COMPILE_INTEL_AVX2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************/
|
/*****************************************************/
|
||||||
/********************** M T S ************************/
|
/********************** M T S ************************/
|
||||||
|
@ -1626,6 +1621,8 @@ static void mts_idct_avx2(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // UVG_BIT_DEPTH == 8
|
||||||
|
#endif //COMPILE_INTEL_AVX2
|
||||||
|
|
||||||
int uvg_strategy_register_dct_avx2(void* opaque, uint8_t bitdepth)
|
int uvg_strategy_register_dct_avx2(void* opaque, uint8_t bitdepth)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,7 +24,10 @@ if(MSVC)
|
||||||
set_property( SOURCE ${TEST_SOURCES} APPEND PROPERTY COMPILE_FLAGS "/arch:AVX2" )
|
set_property( SOURCE ${TEST_SOURCES} APPEND PROPERTY COMPILE_FLAGS "/arch:AVX2" )
|
||||||
add_definitions(-DWIN32_LEAN_AND_MEAN -D_WIN32 -DWIN32 -DWIN64)
|
add_definitions(-DWIN32_LEAN_AND_MEAN -D_WIN32 -DWIN32 -DWIN64)
|
||||||
else()
|
else()
|
||||||
set_property( SOURCE ${TEST_SOURCES} APPEND PROPERTY COMPILE_FLAGS "-mavx2 -mbmi -mpopcnt -mlzcnt -mbmi2" )
|
list(APPEND ALLOW_AVX2 "x86_64" "AMD64")
|
||||||
|
if(${CMAKE_SYSTEM_PROCESSOR} IN_LIST ALLOW_AVX2)
|
||||||
|
set_property( SOURCE ${TEST_SOURCES} APPEND PROPERTY COMPILE_FLAGS "-mavx2 -mbmi -mpopcnt -mlzcnt -mbmi2" )
|
||||||
|
endif()
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(uvg266_tests PUBLIC Threads::Threads)
|
target_link_libraries(uvg266_tests PUBLIC Threads::Threads)
|
||||||
|
|
||||||
|
@ -39,7 +42,5 @@ else()
|
||||||
target_link_libraries(uvg266_tests PUBLIC ${EXTRA_LIBS})
|
target_link_libraries(uvg266_tests PUBLIC ${EXTRA_LIBS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_definitions(-DCOMPILE_INTEL)
|
|
||||||
|
|
||||||
target_link_libraries(uvg266_tests PUBLIC uvg266)
|
target_link_libraries(uvg266_tests PUBLIC uvg266)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue