# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

# dirac::ArithCodec< T > Class Template Reference

Abstract binary arithmetic coding class. More...

`#include <arith_codec.h>`

Inheritance diagram for dirac::ArithCodec< T >:

List of all members.

## Public Member Functions

- ArithCodec (ByteIO *p_byteio, size_t number_of_contexts)
    Constructor for encoding.
- virtual ~ArithCodec ()
    Destructor.
- int Compress (T &in_data)
    Compresses the input and returns the number of bits written.
- void Decompress (T &out_data, const int num_bytes)
    Decompresses the bitstream and writes into the output.

## Protected Member Functions

- virtual void DoWorkCode (T &in_data)=0
    Does the work of actually coding the data.
- virtual void DoWorkDecode (T &out_data)=0
    virtual decode-only functions ////////////////////////////

## Detailed Description

### template<class T>
class dirac::ArithCodec< T >

This is an abtract binary arithmetic encoding class, used as the base for concrete classes that encode motion vectors and subband residues.

Parameters:

  | T | a container (most probably, or array) type

## Constructor & Destructor Documentation

template<class T >

dirac::ArithCodec< T >::ArithCodec | ( | ByteIO * | p_byteio,
|  | size_t | number_of_contexts |
| ) |  |  | `[inline]`

Creates an ArithCodec object to decode input based on a set of parameters.

Parameters:

  | p_byteio | input/output for encoded bits
  | number_of_contexts | the number of contexts used

template<class T>

virtual dirac::ArithCodec< T >::~ArithCodec | ( |  | ) | `[inline, virtual]`

Destructor is virtual as this class is abstract.

## Member Function Documentation

template<class T>

int dirac::ArithCodec< T >::Compress | ( | T & | in_data | ) | `[inline]`

Compress takes a type T object (a container or array) and compresses it using the abstract function DoWorkCode() which is overridden in subclasses. It returns the number of bits written.

Parameters:

  | in_data | the input to be compressed. Non-const, since the compression may be lossy.

References dirac::ArithCodecBase::ByteCount(), dirac::ArithCodec< T >::DoWorkCode(), dirac::ArithCodecBase::FlushEncoder(), and dirac::ArithCodecBase::InitEncoder().

template<class T>

void dirac::ArithCodec< T >::Decompress | ( | T & | out_data,
|  | const int | num_bytes |
| ) |  |  | `[inline]`

Decompresses the bitstream, up to the number of bytes specified and writes into the output subclasses.

Parameters:

  | out_data | the output into which the decompressed data is written.
  | num_bytes | the number of bytes to be read from the bitstream.

References dirac::ArithCodec< T >::DoWorkDecode(), and dirac::ArithCodecBase::InitDecoder().

template<class T>

virtual void dirac::ArithCodec< T >::DoWorkCode | ( | T & | in_data | ) | `[protected, pure virtual]`

Implemented in dirac::IntraDCBandCodec, dirac::SplitModeCodec, dirac::PredModeCodec, dirac::VectorElementCodec, dirac::DCCodec, and dirac::GenericBandCodec< ArithCodec< CoeffArray > >.

Referenced by dirac::ArithCodec< T >::Compress().

template<class T>

virtual void dirac::ArithCodec< T >::DoWorkDecode | ( | T & | out_data | ) | `[protected, pure virtual]`

Implemented in dirac::IntraDCBandCodec, dirac::SplitModeCodec, dirac::PredModeCodec, dirac::VectorElementCodec, dirac::DCCodec, and dirac::GenericBandCodec< ArithCodec< CoeffArray > >.

Referenced by dirac::ArithCodec< T >::Decompress().

The documentation for this class was generated from the following file:

- arith_codec.h

© 2004 British Broadcasting Corporation. Dirac code licensed under the Mozilla Public License (MPL) Version 1.1.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.