Dirac - A Video Codec

Created by the British Broadcasting Corporation.


Public Member Functions | Private Member Functions | Private Attributes

dirac::ModeDecider Class Reference

Decides between superblock and block prediction modes. More...

#include <me_mode_decn.h>

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

List of all members.

Public Member Functions

Private Member Functions

Private Attributes


Detailed Description

Loops over all the superblocks and decides on the best modes. A superblock is a square of 16 blocks. There are three possible splitting levels: level 0 means the superblock is considered as a single block; level 1 means the superblock is considered as 4 larger blocks, termed sub-superblocks; level 0 means the superblock is split right down to blocks.

In deciding which modes to adopt, the ModeDecider object calculates costs for all permutations, doing motion estimation for the level 1 and level 0 modes as these have not been calculated before. The process of decision for each is as follows. For each SB, we loop over the levels, and call DoLevelDecn. DoLevelDecn does motion estimation if it's necessary. Then it assumes that we don't have a common block mode and calls DoUnitDecn which finds the best mode for each unit in the SB at that level, individually. When we've got a best cost for that level we go up to the next one.


Constructor & Destructor Documentation

dirac::ModeDecider::ModeDecider ( const EncoderParams encp)

The constructor creates arrays for handling the motion vector data at splitting levels 0 and 1, as motion estimation must be performed for these levels.

dirac::ModeDecider::~ModeDecider ( )

The destructor destroys the classes created in the constructor

dirac::ModeDecider::ModeDecider ( const ModeDecider cpy) [private]

Member Function Documentation

void dirac::ModeDecider::DoLevelDecn ( int  level) [private]
void dirac::ModeDecider::DoME ( const int  xpos,
const int  ypos,
const int  level 
) [private]
void dirac::ModeDecider::DoModeDecn ( EncQueue my_buffer,
int  pic_num 
)

Does the mode decision

Parameters:
my_bufferthe buffer of all the relevant frames
pic_numthe picture number for which motion estimation is being done
void dirac::ModeDecider::DoSBDecn ( ) [private]
float dirac::ModeDecider::DoUnitDecn ( const int  xpos,
const int  ypos,
const int  level 
) [private]
ValueType dirac::ModeDecider::GetBlockDC ( const PicArray pic_data,
int  xloc,
int  yloc,
int  split,
CompSort  cs 
) [private]
ValueType dirac::ModeDecider::GetDCPred ( int  xblock,
int  yblock 
) [private]
float dirac::ModeDecider::GetDCVar ( const ValueType  dc_val,
const ValueType  dc_pred 
) [private]
float dirac::ModeDecider::ModeCost ( const int  xindex,
const int  yindex 
) [private]
ModeDecider& dirac::ModeDecider::operator= ( const ModeDecider rhs) [private]
void dirac::ModeDecider::SetDC ( const PicArray pic_data,
MEData me_data,
CompSort  cs 
) [private]
void dirac::ModeDecider::SetDC ( EncQueue my_buffer,
int  pic_num 
) [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.