Dirac - A Video Codec

Created by the British Broadcasting Corporation.


Public Member Functions | Private Member Functions | Private Attributes | List of all members
dirac::PictureCompressor Class Reference

Compress a single image picture. More...

#include <picture_compress.h>

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

Public Member Functions

 PictureCompressor (EncoderParams &encp)
 Constructor. More...
 
 ~PictureCompressor ()
 Destructor. More...
 
void PixelME (EncQueue &my_buffer, int pnum)
 Do pixel accurate motion estimate. More...
 
void CalcComplexity (EncQueue &my_buffer, int pnum, const OLBParams &olbparams)
 Calculate the complexity of a picture. More...
 
void CalcComplexity2 (EncQueue &my_buffer, int pnum)
 
void NormaliseComplexity (EncQueue &my_buffer, int pnum)
 Normalise picture complexity with respect to others in the queue. More...
 
void SubPixelME (EncQueue &my_buffer, int pnum)
 Do subpixel accurate motion vector refinement. More...
 
void ModeDecisionME (EncQueue &my_buffer, int pnum)
 Do mode decision based on sub-pel vectors. More...
 
void IntraModeAnalyse (EncQueue &my_buffer, int pnum)
 Detect cuts in the current picture. More...
 
void MotionCompensate (EncQueue &my_buffer, int pnum, AddOrSub dirn)
 Does motion compensation on picture pnum (forward or backward) More...
 
void Prefilter (EncQueue &my_buffer, int pnum)
 Prefilter if required. More...
 
void DoDWT (EncQueue &my_buffer, int pnum, Direction dirn)
 Do the DWT on a given picture. More...
 
void CodeResidue (EncQueue &my_pbuffer, int pnum, PictureByteIO *pic_byteio)
 Compress a specific picture within a group of pictures (GOP) More...
 
void CodeMVData (EncQueue &my_buffer, int pnum, PictureByteIO *pic_byteio)
 Compresses the motion vector data. More...
 
bool IsSkipped ()
 Returns true if the picture has been skipped rather than coded normally. More...
 
bool IsMEDataAvail () const
 Returns true if Motion estimation data is available. More...
 
const MEData * GetMEData () const
 Returns the motion estimation data. More...
 

Private Member Functions

 PictureCompressor (const PictureCompressor &cpy)
 Copy constructor is private and body-less. More...
 
PictureCompressor & operator= (const PictureCompressor &rhs)
 Assignment = is private and body-less. More...
 
void InitCoeffData (CoeffArray &coeff_data, const int xl, const int yl)
 Initialise the coefficient data array for holding wavelet coefficients. More...
 
float GetCompLambda (const EncPicture &my_picture, const CompSort csort)
 Returns the value lambda according to picture and component type. More...
 
void SelectQuantisers (CoeffArray &coeff_data, SubbandList &bands, const float lambda, OneDArray< unsigned int > &est_counts, const CodeBlockMode cb_mode, const PictureParams &pp, const CompSort csort)
 
int SelectMultiQuants (CoeffArray &coeff_data, SubbandList &bands, const int band_num, const float lambda, const PictureParams &pp, const CompSort csort)
 
void SetupCodeBlocks (SubbandList &bands)
 
void AddSubAverage (CoeffArray &coeff_data, int xl, int yl, AddOrSub dirn)
 

Private Attributes

EncoderParams & m_encparams
 
bool m_skipped
 
bool m_use_global
 
bool m_use_block_mv
 
PredMode m_global_pred_mode
 
MEData * m_me_data
 
bool m_medata_avail
 
bool m_is_a_cut
 
MVPrecisionType m_orig_prec
 

Detailed Description

This class compresses a single picture at a time, using parameters supplied at its construction. PictureCompressor is used by SequenceCompressor.

Constructor & Destructor Documentation

dirac::PictureCompressor::PictureCompressor ( EncoderParams &  encp)

Creates a FrameEncoder with specific set of parameters the control the compression process. It encodes motion data before encoding each component of the picture.

