Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac::DiracByteStream Class Reference

Represents a series of bytes in the Dirac bytestream specfication format. More...

#include <dirac_byte_stream.h>

Inheritance diagram for dirac::DiracByteStream:
Collaboration diagram for dirac::DiracByteStream:

Public Member Functions

 DiracByteStream ()
 Constructor.
 ~DiracByteStream ()
 Destructor.
void AddBytes (char *start, int count)
 Adds Dirac-formatted bytes to internal-byte-stream for processing.
DiracByteStats GetLastUnitStats ()
 Gets the statistics of the most recent parse-unit to be processed.
ParseUnitByteIOGetNextParseUnit ()
 Gets the next parse-unit in the current byte-stream.
DiracByteStats GetSequenceStats () const
 Gets stats for current sequence.
void AddSequenceHeader (SequenceHeaderByteIO *p_seqheader_byteio)
 Adds a random access point to the current Dirac byte stream.
void AddPicture (PictureByteIO *p_frame_byteio)
 Adds a picture to the current Dirac byte stream.
void Clear ()
 Clear parse-units.
DiracByteStats EndSequence ()
 Insert end-of-sequence data.
const std::string GetBytes ()
 Gets a pointer to all current output bytes.
bool IsUnitAvailable () const
 Any info pending?
Public Member Functions inherited from dirac::ByteIO
 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.
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.

Private Types

typedef std::queue< std::pair< ParseUnitType, ParseUnitByteIO * > > ParseUnitList
 Parse-units in Dirac stream.

Private Member Functions

void Reset (ParseUnitByteIO *p_curr_unit, int pos)

Private Attributes

ParseUnitList m_parse_unit_list
ParseUnitByteIOmp_prev_parse_unit
 Last unit to be processed Required for specifying the previous parse-unit.
DiracByteStats m_sequence_stats
 Stats for current sequence.

Additional Inherited Members

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)
Protected Attributes inherited from dirac::ByteIO
std::stringstream * mp_stream
 Input/output steam.

Detailed Description

These bytes are grouped into more managable parse units by this class.

Member Typedef Documentation

◆ ParseUnitList

typedef std::queue< std::pair <ParseUnitType, ParseUnitByteIO*> > dirac::DiracByteStream::ParseUnitList
private

Constructor & Destructor Documentation

◆ DiracByteStream()

dirac::DiracByteStream::DiracByteStream ( )

◆ ~DiracByteStream()

dirac::DiracByteStream::~DiracByteStream ( )

Member Function Documentation

◆ AddBytes()

void dirac::DiracByteStream::AddBytes ( char * start,
int count )
Parameters
startStart of char list
countNumber of chars

◆ AddPicture()

void dirac::DiracByteStream::AddPicture ( PictureByteIO * p_frame_byteio)
Parameters
p_frame_byteioPicture stream. This class is now responsible for deleting.

◆ AddSequenceHeader()

void dirac::DiracByteStream::AddSequenceHeader ( SequenceHeaderByteIO * p_seqheader_byteio)
Parameters
p_seqheader_byteioSequence header data.

◆ Clear()

void dirac::DiracByteStream::Clear ( )

◆ EndSequence()

DiracByteStats dirac::DiracByteStream::EndSequence ( )
Returns
Sequence stats

◆ GetBytes()

const std::string dirac::DiracByteStream::GetBytes ( )
virtual

Reimplemented from dirac::ByteIO.

◆ GetLastUnitStats()

DiracByteStats dirac::DiracByteStream::GetLastUnitStats ( )
Returns
Byte-statistics

◆ GetNextParseUnit()

ParseUnitByteIO * dirac::DiracByteStream::GetNextParseUnit ( )

◆ GetSequenceStats()

DiracByteStats dirac::DiracByteStream::GetSequenceStats ( ) const

◆ IsUnitAvailable()

bool dirac::DiracByteStream::IsUnitAvailable ( ) const

◆ Reset()

void dirac::DiracByteStream::Reset ( ParseUnitByteIO * p_curr_unit,
int pos )
private

Member Data Documentation

◆ m_parse_unit_list

ParseUnitList dirac::DiracByteStream::m_parse_unit_list
private

◆ m_sequence_stats

DiracByteStats dirac::DiracByteStream::m_sequence_stats
private

◆ mp_prev_parse_unit

ParseUnitByteIO* dirac::DiracByteStream::mp_prev_parse_unit
private

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.