JPEG Encoder :: Overview
Project maintainers
Details
Name: mkjpeg
Created: Mar 7, 2009
Updated: Dec 20, 2012
SVN Updated: Oct 3, 2012
SVN: Browse
Latest version: download
Statistics: View
Other project properties
Category: Video controller
Language: VHDL
Development status: Stable
Additional info:
Design done, FPGA proven, Specification done
WishBone Compliant: No
License: LGPL
NEWS
21 AUG 2011
New revision 70. contains new BUF_FIFO contributed Ahmet Tekyildiz which needs circa 9.5 line buffer but achieves performance very close to old design with ~16 lines (8 extra lines). So it heavily reduces on-chip RAM utilization without performance sacrifice.
Also this version contains nearest integer rounding in DCT-2D instead of truncation when bit growth/precision is reduced. Truncation caused 8x8 block artifacts easily visible in very high quality modes (>95% quantization tables). Rounding alleviates this problem.
EV_JPEG_ENC JPEG Compressor
Warning! WebSVN does not work correctly for project, use link below to download latest rev: • DOWNLOAD LATEST REVISION 61 • EV_JPEG_ENC core is intended to encode raw bitmap images into JPEG compliant coded bit stream. JPEG baseline encoding method is used. • LICENSE: GNU LGPL v3.0
Features
• JPEG baseline encoding JPEG ITU-T T.81 | ISO/IEC 10918-1
• Standard JFIF header v 1.01 automatic generation
• Color images only (3 components, RGB 24 or 16 bit, YUV input)
• Two programmable Quantization tables
• Hardcoded Huffman tables (luminance and chrominance)
• 2.3 to 2.7 clock cycles per one input 24 bit pixel @ 50% Quality
• OPB programming and data Host interface
• 4:2:2 subsampling
• Source code target independent, synthesizable RTL VHDL code
• Detailed documentation
Throughput
Example throughput
Measured from JPEG encoding start till encoding done:
• Input image 640x480 24 bit RGB color. New sample loaded every cycle until FIFO full.
• Quantization tables at 50% quality setting
• 7.3 ms processing time @ 100 MHz clock
• 1000/7.3=136 frames per second @ 100 MHz
• Input file size = 921 kB. Output file size = 44 kB (depends on image)
Compression stats (from JPEGSnoop software):
• Compression Ratio: 21.31:1
• Bits per pixel: 1.13:1
100 MHz is achievable under Stratix II S90 for example. Optimization set to performance.
Low Level Design
Here is a quite detailed low level design document for the Core: Low Level Design Document