Parameters
encpencoder parameters

Referenced by IsMEDataAvail().

dirac::PictureCompressor::~PictureCompressor ( )
dirac::PictureCompressor::PictureCompressor ( const PictureCompressor &  cpy)
private

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

Member Function Documentation

void dirac::PictureCompressor::AddSubAverage ( CoeffArray &  coeff_data,
int  xl,
int  yl,
AddOrSub  dirn 
)
private

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::CalcComplexity ( EncQueue &  my_buffer,
int  pnum,
const OLBParams &  olbparams 
)
void dirac::PictureCompressor::CalcComplexity2 ( EncQueue &  my_buffer,
int  pnum 
)
void dirac::PictureCompressor::CodeMVData ( EncQueue &  my_buffer,
int  pnum,
PictureByteIO *  pic_byteio 
)
void dirac::PictureCompressor::CodeResidue ( EncQueue &  my_pbuffer,
int  pnum,
PictureByteIO *  pic_byteio 
)

Compresses a specified picture within a group of pictures.

Parameters
my_pbufferpicture buffer in which the reference frames resides
pnumpicture number to compress
pic_byteiocompressed picture in Dirac bytestream format
void dirac::PictureCompressor::DoDWT ( EncQueue &  my_buffer,
int  pnum,
Direction  dirn 
)
float dirac::PictureCompressor::GetCompLambda ( const EncPicture &  my_picture,
const CompSort  csort 
)
private

Referenced by IsMEDataAvail().

const MEData* dirac::PictureCompressor::GetMEData ( ) const

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::InitCoeffData ( CoeffArray &  coeff_data,
const int  xl,
const int  yl 
)
private

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::IntraModeAnalyse ( EncQueue &  my_buffer,
int  pnum 
)
bool dirac::PictureCompressor::IsMEDataAvail ( ) const
inline
bool dirac::PictureCompressor::IsSkipped ( )
inline

References m_skipped.

void dirac::PictureCompressor::ModeDecisionME ( EncQueue &  my_buffer,
int  pnum 
)
void dirac::PictureCompressor::MotionCompensate ( EncQueue &  my_buffer,
int  pnum,
AddOrSub  dirn 
)
void dirac::PictureCompressor::NormaliseComplexity ( EncQueue &  my_buffer,
int  pnum 
)
PictureCompressor& dirac::PictureCompressor::operator= ( const PictureCompressor &  rhs)
private

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

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::PixelME ( EncQueue &  my_buffer,
int  pnum 
)
void dirac::PictureCompressor::Prefilter ( EncQueue &  my_buffer,
int  pnum 
)
int dirac::PictureCompressor::SelectMultiQuants ( CoeffArray &  coeff_data,
SubbandList &  bands,
const int  band_num,
const float  lambda,
const PictureParams &  pp,
const CompSort  csort 
)
private

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::SelectQuantisers ( CoeffArray &  coeff_data,
SubbandList &  bands,
const float  lambda,
OneDArray< unsigned int > &  est_counts,
const CodeBlockMode  cb_mode,
const PictureParams &  pp,
const CompSort  csort 
)
private

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::SetupCodeBlocks ( SubbandList &  bands)
private

Referenced by IsMEDataAvail().

void dirac::PictureCompressor::SubPixelME ( EncQueue &  my_buffer,
int  pnum 
)

Member Data Documentation

EncoderParams& dirac::PictureCompressor::m_encparams
private
PredMode dirac::PictureCompressor::m_global_pred_mode
private
bool dirac::PictureCompressor::m_is_a_cut
private
MEData* dirac::PictureCompressor::m_me_data
private
bool dirac::PictureCompressor::m_medata_avail
private

Referenced by IsMEDataAvail().

MVPrecisionType dirac::PictureCompressor::m_orig_prec
private
bool dirac::PictureCompressor::m_skipped
private

Referenced by IsSkipped().

bool dirac::PictureCompressor::m_use_block_mv
private
bool dirac::PictureCompressor::m_use_global
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.