Skip to content

Commit 93e42c5

Browse files
trybicki-nvjantonguirao
authored andcommitted
Merge branch 'release_v0.7.0' into 'main'
sync with internal nvimagecodec repo release_v0.7.0 branch (commit ab8e40f5) See merge request cuda-hpc-libraries/nvimagecodec-public!9 Signed-off-by: Joaquin Anton Guirao <janton@nvidia.com>
2 parents d1aab59 + 6e39e9e commit 93e42c5

278 files changed

Lines changed: 13677 additions & 4149 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitattributes

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
*.bmp filter=lfs diff=lfs merge=lfs -text
1010
*.svs filter=lfs diff=lfs merge=lfs -text
1111
*.pptx filter=lfs diff=lfs merge=lfs -text
12-
12+
*.scn filter=lfs diff=lfs merge=lfs -text
13+
*.bif filter=lfs diff=lfs merge=lfs -text
1314
*.ppm -text
1415
*.pbm -text
1516
*.pgm -text
17+
*.dcm filter=lfs diff=lfs merge=lfs -text

.github/ISSUE_TEMPLATE/bug_report_form.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ body:
2828
attributes:
2929
label: Version
3030
description: What version of nvImageCodec are you running?
31-
placeholder: "example: 0.6.0"
31+
placeholder: "example: 0.7.0"
3232
validations:
3333
required: true
3434

CMakeLists.txt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
1818
include(CMakeDependentOption)
1919

2020
set(NVIMGCODEC_PROJECT_NAME "nvimgcodec")
21-
set(NVIMGCODEC_VERSION "0.6.0")
21+
set(NVIMGCODEC_VERSION "0.7.0")
2222

2323
if (NVIMGCODEC_FLAVOR)
2424
set(NVIMGCODEC_FLAVOR "${NVIMGCODEC_FLAVOR}") # could be nightly, weekly, etc if necessary
@@ -34,7 +34,7 @@ endif()
3434

3535
if (NOT NVIMGCODEC_WHL_PLATFORM_NAME)
3636
if(UNIX)
37-
set(NVIMGCODEC_WHL_PLATFORM_NAME "manylinux2014_${ARCH}")
37+
set(NVIMGCODEC_WHL_PLATFORM_NAME "manylinux_2_28_${ARCH}")
3838
else()
3939
set(NVIMGCODEC_WHL_PLATFORM_NAME "win_amd64")
4040
endif()
@@ -74,12 +74,6 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
7474
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "" "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
7575
endif()
7676

