Home

Jiri Matela Martin Srom
There is a newer version of this page. You can find it here.

GPUJPEG

Authors:

Project Admins:

Description:

The first test implementation of the JPEG image compression standard for NVIDIA GPUs used for real-time transmission of high-definition video.

Overview:

  • It uses NVIDIA CUDA platform.
  • Not optimized yet (it is only the first test implementation).
  • Encoder and decoder use Huffman coder for entropy encoding/decoding.
  • Encoder produces baseline JPEG codestream which consists of proper codestream headers and one scan for each color component without subsampling and it uses restart flags that allows fast parallel encoding. The quality of encoded images can be specified by value 0-100.
  • Decoder can decompress only JPEG codestreams that contains separate scan for each color component which isn't subsampled. If scan contains restart flags, decoder can use parallelism for fast decoding.


  • Encoding of JPEG codestream is divided into following phases:
    1. Input data loading
    2. Preprocessing
    3. Forward DCT
    4. Huffman encoder
    5. Formatting codestream
  • Decoding of JPEG codestream is divided into following phases:
    1. Input data loading
    2. Parsing codestream
    3. Huffman decoder
    4. Inverse DCT
    5. Postprocessing
  • On CPU is implemented:
    • Input data loading
    • Parsing codestream
    • Huffman encoder/decoder (when restart flags are disabled)
    • Output data formatting
  • On GPU is implemented:
    • Preprocessing/Postprocessing (color component parsing, color transformation RGB <-> YCbCr)
    • Forward/Inverse DCT (discrete cosine transform), implementation from NVIDIA NPP library (NVIDIA Performance Primitives)
    • Huffman encoder/decoder (when restart flags are enabled)

MongoDB Logo MongoDB