Dirac - A Video Codec

Created by the British Broadcasting Corporation.


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

Choose a quantiser. More...

#include <quant_chooser.h>

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

List of all members.

Public Member Functions

 QuantChooser (const CoeffArray &pic_data, const float lambda)
 Constructor.
int GetBestQuant (Subband &node)
 Finds the best quantisers for the subband, returning the predicted number of bits needed.
void SetEntropyCorrection (const float ecfac)
 Sets the factor used for correcting the entropy calculation.

Private Member Functions

 QuantChooser (const QuantChooser &cpy)
 Copy constructor is private and body-less. This class should not be copied.
QuantChooseroperator= (const QuantChooser &rhs)
 Assignment = is private and body-less. This class should not be assigned.
void IntegralErrorCalc (Subband &node, const int xratio, const int yratio)
 Calculate errors and entropies for integral-bit quantisers.
void NonIntegralErrorCalc (Subband &node, const int xratio, const int yratio)
 Calculate errors and entropies for non-integral-bit quantisers.
void LagrangianCalc ()
 Having got statistics, calculate the Lagrangian costs.
void SelectBestQuant ()
 Select the best quantisation index on the basis of the Lagrangian calculations.
CoeffType BlockAbsMax (const Subband &node)
void SetSkip (CodeBlock &cblock, const int qidx)
 Set the skip flag for a codeblock.

Private Attributes

float m_subband_wt
 The perceptual weighting factor of the subband being tested.
int m_bottom_idx
 The smallest quantisation index being tested.
int m_top_idx
 The largest quantisation index being tested.
int m_index_step
 The step we use in jumping through the list of quantisers.
int m_min_idx
 The index of the quantiser with the lowest cost.
const CoeffArraym_coeff_data
 A local reference to the data under consideration.
const float m_lambda
 The lambda value to be used in the Lagrangian calculation.
float m_entropy_correctionfactor
 A value for correcting the crude calculation of the entropy.
OneDArray< int > m_count0
 An array used to count the number of zeroes.
int m_count1
 The number of ones (equal to the number of coefficients)
OneDArray< int > m_countPOS
 An array used to count the number of positive values.
OneDArray< int > m_countNEG
 An array used to count the number of negative values.
OneDArray< double > m_error_total
 An array used to collate the sum of the perceptually-weighted errors.
OneDArray< CostTypem_costs
 An array used to collate the computed costs.

Detailed Description

This class chooses a quantiser or quantisers for a subband


Constructor & Destructor Documentation

dirac::QuantChooser::QuantChooser ( const CoeffArray pic_data,
const float  lambda 
)
dirac::QuantChooser::QuantChooser ( const QuantChooser cpy)
private

Member Function Documentation

CoeffType dirac::QuantChooser::BlockAbsMax ( const Subband node)
private
int dirac::QuantChooser::GetBestQuant ( Subband node)
void dirac::QuantChooser::IntegralErrorCalc ( Subband node,
const int  xratio,
const int  yratio 
)
private
void dirac::QuantChooser::LagrangianCalc ( )
private
void dirac::QuantChooser::NonIntegralErrorCalc ( Subband node,
const int  xratio,
const int  yratio 
)
private
QuantChooser& dirac::QuantChooser::operator= ( const QuantChooser rhs)
private
void dirac::QuantChooser::SelectBestQuant ( )
private
void dirac::QuantChooser::SetEntropyCorrection ( const float  ecfac)
inline
void dirac::QuantChooser::SetSkip ( CodeBlock cblock,
const int  qidx 
)
private

Member Data Documentation

int dirac::QuantChooser::m_bottom_idx
private
const CoeffArray& dirac::QuantChooser::m_coeff_data
private
OneDArray<CostType> dirac::QuantChooser::m_costs
private
OneDArray<int> dirac::QuantChooser::m_count0
private
int dirac::QuantChooser::m_count1
private
OneDArray<int> dirac::QuantChooser::m_countNEG
private
OneDArray<int> dirac::QuantChooser::m_countPOS
private
float dirac::QuantChooser::m_entropy_correctionfactor
private

Referenced by SetEntropyCorrection().

OneDArray<double> dirac::QuantChooser::m_error_total
private
int dirac::QuantChooser::m_index_step
private
const float dirac::QuantChooser::m_lambda
private
int dirac::QuantChooser::m_min_idx
private
float dirac::QuantChooser::m_subband_wt
private
int dirac::QuantChooser::m_top_idx
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.