# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

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

Compress a single image picture. More...

`#include <picture_compress.h>`

List of all members.

## 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 MEData * | GetMEData () const
| Returns the motion estimation data.

## Private Member Functions
| PictureCompressor (const PictureCompressor &cpy)
| Copy constructor is private and body-less.
PictureCompressor & | operator= (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
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:

  encp | encoder parameters

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

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_pbuffer | picture buffer in which the reference frames resides
  pnum | picture number to compress
  pic_byteio | compressed 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

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

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

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

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

References m_medata_avail.

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.

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

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

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

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:

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