# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

Public Member Functions | Protected Member Functions
dirac::FrameSequenceCompressor Class Reference

Compresses a sequence of frames from a stream. More...

`#include <seq_compress.h>`

Inheritance diagram for dirac::FrameSequenceCompressor:

List of all members.

## Public Member Functions
| FrameSequenceCompressor (StreamPicInput *pin, EncoderParams &encp, DiracByteStream &dirac_byte_stream)
| Constructor.
virtual | ~FrameSequenceCompressor ()
| Destructor.
virtual bool | LoadNextFrame ()
| Load data.
virtual void | SetPicTypeAndRefs (PictureParams &pparams)
| Set up the appropriate prediction parameters for a picture.
Public Member Functions inherited from dirac::SequenceCompressor
| SequenceCompressor (StreamPicInput *pin, EncoderParams &encp, DiracByteStream &dirac_byte_stream)
| Constructor.
virtual | ~SequenceCompressor ()
| Destructor.
const EncPicture * | CompressNextPicture ()
| Compress the next picture in sequence.
const EncPicture * | GetPictureEncoded ()
| Return a pointer to the most recent picture encoded.
DiracByteStats | EndSequence ()
bool | Finished ()
| Determine if compression is complete.
void | SignalEOS ()
| Signal end of sequence.
int | PTSOffset ()
| The delay required for correct timestamps.

## Protected Member Functions
virtual int | CodedToDisplay (const int pnum)
| Uses the GOP parameters to convert picture numbers in coded order to display order.
virtual void | UpdateCBRModel (EncPicture &my_picture, const PictureByteIO *picture_byteio)
| Update the CBR model based on the data we've compressed.
Protected Member Functions inherited from dirac::SequenceCompressor
void | SetMotionParameters ()
| Set up the motion block parameters.
void | MakeSequenceReport ()
| Make a report to screen on the coding results for the whole sequence.
virtual void | CleanBuffers ()
| Remove unwanted pictures from picture buffers.
void | UpdateIntraPicCBRModel (const PictureParams &, const bool is_a_cut)
| Update the parameters to be used in advance of coding an intra frame.
bool | CanEncode ()
| Returns true if the encoder can encode a picture.

## Additional Inherited Members
Protected Attributes inherited from dirac::SequenceCompressor
bool | m_all_done
| Completion flag, returned via the Finished method.
bool | m_just_finished
| Flag indicating whether we've just finished.
OLBParams * | m_basic_olb_params0
| A class to hold the basic block parameters.
OLBParams * | m_basic_olb_params1
| A class to hold the basic block parameters.
const OLBParams * | m_basic_olb_params2
| A class to hold the basic block parameters.
OLBParams * | m_intra_olbp
| A class to hold block parameters to use when there are lots of intra blocks.
SourceParams & | m_srcparams
| The parameters of the input source.
EncoderParams & | m_encparams
| The parameters used for encoding.
PicturePredParams & | m_predparams
| The parameters used for ME/MC.
int | m_L1_sep
| The L1 separation currently in use.
PictureParams | m_pparams
| Generic picture parameters for initialising pictures.
StreamPicInput * | m_pic_in
| Pointer pointing at the picture input.
EncQueue | m_enc_pbuffer
| A picture buffer used for local storage of pictures whilst pending re-ordering or being used for reference.
int | m_current_display_pnum
| The number of the current picture to be coded, in display order.
int | m_current_code_pnum
| The number of the current picture to be coded, in coded order.
int | m_show_pnum
| The number of the picture which should be output for concurrent display or storage.
int | m_last_picture_read
| The index, in display order, of the last picture read.
int | m_gop_start_num
| The picture number of the last GOP start.
int | m_delay
| A delay so that we don't display what we haven't coded.
QualityMonitor | m_qmonitor
| A class for monitoring the quality of pictures and adjusting parameters appropriately.
RateController * | m_ratecontrol
| A class for monitoring and controlling bit rate.
PictureCompressor | m_pcoder
| A class to hold the picture compressor object.
DiracByteStream & | m_dirac_byte_stream
| Output destination for compressed data in bitstream format.
bool | m_eos_signalled
| Flag to check if End of Sequence has been signalled by the end user.

## Detailed Description

This class compresses a sequence of frames, frame by frame. It currently uses GOP parameters set in the encoder parameters in order to define the temporal prediction structure. A version to incorporate non-GOP structures is TBC.

## Constructor & Destructor Documentation

dirac::FrameSequenceCompressor::FrameSequenceCompressor | ( | StreamPicInput * | pin,
|  | EncoderParams & | encp,
|  | DiracByteStream & | dirac_byte_stream
| ) |  |

Creates a sequence compressor that compresses frames i.e. progressive data, and prepares to begin compressing with the first frame.Sets up frame padding in the picture input if necesary

Parameters:

  pin | an input stream containing a sequence of frames
  encp | parameters for the encoding process
  dirac_byte_stream | Output destination for compressed data

virtual dirac::FrameSequenceCompressor::~FrameSequenceCompressor | ( |  | ) |
| inline virtual

Destructor. Must delete IO objects created by constructor.

## Member Function Documentation

virtual int dirac::FrameSequenceCompressor::CodedToDisplay | ( | const int | pnum | ) |
| protected virtual

Uses the GOP parameters to convert picture numbers in coded order to display order. Pure virtual function. The child class will have to define it.

Parameters:

  pnum | the picture number in coded order

Implements dirac::SequenceCompressor.

virtual bool dirac::FrameSequenceCompressor::LoadNextFrame | ( |  | ) |
| virtual

Load one frame of data into the Sequence Compressor. Sets m_all_done to true if no more data is available to be loaded.

Returns:
  true - if frame load succeeded. false - otherwise

Implements dirac::SequenceCompressor.

virtual void dirac::FrameSequenceCompressor::SetPicTypeAndRefs | ( | PictureParams & | pparams | ) |
| virtual

Implements dirac::SequenceCompressor.

virtual void dirac::FrameSequenceCompressor::UpdateCBRModel | ( | EncPicture & | my_picture,
|  | const PictureByteIO * | picture_byteio
| ) |  |
| protected virtual

Implements dirac::SequenceCompressor.

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

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