# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | Friends
dirac::ByteIO Class Reference

Class ByteIO - top-level class for reading/writing bytes to a stream.

`#include <byteio.h>`

Inheritance diagram for dirac::ByteIO:

List of all members.

## Public Member Functions
| ByteIO (bool new_stream=true)
| Default constructor.
| ByteIO (const ByteIO &stream_data)
| Constructor.
virtual | ~ByteIO ()
| Destructor.
virtual void | CollateByteStats (DiracByteStats &dirac_byte_stats)
| Gathers byte-stream statistics.
virtual const std::string | GetBytes ()
| Get bytes in Dirac-bytestream format.
int | GetReadBytePosition () const
| Get position of read stream pointer.
virtual int | GetSize () const
| *Gets size (in bytes)
void | SetByteParams (const ByteIO &byte_io)
| Copies stream source/destination info.
void | ByteAlignOutput ()
| Sync input for byte-alignment.
void | WriteUint (unsigned int value)
| Ouputs an unsigned integer in interleaved exp Golomb format.
void | SetBitsLeft (int left_bits)
| Sets input size in bits.
int | BitsLeft (void)
| Sets input size in bits.

## Protected Member Functions
bool | CanRead () const
bool | GetBit (unsigned char &c, int pos) const
void | SetBit (unsigned char &c, int pos) const
void | SetBits (unsigned char &c, unsigned char bits) const
void | ByteAlignInput ()
| Sync input for byte-alignment.
bool | ReadBool ()
| Reads boolean value.
bool | ReadBoolB ()
| Reads boolean value - bounded i/o.
int | ReadBit ()
| Reads next bit.
int | ReadBitB ()
| Reads next bit - bounded i/o.
unsigned int | ReadNBits (int count)
| Reads next 'count' bits.
void | InputBytes (char *data, int count)
| Reads from stream.
void | FlushInputB ()
| Flushes the bounde input.
int | ReadSint ()
| Reads a signed integer in interleaved exp-Golomb format *return Signed integer read.
int | ReadSintB ()
| Reads a signed integer in interleaved exp-Golomb format from bounded input *return Signed integer read.
unsigned int | ReadUint ()
| Reads an unsigned integer in interleaved exp Golomb format.
unsigned int | ReadUintB ()
| Reads an unsigned integer in interleaved exp Golomb format from bounded input.
unsigned int | ReadUintLit (const int byte_size)
| Reads a fixed length unsigned integer from the stream in big endian.
unsigned char | InputUnByte ()
| Reads a byte from the stream.
std::string | InputUnString (const int count)
| Reads a series of bytes from a stream.
void | WriteBit (const bool &bit)
| Outputs a bit.
int | WriteNBits (unsigned int val)
| Outputs an unsigned integer.
void | WriteNBits (unsigned int val, int count)
| Outputs an n bit integer.
void | OutputBytes (const std::string &bytes)
| Outputs a series of bytes.
void | OutputCurrentByte ()
| Outputs current byte contents.
void | WriteSint (int val)
| Outputs an integer in Golomb signed integer format.
void | WriteUintLit (const unsigned int &value, const int &length)
| Output unsigned int value in big endian format.
void | RemoveRedundantBytes (const int count)
| Removes portion of byte-stream no longer required.
void | SeekGet (const int offset, std::ios_base::seekdir dir)

## Protected Attributes
std::stringstream * | mp_stream
| Input/output steam.

## Private Attributes
unsigned char | m_current_byte
| Char used for temporary storage of op data bits.
int | m_current_pos
| Used to set individual bit within the current header byte.
int | m_num_bytes
| Number of bytes processed.
bool | m_new_stream
| stream alloc flag
int | m_bits_left
| num bits left to read

## Friends
class | ArithCodecBase
| ArithCodec can see internals for getting/setting bits.
class | ArithCodecToVLCAdapter
| VLC entropy coder can see internals for getting/setting bits.

## Constructor & Destructor Documentation

dirac::ByteIO::ByteIO | ( | bool | new_stream = `true` | ) |

Parameters:

  new_stream | Has Creates & owns data buffer

dirac::ByteIO::ByteIO | ( | const ByteIO & | stream_data | ) |

Parameters:

  stream_data | Copies data buffer details

virtual dirac::ByteIO::~ByteIO | ( |  | ) |
| virtual

## Member Function Documentation

int dirac::ByteIO::BitsLeft | ( | void |  | ) |
| inline

Read is limited by this

References m_bits_left.

void dirac::ByteIO::ByteAlignInput | ( |  | ) |
| protected

void dirac::ByteIO::ByteAlignOutput | ( |  | ) |

bool dirac::ByteIO::CanRead | ( |  | ) | const
| inline protected

References mp_stream.

virtual void dirac::ByteIO::CollateByteStats | ( | DiracByteStats & | dirac_byte_stats | ) |
| inline virtual

Parameters:

  dirac_byte_stats | Collates byte information

Reimplemented in dirac::ParseUnitByteIO, dirac::PictureByteIO, dirac::MvDataByteIO, dirac::TransformByteIO, dirac::ComponentByteIO, and dirac::EndOfSequenceByteIO.

References dirac::DiracByteStats::Clear().

void dirac::ByteIO::FlushInputB | ( |  | ) |
| protected

bool dirac::ByteIO::GetBit | ( | unsigned char & | c,
|  | int | pos
| ) |  | const
| inline protected

References BIT_IN_CHAR.

virtual const std::string dirac::ByteIO::GetBytes | ( |  | ) |
| virtual

