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:

Inheritance graph
[legend]
Collaboration diagram for dirac::MotionCompensator:

Collaboration graph
[legend]

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 CompensateBlock 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::CompensateFrame ( const CodecParams cp,
const AddOrSub  direction,
FrameBuffer buffer,
const int  fnum,
const MvData mv_data 
) [static]

Static function that motion compensates a frame. 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 FrameBuffer object containing the frame and the reference frames
fnum number of frame in the frame buffer to be compensated `
mv_data the motion vector data

void dirac::MotionCompensator::CompensateFrame ( const AddOrSub  direction,
FrameBuffer my_buffer,
int  fnum,
const MvData mv_data 
)

Perform motion compensated addition/subtraction on a frame using parameters

Parameters:
direction whether we're subtracting or adding
fnum number of frame in the frame buffer to be compensated
my_buffer the FrameBuffer object containing the frame and the reference frames `
mv_data the motion vector data

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

void dirac::MotionCompensator::CompensateComponent ( Frame picframe,
const Frame ref1frame,
const Frame ref2frame,
const MvData mv_data,
const CompSort  cs 
) [private]

void dirac::MotionCompensator::DCBlock ( TwoDArray< CalcValueType > &  pic_data,
const ImageCoords orig_pic_size,
const ValueType  dc,
const ImageCoords Pos,
const TwoDArray< ValueType > &  Weights 
) [private]

DC-compensate an individual block

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

float dirac::MotionCompensator::RaisedCosine ( float  t,
float  B 
) [private]

float dirac::MotionCompensator::Linear ( float  t,
float  B 
) [private]

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

void dirac::MotionCompensator::CreateBlock ( int  xblen,
int  yblen,
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,
int  xblen,
int  yblen,
TwoDArray< ValueType > &  Flipped 
) [private]

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

virtual void dirac::MotionCompensator::CompensateBlock ( TwoDArray< CalcValueType > &  pic_data,
const ImageCoords orig_pic_size,
const PicArray refup_data,
const MVector Vec,
const ImageCoords Pos,
const TwoDArray< ValueType > &  Weights 
) [private, pure virtual]

Implemented in dirac::MotionCompensator_Pixel, dirac::MotionCompensator_HalfPixel, dirac::MotionCompensator_QuarterPixel, and dirac::MotionCompensator_EighthPixel.


Member Data Documentation

CodecParams dirac::MotionCompensator::m_cparams [protected]

ChromaFormat dirac::MotionCompensator::m_cformat [protected]

bool dirac::MotionCompensator::luma_or_chroma [protected]

AddOrSub dirac::MotionCompensator::m_add_or_sub [protected]

OLBParams dirac::MotionCompensator::m_bparams [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_block_weights[2] [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_full_block_weights [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_macro_block_weights[2] [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_full_macro_block_weights [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_sub_block_weights[2] [protected]

TwoDArray<ValueType>* dirac::MotionCompensator::m_full_sub_block_weights [protected]

CalcValueType dirac::MotionCompensator::m_max_h_weight [protected]

CalcValueType dirac::MotionCompensator::m_max_v_weight [protected]

CalcValueType dirac::MotionCompensator::m_shift_bits [protected]


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.