# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

# 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::ComponentByteIO, dirac::EndOfSequenceByteIO, dirac::MvDataByteIO, dirac::ParseUnitByteIO, dirac::PictureByteIO, and dirac::TransformByteIO.

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::MvDataByteIO, dirac::MvDataElementByteIO, dirac::ParseUnitByteIO, dirac::PictureByteIO, dirac::SubbandByteIO, and dirac::TransformByteIO.

int dirac::ByteIO::GetReadBytePosition | ( |  | ) | const`[inline]`

References mp_stream.

virtual int dirac::ByteIO::GetSize | ( |  | ) | const`[virtual]`

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

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().

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

Parameters:

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

int dirac::ByteIO::WriteNBits | ( | unsigned int | val | ) | `[protected]`

Parameters:

  | val | Integer to be output

Returns:
  number of bits 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.