This module implements the baseline profile of the H.264 video codec standard.
It supports video resolution up to 1080p. It is capable of decoding video at 60 frames per
second (typically more) at any supported resolution. The design has been
synthesized in 180nm technology. At 100 mHz it requires approximately 4
Lower resolution decoding (720p @ 30 fps) requires approxiamately half the implementation area.
It should be noted that there are some error resiliency features that are not implemented:
* Flexible macroblock ordering
* Arbitrary Slice Ordering
* Redundant Slices
These are intended to be used when streaming video over unreliable
channels, but they don't seem to be commonly supported.
This directory contains the released H.264 source.
This directory contains the build and test infrastructure. Building the
source requires that the Bluespec compiler (bsc) in your executable path.
The code has been tested on the lastest 2007 release. Future releases may
or may not build a functional version of the code. To build the
code type in the test directory:
Testing infrastructure is included in the release. The golden software code
requires g++ 4.1. It will not compile with g++ 4.0 or earlier. Further,
the included software model does not correctly decode 1080p resolution
and possibly other smaller resolutions. Ignore reported decoding errors
at this resolution. Alternatively, you could manually check against the
orignal source image. If you want to run the included test cases, type the
This command will build the hardware and attempt to decode a number of
sample encoded videos of various resolutions, reporting results as it
decodes. The testbench takes several hours to run to completion.
Refer to the source (kind of spotty) and the following URL:
This document contains many useful diagrams and a good description of the
behavior of the system.
- VGA@30fps decoding on FPGA
- 1080p@60fps on FPGA coming soon