📄 me.cpp
字号:
/*////////////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2002-2005 Intel Corporation. All Rights Reserved.//*/#include <limits.h>#include "mpeg2_defs.h"#define SAD_FUNC_16x16 \ ippiSAD16x16_8u32s(pBlock, \ BlockStep, \ ref_data, \ RefStep, \ &MAD, \ flag)#define SAD_FUNC_16x8 \ ippiSAD16x8_8u32s_C1R(pBlock, \ BlockStep, \ ref_data, \ RefStep, \ &MAD, \ flag)#define VARMEAN_FUNC_16x16 \ ippiVarMeanDiff16x16_8u32s_C1R( \ pBlock, \ BlockStep, \ ref_data, \ RefStep, \ pSrcMean, \ Var[!min_index], \ Mean[!min_index], \ flag); \ MAD = Var[!min_index][0] + Var[!min_index][1] + \ Var[!min_index][2] + Var[!min_index][3]#define VARMEAN_FUNC_16x8 \ ippiVarMeanDiff16x8_8u32s_C1R( \ pBlock, \ BlockStep, \ ref_data, \ RefStep, \ pSrcMean, \ Var[!min_index], \ Mean[!min_index], \ flag); \ MAD = Var[!min_index][0] + Var[!min_index][1]/***********************************************************/#define ME_FUNC MotionEstimation_Frame#define FIELD_FLAG 0#define ME_STEP_X 2#define ME_STEP_Y 2#define ME_MIN_STEP 2#define NUM_BLOCKS 4#define TRY_POSITION(FUNC) \if (me_matrix[YN*me_matrix_w + XN] != me_matrix_id) \{ \ me_matrix[YN*me_matrix_w + XN] = me_matrix_id; \ ref_data = (Ipp8u*)(pRef + (XN >> 1) + (YN >> 1)*RefStep); \ flag = ((XN & 1) << 3) | ((YN & 1) << 2); \ \ FUNC##_16x16; \ \ if(MAD < BestMAD) \ { \ min_point = 1; \ BestMAD = MAD; \ min_index = !min_index; \ XMIN = XN; \ YMIN = YN; \ } \}#include "me.h"/***********************************************************/#undef ME_FUNC#define ME_FUNC MotionEstimation_FieldPict#undef NUM_BLOCKS#define NUM_BLOCKS 2#undef TRY_POSITION#define TRY_POSITION(FUNC) \if (me_matrix[YN*me_matrix_w + XN] != me_matrix_id) \{ \ me_matrix[YN*me_matrix_w + XN] = me_matrix_id; \ ref_data = (Ipp8u*)(pRef + (XN >> 1) + (YN >> 1)*RefStep); \ flag = ((XN & 1) << 3) | ((YN & 1) << 2); \ \ FUNC##_16x8; \ \ MAD = Var[!min_index][0] + Var[!min_index][1]; \ if(MAD < BestMAD) \ { \ min_point = 1; \ BestMAD = MAD; \ min_index = !min_index; \ XMIN = XN; \ YMIN = YN; \ } \}#include "me.h"/***********************************************************/#undef ME_FUNC#define ME_FUNC MotionEstimation_Field#undef FIELD_FLAG#define FIELD_FLAG 1#undef NUM_BLOCKS#define NUM_BLOCKS 2#undef TRY_POSITION#define TRY_POSITION(FUNC) \if (me_matrix[YN*me_matrix_w + XN] != me_matrix_id) \{ \ me_matrix[YN*me_matrix_w + XN] = me_matrix_id; \ ref_data = (Ipp8u*)(pRef + (XN >> 1) + (YN >> 1)*RefStep); \ flag = ((XN & 1) << 3) | ((YN & 1) << 2); \ \ /* top field */ \ FUNC##_16x8; \ \ MAD = Var[!min_index][0] + Var[!min_index][1]; \ if(MAD < BestMAD) \ { \ min_point = 1; \ field_select = 0; \ BestMAD = MAD; \ min_index = !min_index; \ XMIN = XN; \ YMIN = YN; \ } \ \ /* bottom field */ \ ref_data += (RefStep >> 1); \ FUNC##_16x8; \ \ MAD = Var[!min_index][0] + Var[!min_index][1]; \ if(MAD < BestMAD) \ { \ min_point = 1; \ field_select = 1; \ BestMAD = MAD; \ min_index = !min_index; \ XMIN = XN; \ YMIN = YN; \ } \}#include "me.h"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -