NVIDIA nvJPEG2000#
The nvJPEG2000 library accelerates the decoding and encoding of JPEG2000 images on NVIDIA GPUs. The library is built on the CUDA platform and is supported on Pascal+ GPU architectures.
Note
Throughout this document, the terms “CPU” and “Host” are used synonymously. Similarly, the terms “GPU” and “Device” are synonymous.
Decoder#
The library utilizes both CPU and GPU for decoding. Tier 2 decode stage (first stage of decode; please refer to the JPEG2000 specification for details) is run on the CPU. All other stages of the decoding process are offloaded to the GPU.
The nvJPEG2000 decoder supports the following:
JPEG2000 Options:
Up to 16 bits per component
No of components : 4
Reversible(5-3) and irreversible(9-7) wavelet transforms
Multiple tiles per image
Up to 32 layers per image
Chroma sub-sampling types - 444, 422, and 420
All progression orders
Image and tile start coordinates should be 0
Tile/Resolution based decoding
Partial decoding of tiles and images
jp2 file format and jpeg2000 codestream
High throughput jpeg2000(All code-blocks have to be HT code-blocks with one HT set and no refinement)
Features:
Decode multiple images in pipeline mode. Refer to nvJPEG2000-Decoder-Pipelined sample for details.
Color conversion to RGB.
Both planar and interleaved outputs are supported.
Encoder#
The library utilizes both GPU and CPU to create JPEG2000 bitstreams. The encode APIs require that the input image is on device memory, and the compressed bitstream will be written to host memory.
The nvJPEG2000 encoder supports the following:
JPEG2000 options
Up to 16 bits per component
No of components : 4
Reversible(5-3) and irreversible(9-7) wavelet transforms
Multiple tiles per image
Single layer per image
All progression orders
Chroma sub-sampling types - 444, 422, and 420
jp2 file format and jpeg2000 codestream
PSNR based rate control
Features
Both planar and interleaved inputs are supported.
Prerequisites#
CUDA Toolkit version 11.0 and above
CUDA Driver version r450 and above
Platforms Supported#
Linux versions:
Architecture |
Distribution Information |
||||
---|---|---|---|---|---|
Name |
Version |
Kernel |
GCC |
GLIBC |
|
x86_64 |
RHEL/Rocky |
9.1 |
5.14 |
11.3.1 |
2.34 |
8.3 |
4.18 |
8.5.0 |
2.28 |
||
Ubuntu |
24.04 |
6.8.0 |
13.2.0 |
2.39 |
|
22.04 |
5.15.0 |
11.4.0 |
2.34 |
||
20.04 |
5.13.0 |
9.4.0 |
2.31 |
||
OpenSUSE Leap |
15.5 |
5.14.21 |
7.5.0 |
2.31 |
|
SUSE SLES |
15.5 |
5.14.21 |
7.5.0 |
2.31 |
|
Debian |
12.7 |
6.1.0 |
12.2.0 |
2.36 |
|
11.10 |
5.10.0 |
10.2.1 |
2.31 |
||
Fedora |
39 |
6.5.6 |
13.2.1 |
2.38 |
|
arm64-sbsa |
RHEL |
9.2 |
5.14 |
11.3.1 |
2.34 |
8.3 |
4.18 |
8.5.0 |
2.28 |
||
Ubuntu |
24.04 |
6.8.0 |
13.2.0 |
2.39 |
|
22.04 |
5.15.0 |
11.4.0 |
2.35 |
||
20.04 |
5.4.0 |
9.4.0 |
2.31 |
||
SUSE SLES |
15.5 |
5.14.21 |
7.5.0 |
2.31 |
Windows Versions
Windows 10/11.
Tegra
Supported on Jetpack v5.1.3 and above.
Thread Safety#
Not all nvJPEG2000 types are thread safe. The following should be instantiated separately for each thread: nvjpeg2kDecodeState_t, nvjpeg2kStream_t, and nvjpeg2kEncodeState_t.