implementation for FPGA & ASIC available today

JPEG 2000 by intoPIX

intoPIX's EMMY® Award-winning JPEG 2000 IP-cores protect high value images. Simultaneously handling deep color, high data rates and extensive JPEG2000 know-how, the IP-cores enable best-in-class picture quality. 

Available for the most recent platforms and process nodes, intoPIX IP-cores allow its users to achieve unprecedented performances in terms of bit rates, frame rates, resolutions, power and scalability.

Benefiting from a modular architecture and completed with a wide range of peripherals and security IP-cores, intoPIX's solutions provide an easy, timely and cost-effective way to implement the JPEG 2000 technology with unique intoPIX added values

Key Features

Silicon Proven

For FPGA & ASIC, it is the most adopted and deployed JPEG2000 solution today

Ultra Low Latency 

"People say zero".

 Stream video with a  point to point latency below 5 milliseconds 

Lossless Quality

Configurable for visually lossless compression down to 20:1 or a pure mathematically lossless compression

HD, 4K, 8K, RAW...

Support any resolutions from SD, HD up to 4K, 8K or even more.

RGB, YUV, RAW-bayer, Monochrome

Flexible & Compact

intoPIX J2K cores are the smallest IP-cores available today.

They can be used for single or multiple streams

ISO 15444-1 & Beyond

 Compliant with many profiles of the J2K parts 1& 2 (DCI, IMF, Broadcast, ...) with additional intoPIX Know-How 

When Image quality is a crucial asset

Discover our JPEG 2000 IP-cores

intoPIX offers a large range of JPEG2000 Encoder / Decoder IP-cores optimized for various applications. Based on all the features that we are supporting, it is possible to provide custom versions to address your specific needs. 

Contact us for your own configuration based on your selected FPGA platforms or ASIC and see hereunder a list of typical configurations:

IP-core Features Overview
IP-core Architecture Overview
IP-core Features Overview


 Image/video features
  • Bit depth: 8, 10, 12, 14, 16
  • Color Space: Any (RGB, YUV, XYZ, YCbCr,...)
  • Color Sampling: 4:0:0, 4:2:0, 4:2:2, 4:4:4, 4:2:2:4, 4:4:4:4
  • Interlaced field, progressive frame
  • Monochrome/Grayscale, 3 and 4 components, Bayer pattern
  • Any resolutions (custom, SD, HD, 2K, 4K, 8K, ...)
 JPEG 2000 compression
(ISO 15444-1 and more)

  • Wavelet transforms: 5/3 and 9/7
  • Reversible (RCT) or irreversible color transforms (ICT)
  • Decomposition levels: up to 6 levels
  • Quantization steps: programmable per level and per component
  • Quality layer: 1 layer
  • Digital Cinema (DCI) compliant - JPEG 2000 Part 1 Amd1
  • Broadcast profile compliant - JPEG 2000 Part 1 Amd3
  • IMF profile compliant - JPEG 2000 Part 1 Amd7
  • Tiling: Single tile
  • Progression Order: CPRL
  • Code Block Size: 32x32, 32x64, 64x32, 64x64, 128x32
  • Contrast sensitivity function
 Quality and Bit Rate Control
  •  Max codestream bitrate configurable IP-core: typically ranging up to 250Mbps, 500Mbps, 1Gbps, 4Gbps, 8Gbps to unlimited for lossless compression
  • Variable bit rate (VBR): The overall bit rate is variable for a selectable constant quality
  • Capped VBR: 9/7 wavelet filter - Constant quality but variable bit rate is capped at a given maximum limit
  • Visually Lossless VBR: 9/7 wavelet filter - Constant Visual Quality - No visually noticeable artifact - 8:1 compression used up to 20:1
  • Nearly Mathematically Lossless (NMLS): 5/3 wavelet reversible transform with an applied maximum bit rate - 3:1 to 5:1 compression
  • True Mathematically Lossless (MLS): 5/3 wavelet reversible transform - no max bit rate - bit to bit lossless compression - 2:1 to 3:1 compression
  • Low latency: configurable from 1 to 2 frames (fields) at encoding; from 0,5 to 1 frame(field) at decoding (ie. 1080p60 or 2160p60 end-to-end is maximum 50ms)
  • Ultra-Low latency (Sub-I-frame): This unique solution comes with the optional quality optimizer mode (IPX-QO) that adds an incredible robustness. Latency goes down to 2/16th of a frame (field) at encoding and to 1/16th of a frame(field) at decoding with    IPX-QO (quality optimizer) (ie. down to 5 milliseconds with end-to-end compression in 1080p60 or 2160p60)
  • Encoder:
    • Up to 64 preloaded configurations and frame per frame control
    • Configuration control: through control bus or through video interface
    • Real-time access to status registers for monitoring and debug
  • Decoder:
    • Up to 16 preloaded channel configurations
    • Configuration control: through control bus or through codestream control packets
    • Real-time access to status registers for monitoring and debug
    • On-the-fly codestream integrity check and error robustness
    • Optional automatic frame repeater or interlacer
    • Auto-downscaling and auto-upscaling capability from HD/2K to UHD/4K
  • Portable to FPGA & ASIC.
  • FPGA: support the latest Xilinx & Intel series and previous series
  • Fully customizable IP-core per application, delivered and silicon proven with intoPIX HDK for fast integration
  • External memory: support DDR3, DDR2, LPDDR2, DDR4
IP-core Architecture Overview

​Encoder Architecture

Click image to enlarge

Multiple Component Transformation (MCT)

