# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

# dirac::SubpelRefine Class Reference

The SubpelRefine class takes pixel-accurate motion vectors and refines them to 1/8-pixel accuracy. More...

`#include <me_subpel.h>`

Collaboration diagram for dirac::SubpelRefine:

[legend]

List of all members.

## Public Member Functions

- SubpelRefine (const EncoderParams &cp)
    Constructor.
- ~SubpelRefine ()
    Destructor.
- void DoSubpel (const FrameBuffer &my_buffer, int frame_num, MEData &me_data)
    Does the actual sub-pixel refinement.

## Private Member Functions

- SubpelRefine (const SubpelRefine &cpy)
    Private, body-less copy constructor: this class should not be copied.
- SubpelRefine & operator= (const SubpelRefine &rhs)
    Private, body-less assignment=: this class should not be assigned.
- void MatchPic (const PicArray &pic_data, const PicArray &refup_data, MEData &me_data, int ref_id)
    Match a picture from its (upconverted) reference, and record the block mvs.
- void DoBlock (const int xblock, const int yblock, BlockMatcher &my_bmatch, MEData &me_data, const int ref_id)
    Match an individual block.
- MVector GetPred (int xblock, int yblock, const MvArray &mvarray)
    Get a prediction for a block MV from the neighbouring blocks.

## Private Attributes

- const EncoderParams & m_encparams
    A local reference to the encoder params.
- CandidateList m_cand_list
    The list of candidate vectors being tested.
- OneDArray< ImageCoords > m_nshift
    The relative coords of the set of neighbours used to generate MV predictions.

## Detailed Description

The SubpelRefine class takes pixel-accurate motion vectors and refines them to 1/8-pixel accuracy. It uses references upconverted by a factor of 2 in each dimension, with the remaining precision gained by doing linear interpolation between values on-the-fly.

## Constructor & Destructor Documentation

dirac::SubpelRefine::SubpelRefine | ( | const EncoderParams & | cp | ) |

The constructor initialises the encoder parameters.

Parameters:

  | cp | the parameters used for controlling encoding

dirac::SubpelRefine::~SubpelRefine | ( |  | ) | `[inline]`

dirac::SubpelRefine::SubpelRefine | ( | const SubpelRefine & | cpy | ) | `[private]`

## Member Function Documentation

void dirac::SubpelRefine::DoSubpel | ( | const FrameBuffer & | my_buffer,
|  | int | frame_num,
|  | MEData & | me_data |
| ) |  |  |

Does the actual sub-pixel refinement.

Parameters:

  | my_buffer | the buffer of pictures being used
  | frame_num | the frame number on which motion estimation is being performed
  | me_data | the motion vector data, into which the results will be written

SubpelRefine& dirac::SubpelRefine::operator= | ( | const SubpelRefine & | rhs | ) | `[private]`

void dirac::SubpelRefine::MatchPic | ( | const PicArray & | pic_data,
|  | const PicArray & | refup_data,
|  | MEData & | me_data,
|  | int | ref_id |
| ) |  |  | `[private]`

void dirac::SubpelRefine::DoBlock | ( | const int | xblock,
|  | const int | yblock,
|  | BlockMatcher & | my_bmatch,
|  | MEData & | me_data,
|  | const int | ref_id |
| ) |  |  | `[private]`

MVector dirac::SubpelRefine::GetPred | ( | int | xblock,
|  | int | yblock,
|  | const MvArray & | mvarray |
| ) |  |  | `[private]`

## Member Data Documentation

const EncoderParams& dirac::SubpelRefine::m_encparams `[private]`

CandidateList dirac::SubpelRefine::m_cand_list `[private]`

OneDArray<ImageCoords> dirac::SubpelRefine::m_nshift `[private]`

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

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