# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

# dirac::BlockMatcher Class Reference

Class to do block matching.

`#include <block_match.h>`

List of all members.

## Public Member Functions

- BlockMatcher (const PicArray &ref_data, const PicArray &pic_data, const OLBParams &bparams, const int precision, const MvArray &mv_array, const TwoDArray< MvCostData > &cost_array)
    Constructor.
- ~BlockMatcher ()
- void FindBestMatchPel (const int xpos, const int ypos, const CandidateList &cand_list, const MVector &mv_prediction, const int list_start)
    Find the best matching vector from a list of candidates.
- void FindBestMatchSubp (const int xpos, const int ypos, const CandidateList &cand_list, const MVector &mv_prediction, const float lambda)
    Find the best matching vector from a list of candidates, to sub-pixel accuracy (TBC: merge with FindBestMatch).
- void RefineMatchSubp (const int xpos, const int ypos, const MVector &mv_prediction, const float lambda)
- ValueType GetVar (const MVector &predmv, const MVector &mv) const
    Get a measure of the difference between a motion vector and a prediction.
- ValueType GetVarUp (const MVector &predmv, const MVector &mv) const
    Get a measure of the difference between a motion vector and a prediction, to 1/8pel accuracy.
- void SetPrecision (const int n)

## Private Attributes

- const PicArray & m_pic_data
- const PicArray & m_ref_data
- const MvArray & m_mv_array
- const TwoDArray< MvCostData > & m_cost_array
- PelBlockDiff m_peldiff
- OneDArray< BlockDiffUp * > m_subpeldiff
- OLBParams m_bparams
- const int m_var_max
- const int m_var_max_up
- int m_precision

## Constructor & Destructor Documentation

dirac::BlockMatcher::BlockMatcher | ( | const PicArray & | ref_data,
|  | const PicArray & | pic_data,
|  | const OLBParams & | bparams,
|  | const int | precision,
|  | const MvArray & | mv_array,
|  | const TwoDArray< MvCostData > & | cost_array |
| ) |  |  |

Constructor

Parameters:

  | ref_data | the reference picture component
  | pic_data | the picture being matched
  | bparams | the (overlapped) block parameters to be used for the matching
  | precision | the number of bits of precision being used for estimation
  | mv_array | the array of vectors we're going to write into
  | cost_array | the array of costs we're going to write into

dirac::BlockMatcher::~BlockMatcher | ( |  | ) |

## Member Function Documentation

void dirac::BlockMatcher::FindBestMatchPel | ( | const int | xpos,
|  | const int | ypos,
|  | const CandidateList & | cand_list,
|  | const MVector & | mv_prediction,
|  | const int | list_start |
| ) |  |  |

Find the best matching vector from a list of candidates.

Parameters:

  | xpos | the horizontal location of the block being matched
  | ypos | the vertical location of the block being matched
  | cand_list | the list of candidate vectors
  | mv_prediction | Prediction used for each block used to control the variation in the motion vector field.
  | list_start | index into the candidate vectors list

void dirac::BlockMatcher::FindBestMatchSubp | ( | const int | xpos,
|  | const int | ypos,
|  | const CandidateList & | cand_list,
|  | const MVector & | mv_prediction,
|  | const float | lambda |
| ) |  |  |

Find the best matching vector from a list of candidates.

Parameters:

  | xpos | the horizontal location of the block being matched
  | ypos | the vertical location of the block being matched
  | cand_list | the list of candidate vectors
  | mv_prediction | the prediction for the motion vector
  | lambda | the Lagrangian parameter

ValueType dirac::BlockMatcher::GetVar | ( | const MVector & | predmv,
|  | const MVector & | mv |
| ) |  |  | const

Get a measure of the difference between a motion vector and a prediction

Parameters:

  | predmv | the predicting motion vector
  | mv | the motion vector

ValueType dirac::BlockMatcher::GetVarUp | ( | const MVector & | predmv,
|  | const MVector & | mv |
| ) |  |  | const

Get a measure of the difference between a motion vector and a prediction, to 1/8pel accuracy

Parameters:

  | predmv | the predicting motion vector
  | mv | the motion vector

void dirac::BlockMatcher::RefineMatchSubp | ( | const int | xpos,
|  | const int | ypos,
|  | const MVector & | mv_prediction,
|  | const float | lambda |
| ) |  |  |

void dirac::BlockMatcher::SetPrecision | ( | const int | n | ) | `[inline]`

References m_precision.

## Member Data Documentation

OLBParams dirac::BlockMatcher::m_bparams`[private]`

const TwoDArray< MvCostData >& dirac::BlockMatcher::m_cost_array`[private]`

const MvArray& dirac::BlockMatcher::m_mv_array`[private]`

PelBlockDiff dirac::BlockMatcher::m_peldiff`[private]`

const PicArray& dirac::BlockMatcher::m_pic_data`[private]`

int dirac::BlockMatcher::m_precision`[private]`

Referenced by SetPrecision().

const PicArray& dirac::BlockMatcher::m_ref_data`[private]`

OneDArray<BlockDiffUp* > dirac::BlockMatcher::m_subpeldiff`[private]`

const int dirac::BlockMatcher::m_var_max`[private]`

const int dirac::BlockMatcher::m_var_max_up`[private]`

The documentation for this class was generated from the following file:

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