Introduction

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.

nvJPEG2000 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 20 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:

nvJPEG2000 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

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/CentOS

9.1

5.14

11.3.1

2.34

8.3

4.18

8.5.0

2.28

7.9

3.10.0

6

2.17

Ubuntu

22.04.1

5.15.0

11.2.0

2.34

20.04.1

5.13.0

9.3.0

2.31

18.04.5

5.4.0

7.5.0

2.27

OpenSUSE Leap

15.4

5.14.21

7.5.0

2.31

SUSE SLES

15.4

5.14.21

7.5.0

2.31

Debian

11.6

5.10.0

10.2.1

2.31

10.13

4.19.0

8.3.0

2.28

Fedora

37

6.07

12.2.1

2.36

  • Windows versions:

    • Windows 10 and Windows Server 2019

    • Support added from version 0.1.0 onwards

Thread Safety

Not all nvJPEG2000 types are thread safe. The following should be instantiated separately for each thread: nvjpeg2kDecodeState_t and nvjpeg2kStream_t