The first stage of the encoder is the Multiple Component Transformation, It may be used to improve compression efficiency, by decorreleting the luminance from the chrominance, e.g. converting RGB to YCbCr. 3 modes are accessible: Pass-through, reversible Lossless transform (RCT, prescribed for Lossless encoding)) and the irreversible transform (ICT).. Both, RCT and ICT, transformations are implemented with 18-bit fixed point precision.

Discrete Wavelet Transform (DWT)

A bi-dimensional wavelet decomposition of the sub-bands is performed with either the Le Gall (5/3) filter bank or the Daubechies (9/7) filter bank. The 5/3 filter is recommended for lossless encoding while the 9/7 filter offers a better compression efficiency for lossy encoding. Used with an 18-bit fixed point precision.


The coefficients of the wavelet sub-bands are quantized. The quantization steps are defined by the user and can be different for each sub-band.

Entropy encoder

Each wavelet sub-band is divided into several code-blocks and encoded using an Entropy Encoder. The encoder is divided into two blocks: the Context Modeler and the Arithmetic Encoder. The Context Modeler successively encodes each bitplane of the code-block by sending information describing the neighborhood of each bit to the Arithmetic Encoder. With this information the Arithmetic Encoder encodes each bit in order to generate the compressed bit-stream.

Rate Allocator

In order to maximize image quality within the bitrate boundaries fixed by the user, the Rate Allocator selects the information encoded by the Entropy Encoder that will be included in the final code stream.

JPEG 2000 Generator

The JPEG 2000 Generator is responsible for generating the final codestream so as to provide a fully compliant JPEG 2000 image. This codestream generator is also responsible for the codestream structure accordingly to the scalability order selected by the user: by Resolution (R), by quality Layer (L), by Position (P) or by Component (C).

External memory

A first memory buffer is used to provide the most efficient DWT processing. This buffer, containing one DDR-SDRAM external memory, enables the encoder to provide a buffer of at least one frame. A second memory buffer is then provided to compute efficiently the rate allocation. This buffer is also based on one DDR-SDRAM memory. The DDR-SDRAM types included will depend on the user specification and required product solution.
intoPIX provides the optimal memory controller management that ensures the memory interfacing of the J2K cores and other processing .


Input and output interfaces are based on FIFO protocols, and a burst of two pixels (in RBG, XYZ or YUV) is required at the input interface.

Process Controller

Taking full advantage of JPEG 2000 intra-frame coding, the intoPIX Encoder Process Controller accurately manages the frame stream. When there is no video to encode the processor will continue to provide the latest encoded frame, or stop outputting compressed data according to the user command. This process also configures the different JPEG 2000 options for the full encoding chain.

​Decoder Architecture

Click image to enlarge

JPEG 2000 parser
The JPEG 2000 parser analyses the main and tile-part headers of the JPEG 2000 codestream and sends the compressed bit-stream to the entropy decoder.

Entropy decoder
The reconstruction of each wavelet sub-band divided into several code-blocks is achieved by two blocks: the Context Modeller and the Arithmetic Decoder. The Context Modeller successively decodes each bit-plane of the codeblock by sending information describing the neighbourhood of each bit to the Arithmetic Decoder. With this information, the Arithmetic Decoder decodes the bit-stream.

Inverse Quantizer
The coefficients of the wavelet subbands are inverse quantized. The quantization steps are defined in the main header of the JPEG 2000 file and can be different for each subband.

External memory
A frame memory buffer is used at the Inverse Quantizer output and enables an efficient IDWT processing. This buffer, containing a DDR-SDRAM external memory, always keeps at least one valid frame that can be repeated when convenient.

Inverse Discrete Wavelet Transform (IDWT)
A bidimensional wavelet recomposition of the subbands is achieved. Two filter banks, with a 18-bit fixed point precision, may be used: either the Le Gall (5/3) filter bank prescribed for lossless encoding or either the more complex Daubechies (9/7) filter bank for lossy encoding.

Multiple component transformation (MCT)
In the JPEG 2000 standard, in order to improve compression efficiency, multiple component transformations can be used. Depending on the wavelet filters used, different transformations are defined. The reversible transform (RCT) is used with the 5/3 filter, and the irreversible transform (ICT) with the 9/7 filter. Both transformations are implemented with a 18-bit fixed point precision.

Error Handling
The decoder is designed to detect errors in the input data and detection achieved at the main headers, and at the
coherence of tag trees. When an error is detected, specific error codes are sent to the device managing the decoder. In the case of a corrupted frame codestream, the decoder can try to decode the next frame. This can be repeated until a correct frame is encountered. If no frame can be decoded during the elapsed time determined by the frame rate, the previous correctly decoded frame is sent to the output to prevent display artifact.

Process Control
Taking advantage of the JPEG 2000 intra-frame coding, the decoder controller can manage the stream at the frame accuracy (or below with Ultra Low Latency mode). When there is no data to decode at its input, the decoder can loop on the latest decoded frame, output a black frame or stop to output frames. By controlling the input stream and the output options, the decoder controller can manage pause, step by step, slow-motion, fast forward and rewind, and random access.
Interfaces The input receives data by 32-bit bursts of in Little or Big-Endian representations. A burst of two pixels (RGB, XYZ or YUV) is output. The output clock depends on the sequence frame rate and picture size.

Xilinx FPGA & SoCs IPs

From Spartan to Artix, Kintex, Zynq, Virtex families



Tell us more about your needs.

Intel FPGA & SoCs IPs

From Cyclone to Arria & Stratix families

What our customers say

JPEG 2000 Benefits

  • License-free
  • Improved Compression Efficiency
  • Mathematically Lossless Compression
  • Graceful Degradation
  • Scalability
  • Robust Transmission
  • Region of Interest (ROI)
  • Low Latency
  • Constant Quality through Multiple Generations

Related IPs & SDKs