77-
if(WIN32)
78-
# XXX: cmake appends /MT after /MD that produces D9025 warnings about overriding flags, hence...
79-
string(REGEX REPLACE "/MD " "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
80-
string(REGEX REPLACE "/MDd " "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
81-
endif()
82-
8377
option(BUILD_LIBRARY "Build library" ON)
8478
log_option_value(BUILD_LIBRARY)
8579
option(BUILD_TEST "Build tests" ON)
@@ -315,6 +309,15 @@ set(CMAKE_CUDA_EXTENSIONS OFF)
315309
list(APPEND CMAKE_BUILD_RPATH $ORIGIN)
316310
list(APPEND CMAKE_INSTALL_RPATH $ORIGIN)
317311

312+
if(UNIX)
313+
# CXX flags
314+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -fvisibility=hidden -Wl,--exclude-libs,ALL")
315+
elseif(MSVC)
316+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
317+
message(STATUS "Added parallel build arguments to CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
318+
endif()
319+
320+
318321
include_directories(
319322
${PROJECT_SOURCE_DIR}
320323
${PROJECT_SOURCE_DIR}/include

README.md

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# nvImageCodec
22

3-
![Version](https://img.shields.io/badge/Version-v0.6.0--beta-blue)
3+
![Version](https://img.shields.io/badge/Version-v0.7.0--beta-blue)
44
[![License](https://img.shields.io/badge/License-Apache_2.0-yellogreen.svg)](https://opensource.org/licenses/Apache-2.0)
55

66
![Platform](https://img.shields.io/badge/Platform-linux--x86__64_%7C_linux--aarch64_%7C_windows--64_wsl2_%7C_windows--64-blue)
77

8-
[![Cuda](https://img.shields.io/badge/CUDA-v11.8_%7c_v12.8-%2376B900?logo=nvidia)](https://developer.nvidia.com/cuda-toolkit-archive)
9-
[![GCC](https://img.shields.io/badge/GCC->=v9.0-yellow)](https://gcc.gnu.org/gcc-9/)
8+
[![Cuda](https://img.shields.io/badge/CUDA-v12.0_%7c_v13.0-%2376B900?logo=nvidia)](https://developer.nvidia.com/cuda-toolkit-archive)
9+
[![GCC](https://img.shields.io/badge/GCC->=v14.0-yellow)](https://gcc.gnu.org/gcc-9/)
1010
[![CMake](https://img.shields.io/badge/CMake->=v3.18-%23008FBA?logo=cmake)](https://cmake.org/)
1111

1212

13-
[![Python](https://img.shields.io/badge/python-v3.8_%7c_v3.9_%7c_v3.10_%7c_v3.11_%7c_v3.12_%7c_v3.13_%7c_v3.13t-blue?logo=python)](https://www.python.org/)
13+
[![Python](https://img.shields.io/badge/python-v3.9_%7c_v3.10_%7c_v3.11_%7c_v3.12_%7c_v3.13_%7c_v3.13t_%7c_v3.14_%7c_v3.14t-blue?logo=python)](https://www.python.org/)
1414
![PyPI - Wheel](https://img.shields.io/pypi/wheel/nvidia-nvimgcodec-cu12?pypiBaseUrl=https%3A%2F%2Fpypi.org&label=PyPI&link=https%3A%2F%2Fpypi.org%2Fsearch%2F%3Fq%3Dnvidia-nvimgcodec-cu12)
1515

1616

@@ -30,16 +30,21 @@ This nvImageCodec release includes the following key features:
3030
Currently there are following native codec extensions:
3131

3232
- nvjpeg_ext
33-
3433
- Hardware jpeg decoder
34+
- Hardware jpeg encoder (on Jetson Thor)
3535
- CUDA jpeg decoder
3636
- CUDA lossless jpeg decoder
3737
- CUDA jpeg encoder
3838

3939
- nvjpeg2k_ext
4040

4141
- CUDA jpeg 2000 decoder (including High Throughput Jpeg2000)
42-
- CUDA jpeg 2000 encoder
42+
- CUDA jpeg 2000 encoder (including High Throughput Jpeg2000)
43+
44+
- nvtiff_ext
45+
46+
- CUDA TIFF decoder
47+
- CUDA TIFF encoder
4348

4449
- nvbmp_ext (as an example extension module)
4550

@@ -62,13 +67,13 @@ Additionally as a fallback there are following 3rd party codec extensions:
6267

6368
- opencv_ext
6469

65-
- CPU jpeg decoder
66-
- CPU jpeg2k_decoder
67-
- CPU png decoder
68-
- CPU bmp decoder
69-
- CPU pnm decoder
70-
- CPU tiff decoder
71-
- CPU webp decoder
70+
- CPU jpeg decoder & encoder
71+
- CPU jpeg2k_decoder & encoder
72+
- CPU png decoder & encoder
73+
- CPU bmp decoder & encoder
74+
- CPU pnm decoder & encoder
75+
- CPU tiff decoder & encoder
76+
- CPU webp decoder & encoder
7277

7378

7479
## Pre-requisites
@@ -77,88 +82,84 @@ This section describes the recommended dependencies to use nvImageCodec.
7782

7883
- Linux distro:
7984
- x86_64
80-
- Debian 11, 12
81-
- Fedora 39
85+
- Debian 12
86+
- Fedora 41
8287
- RHEL 8, 9
8388
- OpenSUSE 15
8489
- SLES 15
85-
- Ubuntu 20.04, 22.04
90+
- Ubuntu 20.04, 22.04, 24.04
8691
- WSL2 Ubuntu 20.04
8792
- arm64-sbsa
8893
- RHEL 8, 9
8994
- SLES 15
90-
- Ubuntu 20.04, 22.04
91-
- aarch64-jetson (CUDA Toolkit >= 12.0)
95+
- Ubuntu 20.04, 22.04, 24.04
96+
- aarch64-jetson (CUDA Toolkit >= 12.1, < 13.0)
9297
- Ubuntu 22.04
98+
- NVIDIA driver >= 530.30.02
9399
- Windows
94100
- x86_64
95-
- [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)
96-
- NVIDIA driver >= 520.56.06
97-
- CUDA Toolkit > = 11.8
98-
- nvJPEG2000 >= 0.8.0
99-
- Python >= 3.8
101+
- [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)
102+
- NVIDIA driver >= 531.14
103+
- CUDA Toolkit >= 12.1
104+
- GCC >= 14.0
105+
- Python >= 3.9
100106

101107
## Install nvImageCodec library
102108

103109
You can download and install the appropriate built binary packages from the [nvImageCodec Developer Page](https://developer.nvidia.com/nvimgcodec-downloads) or install nvImageCodec Python from PyPI as it is described below.
104110

105-
| CUDA version | Instructions |
106-
| -----------------------------|--------------------------------------------------- |
107-
| CUDA 11.x | `pip install nvidia-nvimgcodec-cu11` |
108-
| CUDA 12.x | `pip install nvidia-nvimgcodec-cu12` |
109-
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvimgcodec-tegra-cu12` |
111+
| CUDA version | Instructions |
112+
| -----------------------------|------------------------------------------------|
113+
| CUDA 12.x, 13.x | `pip install nvidia-nvimgcodec-cu{12, 13}` |
114+
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvimgcodec-tegra-cu{12}` |
110115

111116
### Installing optional dependencies
112117
-----------------------------
113118
You can also install optional dependencies to run the nvjpeg, nvjpeg2k and nvtiff plugins.
114119

115120
To install nvImageCodec with all the optional dependencies, you can do
116121

117-
| CUDA version | Instructions |
118-
| -----------------------------|--------------------------------------------------- |
119-
| CUDA 11.x | `pip install nvidia-nvimgcodec-cu11[all]` |
120-
| CUDA 12.x | `pip install nvidia-nvimgcodec-cu12[all]` |
121-
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvimgcodec-tegra-cu12[all]` |
122+
| CUDA version | Instructions |
123+
| -----------------------------|---------------------------------------------------|
124+
| CUDA 12.x, 13.x | `pip install nvidia-nvimgcodec-cu{12, 13}[all]` |
125+
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvimgcodec-tegra-cu{12}[all]` |
122126

123127
Alternatively, you can specify a subset of the dependencies: `nvjpeg`, `nvjpeg2k`, `nvtiff`. Here are some examples:
124128

125-
| CUDA version | Instructions |
126-
| --------------------------------------|---------------------------------------------------------------------- |
127-
| nvjpeg2k extension support | `pip install nvidia-nvimgcodec-cu11[nvjpeg2k]` |
128-
| nvjpeg2k and nvtiff extension support | `pip install nvidia-nvimgcodec-cu11[nvjpeg2k+nvtiff]` |
129+
| CUDA version | Instructions |
130+
| --------------------------------------|-------------------------------------------------------------------|
131+
| nvjpeg2k extension support | `pip install nvidia-nvimgcodec-cu{12, 13}[nvjpeg2k]` |
132+
| nvjpeg2k and nvtiff extension support | `pip install nvidia-nvimgcodec-cu{12, 13}[nvjpeg2k+nvtiff]` |
129133

130134
In the following subsections, you can see how to install those dependencies manually, instead of relying on nvimagecodec's "extra" packages.
131135

132136
### Manual installation of nvJPEG library
133137

134138
If you do not have CUDA Toolkit installed, or you would like install nvJPEG library independently, you can install it manually as a Python package
135139

136-
| CUDA version | Instructions |
137-
| ----------------|--------------------------------------------------- |
138-
| CUDA 11.x | `pip install nvidia-nvjpeg-cu11` |
139-
| CUDA 12.x | `pip install nvidia-nvjpeg-cu12` |
140+
| CUDA version | Instructions |
141+
| ----------------------|------------------------------------------------|
142+
| CUDA 12.x, 13.x | `pip install nvidia-nvjpeg-cu{12, 13}` |
140143

141144
### Manual installation of nvJPEG2000 library
142145

143146
[nvJPEG2000 library](https://developer.nvidia.com/nvjpeg2000-downloads) can be installed in the system, or installed as a Python package. For the latter, follow the instructions below.
144147

145-
| CUDA version | Instructions |
146-
| ----------------------------------|--------------------------------------------------- |
147-
| CUDA 11.x | `pip install nvidia-nvjpeg2k-cu11` |
148-
| CUDA 12.x | `pip install nvidia-nvjpeg2k-cu12` |
149-
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvjpeg2k-tegra-cu12` |
148+
| CUDA version | Instructions |
149+
| ----------------------------|----------------------------------------------|
150+
| CUDA 12.x, 13.x | `pip install nvidia-nvjpeg2k-cu{12, 13}` |
151+
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvjpeg2k-tegra-cu{12}` |
150152

151153
Please see also [nvJPEG2000 installation documentation](https://docs.nvidia.com/cuda/nvjpeg2000/userguide.html#installing-nvjpeg2000) for more information.
152154

153155
### Manual installation of nvTIFF library
154156

155157
[nvTIFF library](https://developer.nvidia.com/nvtiff-downloads) can be installed in the system, or installed as a Python package. For the latter, follow the instructions below.
156158

157-
| CUDA version | Instructions |
158-
| ----------------------------------|--------------------------------------------------- |
159-
| CUDA 11.x | `pip install nvidia-nvtiff-cu11` |
160-
| CUDA 12.x | `pip install nvidia-nvtiff-cu12` |
161-
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvtiff-tegra-cu12` |
159+
| CUDA version | Instructions |
160+
| -----------------------------|--------------------------------------------|
161+
| CUDA 12.x, 13.x | `pip install nvidia-nvtiff-cu{12, 13}` |
162+
| CUDA 12.x (Tegra platforms) | `pip install nvidia-nvtiff-tegra-cu{12}` |
162163

163164
Please see also [nvTIFF installation documentation](https://docs.nvidia.com/cuda/nvtiff/userguide.html#installing-nvtiff) for more information.
164165

@@ -167,10 +168,9 @@ Please see also [nvTIFF installation documentation](https://docs.nvidia.com/cuda
167168
[nvCOMP library](https://developer.nvidia.com/nvcomp-download) can be installed in the system, or installed as a Python package. For the latter, follow the instructions below.
168169
nvCOMP is required if you want to use nvTIFF with images that use Deflate compression.
169170

170-
| CUDA version | Instructions |
171-
| ----------------------------------|--------------------------------------------------- |
172-
| CUDA 11.x | `pip install nvidia-nvcomp-cu11` |
173-
| CUDA 12.x | `pip install nvidia-nvcomp-cu12` |
171+
| CUDA version | Instructions |
172+
| -----------------------------|------------------------------------------------|
173+
| CUDA 12.x, 13.x | `pip install nvidia-libnvcomp-cu{12, 13}` |
174174

175175
Please see also [nvCOMP installation documentation](https://docs.nvidia.com/cuda/nvcomp/installation.html) for more information.
176176

@@ -182,13 +182,15 @@ Please see also [nvCOMP installation documentation](https://docs.nvidia.com/cuda
182182

183183
### Additional pre-requisites
184184
- Linux
185-
- GCC >= 9.4
185+
- GCC >= 14.0
186186
- cmake >= 3.18
187187
- patchelf >= 0.17.2
188188
- Windows
189189
- [Microsoft Visual Studio 2022 Build Tools](https://aka.ms/vs/17/release/vs_buildtools.exe)
190190
- Dependencies for extensions. If you would not like to build particular extension you can skip it.
191-
- nvJPEG2000 >= 0.8.0
191+
- nvJPEG2000 >= 0.9.0
192+
- nvTIFF >= 0.5.1
193+
- nvCOMP >= 5.0.0
192194
- libjpeg-turbo >= 2.0.0
193195
- libtiff >= 4.5.0
194196
- opencv >= 4.9.0
@@ -259,17 +261,17 @@ This will generate in build directory *.zip or *tar.xz files
259261
#### Tar file installation
260262

261263
```
262-
tar -xvf nvimgcodec-0.6.0.0-cuda12-x86_64-linux-lib.tar.gz -C /opt/nvidia/
264+
tar -xvf nvimgcodec-0.7.0.0-cuda12-x86_64-linux-lib.tar.gz -C /opt/nvidia/
263265
```
264266

265267
#### DEB File Installation
266268
```
267-
sudo apt-get install -y ./nvimgcodec-0.6.0.0-cuda12-x86_64-linux-lib.deb
269+
sudo apt-get install -y ./nvimgcodec-0.7.0.0-cuda12-x86_64-linux-lib.deb
268270
```
269271
#### Python WHL File Installation
270272

271273
```
272-
pip install nvidia_nvimgcodec_cu12-0.6.0-py3-none-manylinux2014_x86_64.whl
274+
pip install nvidia_nvimgcodec_cu12-0.7.0-py3-none-manylinux_2_28_x86_64.whl
273275
```
274276

275277
### Installation from sources
@@ -329,7 +331,7 @@ Run Python API tests
329331
First install python wheel. You would also need to have installed all Python tests dependencies (see Dockerfiles).
330332

331333
```
332-
pip install nvidia_nvimgcodec_cu12-0.6.0.x-py3-none-manylinux2014_x86_64.whl
334+
pip install nvidia_nvimgcodec_cu12-0.7.0.x-py3-none-manylinux_2_28_x86_64.whl
333335
```
334336

335337
Run tests

cmake/Dependencies.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ if (BUILD_NVTIFF_EXT)
9292
if (WITH_DYNAMIC_NVTIFF)
9393
include(FetchContent)
9494
FetchContent_Declare(
95-
nvtiff_headers
96-
URL https://developer.download.nvidia.com/compute/nvtiff/redist/libnvtiff/linux-x86_64/libnvtiff-linux-x86_64-0.5.1.75_cuda12-archive.tar.xz
97-
URL_HASH SHA512=66332d1cb32d428b8f7fce8ebaf9d44caa01d85f77d880c827ccf15459f3164e6dcfabfb88e4a0c2b0916ef83161c2d9f8990bebb8d61aca938cd9199b514752
95+
nvtiff_headers
96+
URL https://developer.download.nvidia.com/compute/nvtiff/redist/libnvtiff/linux-x86_64/libnvtiff-linux-x86_64-0.6.0.78_cuda12-archive.tar.xz
97+
URL_HASH SHA512=95250f9ee6040adbabf3493a288f4020ce92cb83b33b4163949276bd1fbffbac49e16d39ea38ec8048f792abd64056a76ba62ef4bc84c43487e4f50068df7d1c
9898
)
9999
FetchContent_Populate(nvtiff_headers)
100100
set(NVTIFF_SEARCH_PATHS "${nvtiff_headers_SOURCE_DIR}/include")

cmake/Utils.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ function(build_per_python_lib)
109109

110110
if(NOT DEFINED PYTHON_VERSIONS)
111111
if (UNIX)
112-
set (PYTHON_VERSIONS "3.8;3.9;3.10;3.11;3.12;3.13;3.13t")
112+
set (PYTHON_VERSIONS "3.9;3.10;3.11;3.12;3.13;3.13t;3.14;3.14t")
113113
else()
114-
set (PYTHON_VERSIONS "3.8;3.9;3.10;3.11;3.12;3.13")
114+
set (PYTHON_VERSIONS "3.9;3.10;3.11;3.12;3.13;3.14")
115115
endif()
116116
endif(NOT DEFINED PYTHON_VERSIONS)
117117

0 commit comments

Comments
 (0)