Dirac - A Video Codec

Created by the British Broadcasting Corporation.


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

Decompresses a sequence of pictures from a stream. More...

#include <seq_decompress.h>

Collaboration diagram for dirac::SequenceDecompressor:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 SequenceDecompressor (ParseUnitByteIO &parseunit, bool verbosity)
 Constructor.
 ~SequenceDecompressor ()
 Destructor.
void NewAccessUnit (ParseUnitByteIO &parseunit_byteio)
 Marks beginning of a new AccessUnit.
const PictureDecompressNextPicture (ParseUnitByteIO *p_parseunit_byteio)
 Decompress the next picture in sequence.
const PictureGetNextPicture ()
 Get the next picture available for display.
const PictureParamsGetNextPictureParams () const
 Get the next picture parameters.
bool Finished ()
 Determine if decompression is complete.
ParseParamsGetParseParams ()
 Interrogates for parse parameters.
SourceParamsGetSourceParams ()
 Interrogates for source parameters.
DecoderParamsGetDecoderParams ()
 Interrogates for coding parameters.

Private Member Functions

 SequenceDecompressor (const SequenceDecompressor &cpy)
 Copy constructor is private and body-less.
SequenceDecompressoroperator= (const SequenceDecompressor &rhs)
 Assignment = is private and body-less.

Private Attributes

bool m_all_done
 Completion flag, returned via the Finished method.
DecoderParams m_decparams
 Parameters for the decompression, as provided in constructor.
ParseParams m_parse_params
 The parse parameters obtained from the stream header.
SourceParams m_srcparams
 The source parameters obtained from the stream header.
PictureBufferm_pbuffer
 A picture buffer used for local storage of pictures whilst pending re-ordering or being used for reference.
int m_current_code_pnum
 Number of the picture in coded order which is to be decoded.
int m_delay
 A delay so that we don't display what we haven't decoded.
int m_last_picture_read
 Index, in display order, of the last picture read.
int m_show_pnum
 Index, in display order of the picture to be displayed next - computed from delay and current_code_pnum.
PictureDecompressorm_pdecoder
 Picture decompressor object.
int m_highest_pnum
 Highest picture-num processed - for tracking end-of-sequence.

Detailed Description

This class decompresses a sequence of frames, picture by picture.


Constructor & Destructor Documentation

dirac::SequenceDecompressor::SequenceDecompressor ( ParseUnitByteIO parseunit,
bool  verbosity 
)

Initializes the decompressor with an input stream and level of output detail.

Parameters:
parseunitFirst access-unit of new sequence
verbositywhen true, increases the amount of information displayed during decompression
dirac::SequenceDecompressor::~SequenceDecompressor ( )

Closes files and releases resources.

dirac::SequenceDecompressor::SequenceDecompressor ( const SequenceDecompressor cpy)
private

Copy constructor is private and body-less. This class should not be copied.


Member Function Documentation

const Picture* dirac::SequenceDecompressor::DecompressNextPicture ( ParseUnitByteIO p_parseunit_byteio)

This function decodes the next picture in coding order and returns the next picture in display order. In general these will differ, and because of re-ordering there is a delay which needs to be imposed. This creates problems at the start and at the end of the sequence which must be dealt with. At the start we just keep outputting picture 0. At the end you will need to loop for longer to get all the pictures out. It's up to the calling function to do something with the decoded pictures as they come out – write them to screen or to file, as required.

Parameters:
p_parseunit_byteioPicture information in Dirac-stream format
Returns:
reference to the next locally decoded picture available for display
bool dirac::SequenceDecompressor::Finished ( )

Indicates whether or not the last picture in the sequence has been decompressed.

Returns:
true if last picture has been compressed; false if not
DecoderParams& dirac::SequenceDecompressor::GetDecoderParams ( )
inline

Returns the decoder parameters used for this decompression run.

Returns:
decoder parameters.

References m_decparams.

const Picture* dirac::SequenceDecompressor::GetNextPicture ( )
const PictureParams* dirac::SequenceDecompressor::GetNextPictureParams ( ) const
ParseParams& dirac::SequenceDecompressor::GetParseParams ( )
inline

Returns the parse parameters used for this decompression run.

Returns:
parse parameters.

References m_parse_params.

SourceParams& dirac::SequenceDecompressor::GetSourceParams ( )
inline

Returns the source parameters used for this decompression run.

Returns:
source parameters.

References m_srcparams.

void dirac::SequenceDecompressor::NewAccessUnit ( ParseUnitByteIO parseunit_byteio)
Parameters:
parseunit_byteioAccessUnit info in Dirac-stream format
SequenceDecompressor& dirac::SequenceDecompressor::operator= ( const SequenceDecompressor rhs)
private

Assignment = is private and body-less. This class should not be assigned.


Member Data Documentation

bool dirac::SequenceDecompressor::m_all_done
private
int dirac::SequenceDecompressor::m_current_code_pnum
private
DecoderParams dirac::SequenceDecompressor::m_decparams
private

Referenced by GetDecoderParams().

int dirac::SequenceDecompressor::m_delay
private
int dirac::SequenceDecompressor::m_highest_pnum
private
int dirac::SequenceDecompressor::m_last_picture_read
private
ParseParams dirac::SequenceDecompressor::m_parse_params
private

Referenced by GetParseParams().

PictureBuffer* dirac::SequenceDecompressor::m_pbuffer
private
PictureDecompressor* dirac::SequenceDecompressor::m_pdecoder
private
int dirac::SequenceDecompressor::m_show_pnum
private
SourceParams dirac::SequenceDecompressor::m_srcparams
private

Referenced by GetSourceParams().


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.