Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac::PictureCompressor Class Reference

Compress a single image picture. More...

#include <picture_compress.h>

Collaboration diagram for dirac::PictureCompressor:

Public Member Functions

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

Private Member Functions

 PictureCompressor (const PictureCompressor &cpy)
 Copy constructor is private and body-less.
PictureCompressoroperator= (const PictureCompressor &rhs)
 Assignment = is private and body-less.
void InitCoeffData (CoeffArray &coeff_data, const int xl, const int yl)
 Initialise the coefficient data array for holding wavelet coefficients.
float GetCompLambda (const EncPicture &my_picture, const CompSort csort)
 Returns the value lambda according to picture and component type.
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

Referenced by operator=(), and PictureCompressor().

◆ ~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.

References PictureCompressor().

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.

References PictureCompressor().

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