Reimplemented in dirac::DiracByteStream, dirac::ParseUnitByteIO, dirac::MvDataByteIO, dirac::TransformByteIO, dirac::PictureByteIO, dirac::MvDataElementByteIO, and dirac::SubbandByteIO.

int dirac::ByteIO::GetReadBytePosition | ( |  | ) | const
| inline

References mp_stream.

virtual int dirac::ByteIO::GetSize | ( |  | ) | const
| virtual

Reimplemented in dirac::MvDataByteIO, dirac::ParseUnitByteIO, dirac::TransformByteIO, dirac::MvDataElementByteIO, dirac::PictureByteIO, and dirac::SequenceHeaderByteIO.

void dirac::ByteIO::InputBytes | ( | char * | data,
|  | int | count
| ) |  |
| inline protected

Parameters:

  data | Start of char buffer
  count | Number of bytes to read

References mp_stream.

unsigned char dirac::ByteIO::InputUnByte | ( |  | ) |
| inline protected

References m_num_bytes, and mp_stream.

Referenced by InputUnString().

std::string dirac::ByteIO::InputUnString | ( | const int | count | ) |
| inline protected

References InputUnByte().

void dirac::ByteIO::OutputBytes | ( | const std::string & | bytes | ) |
| inline protected

References m_num_bytes, and mp_stream.

void dirac::ByteIO::OutputCurrentByte | ( |  | ) |
| inline protected

References m_current_byte, m_current_pos, m_num_bytes, and mp_stream.

int dirac::ByteIO::ReadBit | ( |  | ) |
| protected

int dirac::ByteIO::ReadBitB | ( |  | ) |
| protected

bool dirac::ByteIO::ReadBool | ( |  | ) |
| protected

bool dirac::ByteIO::ReadBoolB | ( |  | ) |
| protected

Referenced by dirac::ArithCodecToVLCAdapter::DecodeSymbol().

unsigned int dirac::ByteIO::ReadNBits | ( | int | count | ) |
| protected

Parameters:

  count | number of bits to be read

Returns:
  unsigned interger read

int dirac::ByteIO::ReadSint | ( |  | ) |
| protected

int dirac::ByteIO::ReadSintB | ( |  | ) |
| protected

unsigned int dirac::ByteIO::ReadUint | ( |  | ) |
| protected

Returns:
  Unsigned Integer read

unsigned int dirac::ByteIO::ReadUintB | ( |  | ) |
| protected

Returns:
  Unsigned Integer read

unsigned int dirac::ByteIO::ReadUintLit | ( | const int | byte_size | ) |
| inline protected

Parameters:

  byte_size | Number of bytes in fixed length integer

Returns:
  Unsigned Integer read

References m_num_bytes, and mp_stream.

void dirac::ByteIO::RemoveRedundantBytes | ( | const int | count | ) |
| protected

Parameters:

  count | Number of bytes to be removed from beginning of stream

void dirac::ByteIO::SeekGet | ( | const int | offset,
|  | std::ios_base::seekdir | dir
| ) |  |
| inline protected

References mp_stream.

void dirac::ByteIO::SetBit | ( | unsigned char & | c,
|  | int | pos
| ) |  | const
| inline protected

References BIT_IN_CHAR.

void dirac::ByteIO::SetBits | ( | unsigned char & | c,
|  | unsigned char | bits
| ) |  | const
| inline protected

void dirac::ByteIO::SetBitsLeft | ( | int | left_bits | ) |
| inline

Read is limited by this

References m_bits_left.

void dirac::ByteIO::SetByteParams | ( | const ByteIO & | byte_io | ) |

Parameters:

  byte_io | Byte source/destination

void dirac::ByteIO::WriteBit | ( | const bool & | bit | ) |
| protected

Parameters:

  bit | 1/0 Output

Referenced by dirac::ArithCodecToVLCAdapter::EncodeSymbol(), and dirac::ArithCodecBase::EncodeSymbol().

int dirac::ByteIO::WriteNBits | ( | unsigned int | val | ) |
| protected

Parameters:

  val | Integer to be output

Returns:
  number of bits written

void dirac::ByteIO::WriteNBits | ( | unsigned int | val,
|  | int | count
| ) |  |
| protected

Parameters:

  val | Unsigned Integer to be output
  count | number of bits to be written

void dirac::ByteIO::WriteSint | ( | int | val | ) |
| protected

Parameters:

  val | Integer to be output

void dirac::ByteIO::WriteUint | ( | unsigned int | value | ) |

Parameters:

  value | Integer to be output

void dirac::ByteIO::WriteUintLit | ( | const unsigned int & | value,
|  | const int & | length
| ) |  |
| inline protected

Parameters:

  value | Integer to be output
  length | number of bytes in val to output

References m_num_bytes, and mp_stream.

## Friends And Related Function Documentation

friend class ArithCodecBase
| friend

friend class ArithCodecToVLCAdapter
| friend

## Member Data Documentation

int dirac::ByteIO::m_bits_left
| private

Referenced by BitsLeft(), and SetBitsLeft().

unsigned char dirac::ByteIO::m_current_byte
| private

Referenced by OutputCurrentByte().

int dirac::ByteIO::m_current_pos
| private

Referenced by OutputCurrentByte().

bool dirac::ByteIO::m_new_stream
| private

int dirac::ByteIO::m_num_bytes
| private

Referenced by InputUnByte(), OutputBytes(), OutputCurrentByte(), ReadUintLit(), and WriteUintLit().

std::stringstream* dirac::ByteIO::mp_stream
| protected

Referenced by CanRead(), GetReadBytePosition(), InputBytes(), InputUnByte(), OutputBytes(), OutputCurrentByte(), ReadUintLit(), SeekGet(), and WriteUintLit().

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

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