Introduction

The nvJPEG 1.0 library provides high-performance, GPU accelerated JPEG decoding functionality for image formats commonly used in deep learning and hyperscale multimedia applications. The library offers single and batched JPEG decoding capabilities which efficiently utilize the available GPU resources for optimum performance; and the flexibility for users to manage the memory allocation needed for decoding.

The nvJPEG library enables the following functions: use the JPEG image data stream as input; retrieve the width and height of the image from the data stream, and use this retrieved information to manage the GPU memory allocation and the decoding. A dedicated API is provided for retrieving the image information from the raw JPEG image data stream.

Tip: Throughout this document, the terms “CPU” and “Host” are used synonymously. Similarly, the terms “GPU” and “Device” are synonymous.

The nvJPEG library supports the following:

JPEG options:

  • Baseline and Progressive JPEG decoding

  • 8 bits per pixel

  • Huffman bitstream decoding

  • 3 color channels (YCbCr) or 1 color channel (Grayscale)

  • 8- and 16-bit quantization tables

  • The following chroma subsampling for the 3 color channels Y, Cb, Cr (Y, U, V):

    • 4:4:4

    • 4:2:2

    • 4:2:0

    • 4:4:0

    • 4:1:1 and

    • 4:1:0

Features:

  • Hybrid decoding using both the CPU (i.e., host) and the GPU (i.e., device).

  • Input to the library is in the host memory, and the output is in the GPU memory.

  • Single image and batched image decoding.

  • Single phase and multiple phases decoding.

  • Color space conversion.

  • User-provided memory manager for the device allocations.