# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

Public Member Functions | Private Member Functions | Private Attributes
dirac::DiracParser Class Reference

Dirac Stream Parser Class. More...

`#include <dirac_cppparser.h>`

List of all members.

## 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 ParseParams & | GetParseParams () const
| Return the parse parameters of the current sequence.
const SourceParams & | GetSourceParams () const
| Return the source parameters of the current sequence.
const PictureParams * | GetNextPictureParams () const
| Return the picture parameters of the next picture to be decoded.
const Picture * | GetNextPicture () const
| Return the decoded picture.
const DecoderParams & | GetDecoderParams () const
| Return the coding parameters of the current sequence.

## Private Member Functions
| DiracParser (const DiracParser &dp)
| private body-less copy constructor
DiracParser & | operator= (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
SequenceDecompressor * | m_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

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

Constructor takes

Parameters:

  verbose | boolean flag. Set to true for verbose output

dirac::DiracParser::~DiracParser | ( |  | ) |

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

## Member Function Documentation

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

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

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

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

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

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

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

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

SetBuffer takes

Parameters:

  start | Start of input buffer
  end | End of input buffer

## Member Data Documentation

SequenceDecompressor* dirac::DiracParser::m_decomp
| private

DiracByteStream dirac::DiracParser::m_dirac_byte_stream
| private

DecoderState dirac::DiracParser::m_next_state
| private

int dirac::DiracParser::m_show_pnum
| private

DecoderState dirac::DiracParser::m_state
| private

bool dirac::DiracParser::m_verbose
| private

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

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