Include a pre-rendered pdf version
[dirac-spec-errata.git] / intro.tex
blob6750a78fadd618de2b608d666d8ffbb4bdc09423
1 Dirac is an open video codec developed by the BBC. It has been
2 developed to address the growing complexity and cost of current video
3 compression technologies, which provide greater compression efficiency
4 at the expense of implementing a very large number of tools. Dirac is
5 a powerful and flexible compression system, yet uses only a small number
6 of core tools. A key element of its flexibility is its use of the wavelet
7 multi-resolution transform for compressing pictures and motion-compensated
8 residuals, which allows Dirac to be used across a very wide range of resolutions
9 without enlarging the toolset.
11 Dirac is an Open Source software project, and reference implementations
12 of the decoder and encoder are available at \url{http://sourceforge.net/projects/dirac}.
13 A high-performance implementation, called Schrodinger, is also available
14 open source at \url{http://schrodinger.sourceforge.net}.
16 Dirac offers the following features:
17 \begin{description}
18 \item[Multi-resolution transforms] Data is encoded using the wavelet transform,
19 and packed into the bitstream subband by subband. High compression ratios result
20 in a gradual loss of resolution. Lower resolution output can be obtained
21 for low complexity decoding by extracting only the lower resolution data.
22 \item[Inter and intra frame coding] Pictures can be encoded using motion compensation
23 for low bit rate, or without reference to other pictures for editing, archive
24 and other professional applications.
25 \item[Frame and field coding] Both frames and fields can be coded.
26 \item[Dual syntax] A low delay syntax is available for applications requiring
27 very low, fixed, latency. This can be of the order of a few lines of input
28 or output video. The low delay syntax is suitable for light compression
29 for the re-use of low bandwidth infrastructure, for example carrying
30 HDTV over SD-SDI links. The low delay syntax uses
31 intra coding and simple Variable Length
32 Codes for entropy codes. The core syntax provides much greater compression efficiency
33 at the expense of a whole picture delay. The core syntax can use a highly efficient
34 form of binary adaptive arithmetic coding, as well as motion compensation,
35 for maximum performance.
36 \item[CBR and VBR operation] Dirac supports both constant bit rate and
37 variable bit rate operation.When the low delay syntax is used, the bit
38 rate will be constant for each area (Dirac slice) in a picture to
39 ensure constant latency.
40 \item[Variable bit depths] 8, 10, 12 and 16 bit formats are supported.
41 \item[Multiple chroma sampling formats] 444, 422 and 420 video are all supported.
42 \item[Lossless and RGB coding] A common toolset is used for both lossy and lossless
43 coding. RGB coding is supported via the YCoCg integer color transform.
44 \item[Choice of wavelet filters] A wide range of wavelet filters can be used
45 to trade off performance against complexity. The Daubechies (9,7) filter is
46 supported for compatibility with JPEG2000. A Fidelity filter is provided for
47 improved resolution scalability.
48 \item[Simple stream navigation] The encoded stream contains picture numbers and
49 forms a doubly-linked list with each picture header indicating an offset to
50 the previous and next picture, to support field-accurate high-speed navigation
51 with no parsing or decoding required.
52 \end{description}
53 \section{Scope}
54 \label{introscope}
56 This specification defines the Dirac video compression system through the stream syntax,
57 entropy coding, coefficient unpacking and picture decoding processes. The decoder
58 operations are defined by means of a mixture of pseudocode and mathematical
59 operations.
61 This is version $\SpecVersion$ of the Dirac specification. The document includes
62 a full description of the Dirac stream syntax and decoder operations.
64 Dirac is a long-GOP video codec that uses wavelet transforms and motion compensation
65 together with entropy coding, that can be readily implemented in hardware or software.
66 Dirac is a superset of the proposed SMPTE VC-2 video codec standard which
67 comprises the intra coding parts of this specification.
69 This version is compatible with and extends Version 1 by the addition of motion
70 compensated coding. Version 1 corresponds exactly to the proposed SMPTE VC-2
71 video codec standard.
73 Subsequent versions of this specification may contain additional tools.