OpenCores
URL https://opencores.org/ocsvn/dirac/dirac/trunk

Subversion Repositories dirac

[/] [dirac/] [tags/] [dirac_0_0_1_0/] [README] - Diff between revs 3 and 12

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 3 Rev 12
README for the Dirac video codec hardware implementation
README for the Dirac video codec hardware implementation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
by Thomas Davies and Peter Bleackley, BBC R&D (dirac@rd.bbc.co.uk)
by Thomas Davies and Peter Bleackley, BBC R&D (dirac@rd.bbc.co.uk)
1. Executive Summary
1. Executive Summary
~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~
Dirac is an open source video codec. It uses a traditional hybrid video codec
Dirac is an open source video codec. It uses a traditional hybrid video codec
architecture, but with the wavelet transform instead of the usual block
architecture, but with the wavelet transform instead of the usual block
transforms.  Motion compensation uses overlapped blocks to reduce block
transforms.  Motion compensation uses overlapped blocks to reduce block
artefacts that would upset the transform coding stage.
artefacts that would upset the transform coding stage.
Dirac can code just about any size of video, from streaming up to HD and
Dirac can code just about any size of video, from streaming up to HD and
beyond, although certain presets are defined for different applications and
beyond, although certain presets are defined for different applications and
standards.  These cover the parameters that need to be set for the encoder to
standards.  These cover the parameters that need to be set for the encoder to
work, such as block sizes and temporal prediction structures, which must
work, such as block sizes and temporal prediction structures, which must
otherwise be set by hand.
otherwise be set by hand.
Dirac is intended to develop into real coding and decoding software and hardware, capable of plugging
Dirac is intended to develop into real coding and decoding software and hardware, capable of plugging
into video processing applications and media players that need compression. It is intended to develop
into video processing applications and media players that need compression. It is intended to develop
into a simple set of reliable but effective coding tools that work over a wide variety of content and
into a simple set of reliable but effective coding tools that work over a wide variety of content and
formats, using well-understood compression techniques, in a clear and accessible software or hardware
formats, using well-understood compression techniques, in a clear and accessible software or hardware
structure. It is not intended as a demonstration or reference coder.
structure. It is not intended as a demonstration or reference coder.
This release of the hardware implementation comprises VHDL modules for a prototype arithmetic coder
This release of the hardware implementation comprises VHDL modules for a prototype arithmetic coder
and decoder. These implement a fixed probability model.
and decoder. These implement a fixed probability model.
2. Documentation
2. Documentation
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
A user guide and a guide to the software is in progress. More details on
A user guide and a guide to the software is in progress. More details on
running the codec can be found at http://dirac.sourceforge.net/
running the codec can be found at http://dirac.sourceforge.net/
Documentation specific to the hardware will be posted the directory /docs.
Documentation specific to the hardware will be posted the directory /docs.
3. Synthesis
3. Synthesis
~~~~~~~~~~
~~~~~~~~~~
  All modules are built in RTL style, and are synthesizable. Modules common to
  All modules are built in RTL style, and are synthesizable. Modules common to
the encoder and the decoder are in /src/common. Modules specific to the encoder are in /src/encoder
the encoder and the decoder are in /src/common. Modules specific to the encoder are in /src/encoder
and those specific to the decoder are in /src/decoder.
and those specific to the decoder are in /src/decoder.
Alongside each vhdl module (.vhd) is a .prj file. This specifies the compilation sequence for the
Alongside each vhdl module (.vhd) is a .prj file. This specifies the compilation sequence for the
module.
module.
The initial development of the vhdl was done with Xilinx ISE Webpack.
The initial development of the vhdl was done with Xilinx ISE Webpack.
4. Simulation
4. Simulation
~~~~~~~~~~~
~~~~~~~~~~~
The encoder may run at clock rates of up to 100MHz, and process an input symbol every 4 clock cycles,
The encoder may run at clock rates of up to 100MHz, and process an input symbol every 4 clock cycles,
thus giving a possible troughput of 25 Msymbol/second. The decoder can run at the same clock rate as
thus giving a possible troughput of 25 Msymbol/second. The decoder can run at the same clock rate as
the encoder, and decode the encoded stream at the same rate that it is produced by the encoder.
the encoder, and decode the encoded stream at the same rate that it is produced by the encoder.
A testbench is provided in /src/testbench, together with a test input file /src/rawdata. This
A testbench is provided in /src/testbench, together with a test input file /src/rawdata. This
testbench provides an end-to end simulation of the encoding and decoding process, for a data stream
testbench provides an end-to end simulation of the encoding and decoding process, for a data stream
with a fixed source entropy of 0.498 bits/symbol. The testbench also provides a process that counts
with a fixed source entropy of 0.498 bits/symbol. The testbench also provides a process that counts
the number of bits produced by the encoder.
the number of bits produced by the encoder.
Simulations have been perfomed with Modelsym XE.
Simulations have been perfomed with Modelsym XE.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.