Dirac - A Video Codec

Created by the British Broadcasting Corporation.


Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
dirac::ArithCodecBase Class Reference

#include <arith_codec.h>

Inheritance diagram for dirac::ArithCodecBase:
Inheritance graph
[legend]
Collaboration diagram for dirac::ArithCodecBase:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ArithCodecBase (ByteIO *p_byteio, size_t number_of_contexts)
 Constructor.
virtual ~ArithCodecBase ()
 Destructor.

Protected Member Functions

void InitEncoder ()
 Initialises the Encoder.
void EncodeSymbol (const bool symbol, const int context_num)
 encodes a symbol and writes to output
void EncodeUInt (const unsigned int value, const int bin1, const int max_bin)
void EncodeSInt (const int value, const int bin1, const int max_bin)
void FlushEncoder ()
 flushes the output of the encoder.
int ByteCount () const
void InitDecoder (int num_bytes)
 Initialise the Decoder.
bool DecodeSymbol (int context_num)
 Decodes a symbol given a context number.
unsigned int DecodeUInt (const int bin1, const int max_bin)
int DecodeSInt (const int bin1, const int max_bin)

Protected Attributes

std::vector< Contextm_context_list
 List of contexts.

Private Member Functions

 ArithCodecBase (const ArithCodecBase &cpy)
 private, bodyless copy constructor: class should not be copied
ArithCodecBaseoperator= (const ArithCodecBase &rhs)
 private, bodyless copy operator=: class should not be assigned
void ReadAllData (int num_bytes)
 Read all the data in.
bool InputBit ()
 Read in a bit of data.

Private Attributes

unsigned int m_scount
unsigned int m_low_code
 Start of the current code range.
unsigned int m_range
 Length of the current code range.
ByteIOm_byteio
 Input/output stream of Dirac-format bytes.
int m_underflow
 Number of underflow bits.
char * m_decode_data_ptr
 A pointer to the data for reading in.
char * m_data_ptr
 A point to the byte currently being read.
int m_input_bits_left
 The index of the bit of the byte being read.
unsigned int m_code
 The present input code.

Constructor & Destructor Documentation

dirac::ArithCodecBase::ArithCodecBase ( ByteIO p_byteio,
size_t  number_of_contexts 
)

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

Parameters:
p_byteioinput/output for encoded bits
number_of_contextsthe number of contexts used
virtual dirac::ArithCodecBase::~ArithCodecBase ( )
virtual

Destructor is virtual as this class is abstract.

dirac::ArithCodecBase::ArithCodecBase ( const ArithCodecBase cpy)
private

Member Function Documentation

int dirac::ArithCodecBase::ByteCount ( ) const
protected
int dirac::ArithCodecBase::DecodeSInt ( const int  bin1,
const int  max_bin 
)
inlineprotected

References DecodeSymbol(), and DecodeUInt().

bool dirac::ArithCodecBase::DecodeSymbol ( int  context_num)
inlineprotected
unsigned int dirac::ArithCodecBase::DecodeUInt ( const int  bin1,
const int  max_bin 
)
inlineprotected

References DecodeSymbol().

Referenced by DecodeSInt().

void dirac::ArithCodecBase::EncodeSInt ( const int  value,
const int  bin1,
const int  max_bin 
)
inlineprotected

References EncodeSymbol(), and EncodeUInt().

void dirac::ArithCodecBase::EncodeSymbol ( const bool  symbol,
const int  context_num 
)
inlineprotected
void dirac::ArithCodecBase::EncodeUInt ( const unsigned int  value,
const int  bin1,
const int  max_bin 
)
inlineprotected

References EncodeSymbol().

Referenced by EncodeSInt().

void dirac::ArithCodecBase::FlushEncoder ( )
protected
void dirac::ArithCodecBase::InitDecoder ( int  num_bytes)
protected
void dirac::ArithCodecBase::InitEncoder ( )
protected
bool dirac::ArithCodecBase::InputBit ( )
inlineprivate

References m_data_ptr, and m_input_bits_left.

Referenced by DecodeSymbol().

ArithCodecBase& dirac::ArithCodecBase::operator= ( const ArithCodecBase rhs)
private
void dirac::ArithCodecBase::ReadAllData ( int  num_bytes)
private

Member Data Documentation

ByteIO* dirac::ArithCodecBase::m_byteio
private

Referenced by EncodeSymbol().

unsigned int dirac::ArithCodecBase::m_code
private

Referenced by DecodeSymbol().

std::vector<Context> dirac::ArithCodecBase::m_context_list
protected

Referenced by DecodeSymbol(), and EncodeSymbol().

char* dirac::ArithCodecBase::m_data_ptr
private

Referenced by InputBit().

char* dirac::ArithCodecBase::m_decode_data_ptr
private
int dirac::ArithCodecBase::m_input_bits_left
private

Referenced by InputBit().

unsigned int dirac::ArithCodecBase::m_low_code
private

Referenced by DecodeSymbol(), and EncodeSymbol().

unsigned int dirac::ArithCodecBase::m_range
private

Referenced by DecodeSymbol(), and EncodeSymbol().

unsigned int dirac::ArithCodecBase::m_scount
private
int dirac::ArithCodecBase::m_underflow
private

Referenced by EncodeSymbol().


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

© 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.