JPEG 2000 IP-Cores
intoPIX JPEG 2000 encoding and decoding IP-cores respect and protect images with high intrinsic value. Handling simultaneously deep color precisions, high data rates and extensive JPEG2000 encoding know-how, intoPIX IP-cores enable best-in-class picture quality.
intoPIX IP-cores also allow achieving unprecedented performances, ultra high bit rates, frame rates and resolutions while being compliant with the most up-to-date FPGA platforms.
intoPIX IP-cores combine more power, more flexibility and more efficiency with lower consumption, lower temperature dissipation and lower cost.
Benefiting from a modular architecture and completed with a wide range of interfaces, memory, security IP-cores, intoPIX solution provides an easy, timely and cost-effective way to implement JPEG 2000 technology.
JPEG 2000 benefits
- Improved Compression Efficiency
- Mathematically Lossless Compression
- Graceful Degradation
- Robust Transmission
- Easy Post-Production
- Region of Interest (ROI)
- Low Latency
- Constant Quality through Multiple Generations
Our IP-Cores bring together all JPEG 2000 benefits with the hardware compactness and acceleration know-how of intoPIX.
intoPIX JPEG 2000 IP-cores technology
JPEG 2000 Encoder architecture
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.
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.
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).
A first memory buffer is used to provide the most efficient DWT processing. This buffer, containing one DDR2/DDR3-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 DDR2/DDR3-SDRAM memory. The DDR2/DDR3-SDRAM types included will depend on the user specification and required product solution.
An optional memory controller is proposed by intoPIX as Companion IP-Core.
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.
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.
JPEG 2000 Decoder architecture
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.
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.
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.
A frame memory buffer is used at the Inverse Quantizer output and enables an efficient IDWT processing. This buffer, containing a DDR2-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.
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.
Taking advantage of the JPEG 2000 intra-frame coding, the decoder controller can manage the stream at the frame accuracy. 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.