#include "me_epzs.h"
Go to the source code of this file.
Functions | |
int | EPZSIntPelBlockMotionSearch (Macroblock *, MotionVector *, MEBlock *, int, int) |
int | EPZSIntPelBlockMotionSearchSubMB (Macroblock *, MotionVector *, MEBlock *, int, int) |
int | EPZSIntBiPredBlockMotionSearch (Macroblock *, int, MotionVector *, MotionVector *, MotionVector *, MotionVector *, MEBlock *, int, int, int) |
Definition in file me_epzs_int.h.
int EPZSIntBiPredBlockMotionSearch | ( | Macroblock * | , | |
int | , | |||
MotionVector * | , | |||
MotionVector * | , | |||
MotionVector * | , | |||
MotionVector * | , | |||
MEBlock * | , | |||
int | , | |||
int | , | |||
int | ||||
) |
FAST Motion Estimation using EPZS AMT/HYC.
If p_EPZS->medthres satisfied, then terminate, otherwise generate Predictors
Add Spatial Predictors in predictor list. Scheme adds zero, left, top-left, top, top-right. Note that top-left adds very little in terms of performance and could be removed with little penalty if any.
Check all predictors
Refine using EPZS pattern if needed Note that we are using a conservative threshold method. Threshold could be tested after checking only a certain number of predictors instead of the full set. Code could be easily modified for this task.
Adapt pattern based on different conditions.
center on best predictor
Check Second best predictor with EPZS pattern
Second best. Note that following code is identical as for best predictor.
Definition at line 762 of file me_epzs_int.c.
References EPZSDetermineStopCriterion(), EPZSSpatialPredictors(), storable_picture::motion, pic_motion_params::mv, macroblock::p_Img, macroblock::p_slice, and pic_motion_params::ref_idx.
Referenced by init_ME_engine().
int EPZSIntPelBlockMotionSearch | ( | Macroblock * | , | |
MotionVector * | , | |||
MEBlock * | , | |||
int | , | |||
int | ||||
) |
FAST Motion Estimation using EPZS AMT/HYC.
If p_EPZS->medthres satisfied, then terminate, otherwise generate Predictors Condition could be strengthened by consideration distortion of adjacent partitions.
Add Spatial Predictors in predictor list. Scheme adds zero, left, top-left, top, top-right. Note that top-left adds very little in terms of performance and could be removed with little penalty if any.
Window Size Based Predictors Basically replaces a Hierarchical ME concept and helps escaping local minima, or determining large motion variations. Following predictors can be adjusted further (i.e. removed, conditioned etc) based on distortion, correlation of adjacent MVs, complexity etc. These predictors and their conditioning could also be moved after all other predictors have been tested. Adaptation could also be based on type of material and coding mode (i.e. field/frame coding,MBAFF etc considering the higher dependency with opposite parity field
Blocktype/Reference dependent predictors. Since already mvs for other blocktypes/references have been computed, we can reuse them in order to easier determine the optimal point. Use of predictors could depend on cost,
Check all predictors
Refine using EPZS pattern if needed Note that we are using a conservative threshold method. Threshold could be tested after checking only a certain number of predictors instead of the full set. Code could be easily modified for this task.
Adapt pattern based on different conditions.
center on best predictor
Check Second best predictor with EPZS pattern
Second best. Note that following code is identical as for best predictor.
Definition at line 42 of file me_epzs_int.c.
References EPZSBlockTypePredictorsMB(), EPZSDetermineStopCriterion(), EPZSSpatialMemPredictors(), EPZSSpatialPredictors(), EPZSTemporalPredictors(), EPZSWindowPredictors(), macroblock::mbAddrX, storable_picture::motion, pic_motion_params::mv, macroblock::p_Img, macroblock::p_slice, pic_motion_params::ref_idx, and slice::slice_type.
Referenced by init_ME_engine(), PartitionMotionSearch(), and SubPartitionMotionSearch().
int EPZSIntPelBlockMotionSearchSubMB | ( | Macroblock * | , | |
MotionVector * | , | |||
MEBlock * | , | |||
int | , | |||
int | ||||
) |
FAST Motion Estimation using EPZS AMT/HYC.
If p_EPZS->medthres satisfied, then terminate, otherwise generate Predictors Condition could be strengthened by consideration distortion of adjacent partitions.
Add Spatial Predictors in predictor list. Scheme adds zero, left, top-left, top, top-right. Note that top-left adds very little in terms of performance and could be removed with little penalty if any.
Blocktype/Reference dependent predictors. Since already mvs for other blocktypes/references have been computed, we can reuse them in order to easier determine the optimal point. Use of predictors could depend on cost,
Check all predictors
Refine using EPZS pattern if needed Note that we are using a conservative threshold method. Threshold could be tested after checking only a certain number of predictors instead of the full set. Code could be easily modified for this task.
Adapt pattern based on different conditions.
center on best predictor
Check Second best predictor with EPZS pattern
Now consider second best.
Definition at line 411 of file me_epzs_int.c.
References EPZSBlockTypePredictors(), EPZSDetermineStopCriterion(), EPZSSpatialMemPredictors(), EPZSSpatialPredictors(), macroblock::mbAddrX, storable_picture::motion, pic_motion_params::mv, macroblock::p_Img, macroblock::p_slice, pic_motion_params::ref_idx, and slice::slice_type.
Referenced by SubPartitionMotionSearch().