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 MEDataGetMEData () const
 Returns the motion estimation data. More...
 

Private Member Functions

 PictureCompressor (const PictureCompressor &cpy)
 Copy constructor is private and body-less. More...
 
PictureCompressoroperator= (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

EncoderParamsm_encparams
 
bool m_skipped
 
bool m_use_global
 
bool m_use_block_mv
 
PredMode m_global_pred_mode
 
MEDatam_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

◆ PictureCompressor() [1/2]

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

◆ ~PictureCompressor()

dirac::PictureCompressor::~PictureCompressor ( )

◆ PictureCompressor() [2/2]

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

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

Member Function Documentation

◆ AddSubAverage()

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

◆ CalcComplexity()

void dirac::PictureCompressor::CalcComplexity ( EncQueue my_buffer,
int  pnum,
const OLBParams olbparams 
)

◆ CalcComplexity2()

void dirac::PictureCompressor::CalcComplexity2 ( EncQueue my_buffer,
int  pnum 
)

◆ CodeMVData()

void dirac::PictureCompressor::CodeMVData ( EncQueue my_buffer,
int  pnum,
PictureByteIO pic_byteio 
)

◆ CodeResidue()

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

◆ DoDWT()

void dirac::PictureCompressor::DoDWT ( EncQueue my_buffer,
int  pnum,
Direction  dirn 
)

◆ GetCompLambda()

float dirac::PictureCompressor::GetCompLambda ( const EncPicture my_picture,
const CompSort  csort 
)
private

◆ GetMEData()

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

◆ InitCoeffData()

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

◆ IntraModeAnalyse()

void dirac::PictureCompressor::IntraModeAnalyse ( EncQueue my_buffer,
int  pnum 
)

◆ IsMEDataAvail()

bool dirac::PictureCompressor::IsMEDataAvail ( ) const
inline

References m_medata_avail.

◆ IsSkipped()

bool dirac::PictureCompressor::IsSkipped ( )
inline

References m_skipped.

◆ ModeDecisionME()

void dirac::PictureCompressor::ModeDecisionME ( EncQueue my_buffer,
int  pnum 
)

◆ MotionCompensate()

void dirac::PictureCompressor::MotionCompensate ( EncQueue my_buffer,
int  pnum,
AddOrSub  dirn 
)

◆ NormaliseComplexity()

void dirac::PictureCompressor::NormaliseComplexity ( EncQueue my_buffer,
int  pnum 
)

◆ operator=()

PictureCompressor & dirac::PictureCompressor::operator= ( const PictureCompressor rhs)
private

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

◆ PixelME()

void dirac::PictureCompressor::PixelME ( EncQueue my_buffer,
int  pnum 
)

◆ Prefilter()

void dirac::PictureCompressor::Prefilter ( EncQueue my_buffer,
int  pnum 
)

◆ SelectMultiQuants()

int dirac::PictureCompressor::SelectMultiQuants ( CoeffArray coeff_data,
SubbandList bands,
const int  band_num,
const float  lambda,
const PictureParams pp,
const CompSort  csort 
)
private

◆ SelectQuantisers()

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

◆ SetupCodeBlocks()

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

◆ SubPixelME()

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

Member Data Documentation

◆ m_encparams

EncoderParams& dirac::PictureCompressor::m_encparams
private

◆ m_global_pred_mode

PredMode dirac::PictureCompressor::m_global_pred_mode
private

◆ m_is_a_cut

bool dirac::PictureCompressor::m_is_a_cut
private

◆ m_me_data

MEData* dirac::PictureCompressor::m_me_data
private

◆ m_medata_avail

bool dirac::PictureCompressor::m_medata_avail
private

Referenced by IsMEDataAvail().

◆ m_orig_prec

MVPrecisionType dirac::PictureCompressor::m_orig_prec
private

◆ m_skipped

bool dirac::PictureCompressor::m_skipped
private

Referenced by IsSkipped().

◆ m_use_block_mv

bool dirac::PictureCompressor::m_use_block_mv
private

◆ m_use_global

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.