Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac::DiracParser Class Reference

Dirac Stream Parser Class. More...

#include <dirac_cppparser.h>

Collaboration diagram for dirac::DiracParser:

Public Member Functions

 DiracParser (bool verbose=false)
 Constructor.
 ~DiracParser ()
 Destructor.
void SetBuffer (char *start, char *end)
 Adds bytes to encoder.
DecoderState Parse ()
 Parse the data in internal buffer.
const ParseParamsGetParseParams () const
 Return the parse parameters of the current sequence.
const SourceParamsGetSourceParams () const
 Return the source parameters of the current sequence.
const PictureParamsGetNextPictureParams () const
 Return the picture parameters of the next picture to be decoded.
const PictureGetNextPicture () const
 Return the decoded picture.
const DecoderParamsGetDecoderParams () const
 Return the coding parameters of the current sequence.

Private Member Functions

 DiracParser (const DiracParser &dp)
 private body-less copy constructor
DiracParseroperator= (const DiracParser &dp)
 private body-less assignement constructor

Private Attributes

DecoderState m_state
 Current state of parser.
DecoderState m_next_state
 Next state the parser will enter.
int m_show_pnum
 picture number of last picture decoded in display order
SequenceDecompressorm_decomp
 Sequence decompressor object.
bool m_verbose
 verbose flag
DiracByteStream m_dirac_byte_stream
 Byte Stream Buffer.

Detailed Description

This class is a wrapper around the SequenceDecompressor class. The Sequence Decompressor class needs a full picture of data to be available to decompress a picture successfully. So, the DiracParser class uses the InputStreamBuffer class to store data until a chunk is available to be processed and then invokes the SequenceDecompressor functions to process data. A chunk of data can be a start of sequence, a picture or end of sequence data. The istream used to instantiate the SequenceDecompressor object is created using an InputStreamBuffer object which is manipulated the DiracParser. This ensures that data is always available for processing by the SequenceDecompressor object.

Constructor & Destructor Documentation

◆ DiracParser() [1/2]

dirac::DiracParser::DiracParser ( bool verbose = false)

Constructor takes

Parameters
verboseboolean flag. Set to true for verbose output

Referenced by DiracParser(), and operator=().

◆ ~DiracParser()

dirac::DiracParser::~DiracParser ( )

◆ DiracParser() [2/2]

dirac::DiracParser::DiracParser ( const DiracParser & dp)
private

References DiracParser().

Member Function Documentation

◆ GetDecoderParams()

const DecoderParams & dirac::DiracParser::GetDecoderParams ( ) const

◆ GetNextPicture()

const Picture * dirac::DiracParser::GetNextPicture ( ) const

◆ GetNextPictureParams()

const PictureParams * dirac::DiracParser::GetNextPictureParams ( ) const

◆ GetParseParams()

const ParseParams & dirac::DiracParser::GetParseParams ( ) const

◆ GetSourceParams()

const SourceParams & dirac::DiracParser::GetSourceParams ( ) const

◆ operator=()

DiracParser & dirac::DiracParser::operator= ( const DiracParser & dp)
private

References DiracParser().

◆ Parse()

DecoderState dirac::DiracParser::Parse ( )

Parses the data in the input buffer. This function returns one of the following values
STATE_BUFFER : Not enough data in internal buffer to process
STATE_SEQUENCE : Start of sequence detected
STATE_PICTURE_AVAIL : Decoded picture available
STATE_SEQUENCE_END : End of sequence detected
STATE_INVALID : Invalid stream. Stop further processing

◆ SetBuffer()

void dirac::DiracParser::SetBuffer ( char * start,
char * end )

SetBuffer takes

Parameters
startStart of input buffer
endEnd of input buffer

Member Data Documentation

◆ m_decomp

SequenceDecompressor* dirac::DiracParser::m_decomp
private

◆ m_dirac_byte_stream

DiracByteStream dirac::DiracParser::m_dirac_byte_stream
private

◆ m_next_state

DecoderState dirac::DiracParser::m_next_state
private

◆ m_show_pnum

int dirac::DiracParser::m_show_pnum
private

◆ m_state

DecoderState dirac::DiracParser::m_state
private

◆ m_verbose

bool dirac::DiracParser::m_verbose
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.