mjpegZero logo representing an FPGA MJPEG encoder core

mjpegZero: FPGA Motion-JPEG Encoder

A compact baseline-JPEG (MJPEG) encoder in Verilog and VHDL — AXI4-Stream video in, standard JFIF out, no external memory. Free for non-commercial use; mjpegZero PRO scales the same pipeline up to 4Kp60 with hardware rate control.

View on GitHub mjpegZero PRO Get the case study

What mjpegZero does

mjpegZero turns a live video stream into standards-compliant baseline JPEG (ITU-T T.81, JFIF container) inside the FPGA fabric. Each frame is compressed independently, so the output plays anywhere — a browser, VLC, OpenCV, a UVC host — with no custom decoder and no inter-frame state to corrupt.

Diagram: video enters the mjpegZero encoder over AXI4-Stream and passes through input buffer, forward DCT, quantize and zigzag, and Huffman packing stages; a control block sets quality over AXI4-Lite; complete JFIF frames leave over AXI4-Stream, decodable by any browser, VLC, or OpenCV
Streaming encode pipeline: video enters over AXI4-Stream and complete JFIF frames leave over AXI4-Stream — no frame buffer in between.

License: free non-commercial, licensed commercial

The public core is source-available under Apache 2.0 with the Commons Clause: research, education, hobby projects, and open-source work are free. Commercial deployment requires a license from bard0 design — for most products that is mjpegZero PRO, which also buys the performance tier and system integration below; custom terms are available where PRO is not the right shape.

mjpegZero PRO

mjpegZero PRO is the commercial tier of the same encoder: identical standards-compliant JPEG output, scaled to the resolutions and control features a shipping camera product needs.

mjpegZero (open core)mjpegZero PRO
Resolution & rate1080p30-class on low-cost parts Up to 4Kp60
Rate controlQuality register Closed-loop bitrate and frame-rate control in hardware
Runtime configurationQuality (full mode) Quality, restart interval, rate bounds — no rebuild
System integrationEncoder core + demo designs RTP/JPEG + Ethernet streaming reference system
LicenseFree non-commercial (Apache 2.0 + Commons Clause) Commercial license from bard0 design

Evaluating an encoder for a product? Tell us the sensor, resolution, and link budget and we will tell you whether PRO fits — and show it running.

Ask about mjpegZero PRO

The case study

How does it hold up in a real design? The mjpegZero case study (free PDF) walks through the measured resource numbers, the plug-and-play UVC camera reference design, and how the open core scales to the mjpegZero PRO tier for shipping products.

Get the case study (PDF)

Frequently asked questions

What license does mjpegZero use?

Apache 2.0 with the Commons Clause. Research, education, hobby, and open-source use are free. Commercial deployment requires written permission from bard0 design — typically an mjpegZero PRO license or a custom agreement.

What does PRO add over the open-source core?

A higher performance tier (up to 4Kp60), closed-loop bitrate and frame-rate control in hardware, runtime configuration over AXI4-Lite, and the complete RTP/JPEG Ethernet streaming reference system. The JPEG output itself is identical — and PRO tracks every correctness fix in the public core.

Does it need external memory?

No. Line-buffer architecture — no frame buffer, no DDR controller, and encode latency of a handful of video lines rather than frames.

Why MJPEG instead of H.264?

Frame-independent compression gives line-level latency, loss tolerance (a dropped packet damages one frame, not a sequence), a tiny logic footprint, and output any host decodes natively. H.264/H.265 deliver better bandwidth at a given quality, but cost far more logic, external memory, and receiver complexity. For machine vision, inspection, and instrumentation links, the MJPEG trade is often the right one — the case study works through this in detail.


The open core and documentation are on GitHub; the case study has the measured numbers. For commercial licensing or mjpegZero PRO, get in touch.

View on GitHub Contact us

We use analytics and marketing tools to analyze traffic and improve our services. By clicking "Accept", you agree to our use of these tools.