The process of encoding starts with motion estimation (see Figure "Motion Compensation Scheme for Predicted Blocks" and Figure "Motion Compensation Scheme for Bi-Predicted Blocks"). Block SrcRef is found for each non-intra block Dst to be predicted, or two blocks SrcRefF and SrcRefB are found if block Dst is bi-predicted. The reference blocks are supposed to be similar to block Dst.
The figure below shows how reference frames are selected.
The motion estimation process is performed by the following general Motion Estimation functions:
Evaluation of difference between current predicted and reference blocks | |
For predicted blocks | For bi-predicted blocks |
GetDiff16x16 | GetDiff16x16B |
GetDiff16x8 | GetDiff16x8B |
GetDiff8x8 | GetDiff8x8B |
GetDiff8x16 | GetDiff8x16B |
GetDiff8x4 | GetDiff8x4B |
Evaluation of sum of squares of differences between current and reference blocks | |
For predicted blocks | For bi-predicted blocks |
SqrDiff16x16 | SqrDiff16x16B |
Evaluation of variance and mean of 8x8 block | |
VarMean8x8 | |
Evaluation of variances and means of difference between two blocks | |
VarMeanDiff16x16 | |
VarMeanDiff16x8 | |
Evaluation of variance of current block | |
Variance16x16 | |
Evaluation of sum of absolute difference between current and reference blocks | |
SAD16x16 | |
SAD16x8 | |
SAD8x8 | |
SAD4x4 |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.