Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac::MotionCompensator Class Reference

Abstract Motion compensator class. More...

#include <mot_comp.h>

Inheritance diagram for dirac::MotionCompensator:

dirac::MotionCompensator_EighthPixel dirac::MotionCompensator_HalfPixel dirac::MotionCompensator_Pixel dirac::MotionCompensator_QuarterPixel

List of all members.

Public Member Functions

Static Public Member Functions

Protected Attributes

Private Member Functions


Detailed Description

Motion compensator class, for doing motion compensation with two references and overlapped blocks, using raised-cosine roll-off. This is an abstract class. It must be sub-classed and the BlockPixelPred must be defined in the sub-classes.

Constructor & Destructor Documentation

dirac::MotionCompensator::MotionCompensator ( const CodecParams &  cp  ) 

Constructor initialises using codec parameters.

virtual dirac::MotionCompensator::~MotionCompensator (  )  [virtual]

dirac::MotionCompensator::MotionCompensator ( const MotionCompensator &  cpy  )  [private]


Member Function Documentation

static void dirac::MotionCompensator::CompensatePicture ( const CodecParams &  cp,
const AddOrSub  direction,
PictureBuffer &  buffer,
const int  pnum,
const MvData &  mv_data 
) [static]

Static function that motion compensates a picture. It uses the MV precision value in the CodecParams to instantiate the appropriate MotionCompensation sub-class.

Parameters:
cp Encoder/decoder parameters
direction whether we're subtracting or adding
buffer the PictureBuffer object containing the picture and the reference pictures
pnum number of picture in the picture buffer to be compensated `
mv_data the motion vector data

void dirac::MotionCompensator::CompensatePicture ( const AddOrSub  direction,
PictureBuffer &  my_buffer,
int  pnum,
const MvData &  mv_data 
)

Perform motion compensated addition/subtraction on a picture using parameters

Parameters:
direction whether we're subtracting or adding
pnum number of picture in the picture buffer to be compensated
my_buffer the PictureBuffer object containing the picture and the reference pictures `
mv_data the motion vector data

MotionCompensator& dirac::MotionCompensator::operator= ( const MotionCompensator &  rhs  )  [private]

void dirac::MotionCompensator::CompensateComponent ( Picture &  pic,
const Picture &  ref1picture,
const Picture &  ref2picture,
const MvData &  mv_data,
const CompSort  cs 
) [private]

void dirac::MotionCompensator::DCBlock ( TwoDArray< ValueType > &  block_data,
const ValueType  dc 
) [private]

DC-compensate an individual block

void dirac::MotionCompensator::ReConfig (  )  [private]

void dirac::MotionCompensator::CalculateWeights ( int  xbsep,
int  ybsep,
TwoDArray< ValueType > *  wt_array 
) [private]

void dirac::MotionCompensator::CreateBlock ( int  xbsep,
int  ybsep,
bool  FullX,
bool  FullY,
TwoDArray< ValueType > &  WeightArray 
) [private]

Params defines the block parameters so the relevant weighting arrays can be created. FullX and FullY refer to whether the weight should be adjusted for the edge of an image. eg. 1D Weighting shapes in x direction FullX true FullX false ******** * * * * * *

void dirac::MotionCompensator::FlipX ( const TwoDArray< ValueType > &  Original,
TwoDArray< ValueType > &  Flipped 
) [private]

void dirac::MotionCompensator::FlipY ( const TwoDArray< ValueType > &  Original,
TwoDArray< ValueType > &  Flipped 
) [private]

virtual void dirac::MotionCompensator::CompensateBlock ( TwoDArray< ValueType > &  pic_data,
const ImageCoords &  pos,
const ImageCoords &  orig_pic_size,
PredMode  block_mode,
ValueType  dc,
const PicArray &  ref1up_data,
const MVector &  mv1,
const PicArray &  ref2up_data,
const MVector &  mv2,
const TwoDArray< ValueType > &  Weights 
) [private, virtual]

virtual void dirac::MotionCompensator::BlockPixelPred ( TwoDArray< ValueType > &  block_data,
const ImageCoords &  pos,
const ImageCoords &  orig_pic_size,
const PicArray &  refup_data,
const MVector &  mv 
) [private, pure virtual]

void dirac::MotionCompensator::AdjustBlockByRefWeights ( TwoDArray< ValueType > &  val1_block,
TwoDArray< ValueType > &  val2_block,
PredMode  block_mode 
) [private]

void dirac::MotionCompensator::AdjustBlockBySpatialWeights ( TwoDArray< ValueType > &  val_block,
const ImageCoords &  pos,
const TwoDArray< ValueType > &  wt_array 
) [private]


Member Data Documentation


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.