# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

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

Represents a collection of data in a Dirac bytestream that can be parsed as a self-contained unit.

`#include <parseunit_byteio.h>`

Inheritance diagram for dirac::ParseUnitByteIO:

List of all members.

## Public Member Functions
| ParseUnitByteIO ()
| Constructor.
| ParseUnitByteIO (const ByteIO &byte_io)
| Constructor.
| ParseUnitByteIO (const ParseUnitByteIO &parseunit_byteio)
| Constructor.
| ~ParseUnitByteIO ()
| Destructor.
virtual void | CollateByteStats (DiracByteStats &dirac_byte_stats)
| Gathers byte stats on the parse-unit data.
bool | Input ()
| Reads from byte-stream to find parse data.
bool | IsValid ()
| Accesses validity of a unit by comparing it with an adjacent unit.
bool | CanSkip ()
| Can Skip past the entire parse-unit.
virtual const std::string | GetBytes ()
| Gets string containing coded bytes.
void | SetAdjacentParseUnits (ParseUnitByteIO *p_prev_parseunit)
| Set next/previous parse-unit values.
virtual int | GetSize () const
| *Gets size (in bytes)
int | GetNextParseOffset () const
| Gets expected number of bytes to start of next parse-unit.
int | GetPreviousParseOffset () const
| Gets number of bytes to start of previous parse-unit.
virtual ParseUnitType | GetType () const
| Gets parse-unit type.
bool | IsSeqHeader () const
| Returns true is parse unit is a Sequence Header.
bool | IsEndOfSequence () const
| Returns true is parse unit is an End of Sequence unit.
bool | IsAuxiliaryData () const
| Returns true is parse unit is Auxiliary Data.
bool | IsPaddingData () const
| Returns true is parse unit is Padding data.
bool | IsPicture () const
| Returns true is parse unit is Picture data.
bool | IsLowDelay () const
| Returns true is parse unit is Low Delay Sybtax unit.
bool | IsCoreSyntax () const
| Returns true is parse unit is Core syntax unit.
bool | IsUsingAC () const
| Returns true is parse unit uses Arithmetic coding.
Public Member Functions inherited from dirac::ByteIO
| ByteIO (bool new_stream=true)
| Default constructor.
| ByteIO (const ByteIO &stream_data)
| Constructor.
virtual | ~ByteIO ()
| Destructor.
int | GetReadBytePosition () const
| Get position of read stream pointer.
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
virtual int | CalcNextUnitOffset ()
| Calculates number of bytes to start of next unit.
virtual unsigned char | CalcParseCode () const
| Pure virtual method for calculating parse-code.
bool | SyncToUnitStart ()
| Locates start of parse-unit.
unsigned char | GetParseCode () const
| Get parse code.
Protected Member Functions inherited from dirac::ByteIO
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)

## Private Attributes
int | m_previous_parse_offset
| Number of bytes to next parse-unit.
int | m_next_parse_offset
| Number of bytes to previous parse-unit.
unsigned char | m_parse_code
| Parse-type-identifier.

## Additional Inherited Members
Protected Attributes inherited from dirac::ByteIO
std::stringstream * | mp_stream
| Input/output steam.

## Constructor & Destructor Documentation

dirac::ParseUnitByteIO::ParseUnitByteIO | ( |  | ) |

dirac::ParseUnitByteIO::ParseUnitByteIO | ( | const ByteIO & | byte_io | ) |

Parameters:

  byte_io | Stream parameters

dirac::ParseUnitByteIO::ParseUnitByteIO | ( | const ParseUnitByteIO & | parseunit_byteio | ) |

Parameters:

  parseunit_byteio | Parse-unit parameters

dirac::ParseUnitByteIO::~ParseUnitByteIO | ( |  | ) |

## Member Function Documentation

virtual int dirac::ParseUnitByteIO::CalcNextUnitOffset | ( |  | ) |
| protected virtual

Returns:
  Number of bytes to next unit

Reimplemented in dirac::EndOfSequenceByteIO.

virtual unsigned char dirac::ParseUnitByteIO::CalcParseCode | ( |  | ) | const
| inline protected virtual

Returns:
  Char containing bit-set for parse-unit parameters

Reimplemented in dirac::PictureByteIO, dirac::SequenceHeaderByteIO, and dirac::EndOfSequenceByteIO.

bool dirac::ParseUnitByteIO::CanSkip | ( |  | ) |

Returns:
  false Nothing to skip to

virtual void dirac::ParseUnitByteIO::CollateByteStats | ( | DiracByteStats & | dirac_byte_stats | ) |
| virtual

Parameters:

  dirac_byte_stats | Stat container

Reimplemented from dirac::ByteIO.

Reimplemented in dirac::PictureByteIO, and dirac::EndOfSequenceByteIO.

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

Reimplemented from dirac::ByteIO.

Reimplemented in dirac::PictureByteIO.

int dirac::ParseUnitByteIO::GetNextParseOffset | ( |  | ) | const

unsigned char dirac::ParseUnitByteIO::GetParseCode | ( |  | ) | const
| inline protected

References m_parse_code.

Referenced by dirac::PictureByteIO::IsNonRef(), dirac::PictureByteIO::IsRef(), and dirac::PictureByteIO::NumRefs().

int dirac::ParseUnitByteIO::GetPreviousParseOffset | ( |  | ) | const

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

Reimplemented from dirac::ByteIO.

Reimplemented in dirac::PictureByteIO, and dirac::SequenceHeaderByteIO.

virtual ParseUnitType dirac::ParseUnitByteIO::GetType | ( |  | ) | const
| virtual

Reimplemented in dirac::PictureByteIO, dirac::SequenceHeaderByteIO, and dirac::EndOfSequenceByteIO.

bool dirac::ParseUnitByteIO::Input | ( |  | ) |

Returns:
  false if not enough data in stream

Reimplemented in dirac::PictureByteIO, and dirac::SequenceHeaderByteIO.

bool dirac::ParseUnitByteIO::IsAuxiliaryData | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsCoreSyntax | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsEndOfSequence | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsLowDelay | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsPaddingData | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsPicture | ( |  | ) | const
| inline

References m_parse_code.

Referenced by dirac::PictureByteIO::IsInter(), and dirac::PictureByteIO::IsIntra().

bool dirac::ParseUnitByteIO::IsSeqHeader | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsUsingAC | ( |  | ) | const
| inline

References m_parse_code.

bool dirac::ParseUnitByteIO::IsValid | ( |  | ) |

void dirac::ParseUnitByteIO::SetAdjacentParseUnits | ( | ParseUnitByteIO * | p_prev_parseunit | ) |

Parameters:

  p_prev_parseunit | Previous parse-unit

bool dirac::ParseUnitByteIO::SyncToUnitStart | ( |  | ) |
| protected

Returns:
  false if not enough data

## Member Data Documentation

int dirac::ParseUnitByteIO::m_next_parse_offset
| private

unsigned char dirac::ParseUnitByteIO::m_parse_code
| private

Referenced by GetParseCode(), IsAuxiliaryData(), IsCoreSyntax(), IsEndOfSequence(), IsLowDelay(), IsPaddingData(), IsPicture(), IsSeqHeader(), and IsUsingAC().

int dirac::ParseUnitByteIO::m_previous_parse_offset
| private

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

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