📄 umc_h264_bme.h
字号:
//// 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) 2004 - 2005 Intel Corporation. All Rights Reserved.//#ifndef BASIC_H__#define BASIC_H__#include "ippdefs.h"#include "umc_h264_core_enc.h"#if _MSC_VER>1000#pragma warning (disable:4244)#endifnamespace UMC{// 4x4 Block differencinginline void Diff4x4( Ipp8u* pPred, // predictor pels Ipp8u* pSrc, // source pels const Ipp32u uPitch, // source pitch Ipp16s* pDiff // result buffer){ ippiGetDiff4x4_8u16s_C1(pSrc,uPitch,pPred,16,pDiff,8,0,0,0,0);}// The definition for this function has changed to// a pDiff of type Ipp16s* instead of Ipp32s* All of the// functions below need to be updated to match.// Commented out because it currently won't build this way...// 4x4 Block addvoid Add4x4( Ipp8u* pPred, // predictor pels Ipp32s* pErr, // error pels const Ipp32u uPitch, // reconstruct pitch Ipp8u* pRec // reconstruct block);// 4x4 Block copyinline void Copy4x4( Ipp8u* pSrc, const Ipp32u uPitch, Ipp8u* pDst){ IppiSize s; s.height=4; s.width=4; ippiCopy_8u_C1R(pSrc,16,pDst,uPitch,s);}inline void Copy4x4_PredPitch4( Ipp8u* pSrc, const Ipp32u uPitch, Ipp8u* pDst ){ IppiSize s; s.height=4; s.width=4; ippiCopy_8u_C1R(pSrc,4,pDst,uPitch,s);}// Memcpyinline void MemCopy( Ipp8u *pDst, const Ipp8u *pSrc, const Ipp32u uHeight, const Ipp32u uWidth){ IppiSize s; s.height=uHeight; s.width=uWidth; ippiCopy_8u_C1R(pSrc,16,pDst,16,s);}// Memcpyinline void SADComp41( Ipp16u *ThisSAD, Ipp32u *BestSADs, T_ECORE_MV *BestMVs, T_RefIdx this_ref, T_RefIdx *bestRefIdxs, T_ECORE_MV *this_pred_MV, T_ECORE_MV *best_pred_MV, Ipp32s xvec, Ipp32s yvec, int start, int end){ Ipp32u tempSAD; for (int block = start; block < end; ++block) { tempSAD = (Ipp32u)ThisSAD[block]; if (tempSAD < BestSADs[block]) { BestSADs[block] = tempSAD; BestMVs[block].iMVx = (Ipp8s)xvec*SubPelFactor; BestMVs[block].iMVy = (Ipp8s)yvec*SubPelFactor; bestRefIdxs[block] = this_ref; best_pred_MV[block] = this_pred_MV[block]; } }}inline void Move_ME_Info( Ipp32u *ThisSAD, Ipp32u *BestSADs, T_ECORE_MV *this_BestMVs, T_ECORE_MV *BestMVs, T_RefIdx this_ref, T_RefIdx *bestRefIdxs, T_ECORE_MV *this_pred_MV, T_ECORE_MV *best_pred_MV, int start, int end){ for (int block = start; block < end; ++block) { BestSADs[block] = ThisSAD[block]; BestMVs[block] = this_BestMVs[block]; bestRefIdxs[block] = this_ref; best_pred_MV[block] = this_pred_MV[block]; }}} //namespace UMC#endif // BASIC_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -