Introduction

The nvJPEG2000 library accelerates the decoding of JPEG 2000 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. Refer to the JPEG 2000 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 subset of JPEG 2000 Part 1:

  • Up to 16 bits per component

  • No of components (channels): 1 or 3

  • Reversible(5-3) and Irreversible(9-7) wavelet transforms

  • Multiple tiles per image

  • Upto 20 quality layers per image

  • Component dimensions within an image should be the same (444 subsampling only)

  • All progression orders are supported

  • Image and tile start coordinates should be 0

  • Tile/Resolution based decoding

  • Partial decoding of tiles

  • jp2 file format and jpeg2000 codestream 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/CentOS

7.8

3.10.0

4.8.5

2.17

8.2

4.18

8.3.1

2.28

Ubuntu

20.04.1

5.4.0

9.3.0

2.32

18.04.5

4.15.0

8.2.0

2.27

16.04.7

4.5.0

5.4.0

2.23

OpenSUSE Leap

15.2

4.12.14

7.4.0

2.26-lp151

SUSE SLES

15.2

4.12.14

7.3.1

2.26

  • 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