# 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:

[legend]

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 OutputVarLengthUint (const unsigned int &value)
    Ouputs an unsigned integer in interleaved exp Golomb format.

## 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 InputBit ()
    Reads next bit.
- void InputBytes (char *data, int count)
    Reads from stream.
- int InputVarLengthInt ()
    Reads an integer in interleaved exp-Golomb format return Signed integer read.
- unsigned int InputVarLengthUint ()
    Reads an unsigned integer in interleaved exp Golomb format.
- unsigned int InputFixedLengthUint (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 OutputBit (const bool &bit)
    Outputs a bit.
- void OutputBytes (const std::string &bytes)
    Outputs a series of bytes.
- void OutputCurrentByte ()
    Outputs current byte contents.
- void OutputVarLengthInt (const int val)
    Outputs an integer in Golomb signed integer format.
- void OutputFixedLengthUint (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

## Friends

- class ArithCodecBase
    ArithCodec 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

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

References dirac::DiracByteStats::Clear().

virtual const std::string dirac::ByteIO::GetBytes | ( |  | ) | `[virtual]`

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

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

References mp_stream.

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

Reimplemented in dirac::AccessUnitByteIO, dirac::FrameByteIO, dirac::MvDataByteIO, dirac::MvDataElementByteIO, dirac::ParseUnitByteIO, and dirac::TransformByteIO.

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

Parameters:

  | byte_io | Byte source/destination

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

void dirac::ByteIO::OutputVarLengthUint | ( | const unsigned int & | value | ) |

Parameters:

  | value | Integer to be output

bool dirac::ByteIO::CanRead | ( |  | ) | const`[inline, protected]`

References mp_stream.

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

References BIT_IN_CHAR.

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::ByteAlignInput | ( |  | ) | `[protected]`

bool dirac::ByteIO::InputBit | ( |  | ) | `[protected]`

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.

int dirac::ByteIO::InputVarLengthInt | ( |  | ) | `[protected]`

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

Returns:
  Unsigned Integer read

unsigned int dirac::ByteIO::InputFixedLengthUint | ( | 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.

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::OutputBit | ( | const bool & | bit | ) | `[protected]`

Parameters:

  | bit | 1/0 Output

Referenced by dirac::ArithCodecBase::EncodeSymbol().

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.

void dirac::ByteIO::OutputVarLengthInt | ( | const int | val | ) | `[protected]`

Parameters:

  | val | Integer to be output

void dirac::ByteIO::OutputFixedLengthUint | ( | 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.

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.

## Friends And Related Function Documentation

friend class ArithCodecBase `[friend]`

## Member Data Documentation

std::stringstream* dirac::ByteIO::mp_stream `[protected]`

Referenced by CanRead(), GetReadBytePosition(), InputBytes(), InputFixedLengthUint(), InputUnByte(), OutputBytes(), OutputCurrentByte(), OutputFixedLengthUint(), and SeekGet().

unsigned char dirac::ByteIO::m_current_byte `[private]`

Referenced by OutputCurrentByte().

int dirac::ByteIO::m_current_pos `[private]`

Referenced by OutputCurrentByte().

int dirac::ByteIO::m_num_bytes `[private]`

Referenced by InputFixedLengthUint(), InputUnByte(), OutputBytes(), OutputCurrentByte(), and OutputFixedLengthUint().

bool dirac::ByteIO::m_new_stream `[private]`

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.