HEVC代码学习20:xPatternSearchFast函数
2017-08-10 17:38
1671 查看
之前主要集中在亚像素部分,整像素搜索没仔细看,只看过理论部分,现在来看下整像素部分的代码。
之前已经说过,运动估计中首先进行整像素搜索,找到了一个局部最优点,作为亚像素搜索的起点继续搜索,得到最优MV。
整像素搜索的入口函数是xPatternSearch(Full search)和xPatternSearchFast(TZ search),两者的选择由m_iFastSearch决定。m_iFastSearch为真时,使用TZ search。m_iFastSearch通过cfg文件中的FastSearch赋值,默认为1,使用TZ search。其实m_iFastSearch为真时,是有两种取值的:当为1时,使用Diamond算法;当为2时使用PMVFAST算法。在实际应用中,都使用的是Diamond算法。
这里就来学习一下xPatternSearchFast函数,代码很简单,就是一个入口函数,其中调用重要函数xTZSearch来实现Diamond搜索,另一个xTZSearchSelective实现的是PMVFAST,一般不使用。
之前已经说过,运动估计中首先进行整像素搜索,找到了一个局部最优点,作为亚像素搜索的起点继续搜索,得到最优MV。
整像素搜索的入口函数是xPatternSearch(Full search)和xPatternSearchFast(TZ search),两者的选择由m_iFastSearch决定。m_iFastSearch为真时,使用TZ search。m_iFastSearch通过cfg文件中的FastSearch赋值,默认为1,使用TZ search。其实m_iFastSearch为真时,是有两种取值的:当为1时,使用Diamond算法;当为2时使用PMVFAST算法。在实际应用中,都使用的是Diamond算法。
这里就来学习一下xPatternSearchFast函数,代码很简单,就是一个入口函数,其中调用重要函数xTZSearch来实现Diamond搜索,另一个xTZSearchSelective实现的是PMVFAST,一般不使用。
Void TEncSearch::xPatternSearchFast( TComDataCU* pcCU, TComPattern* pcPatternKey, Pel* piRefY, Int iRefStride, TComMv* pcMvSrchRngLT, TComMv* pcMvSrchRngRB, TComMv &rcMv, Distortion &ruiSAD, const TComMv* pIntegerMv2Nx2NPred ) { assert (MD_LEFT < NUM_MV_PREDICTORS); pcCU->getMvPredLeft ( m_acMvPredictors[MD_LEFT] ); //获取左侧MVP assert (MD_ABOVE < NUM_MV_PREDICTORS); pcCU->getMvPredAbove ( m_acMvPredictors[MD_ABOVE] ); //获取上方MVP assert (MD_ABOVE_RIGHT < NUM_MV_PREDICTORS); pcCU->getMvPredAboveRight ( m_acMvPredictors[MD_ABOVE_RIGHT] ); //获取右上MVP switch ( m_iFastSearch ) { case 1: xTZSearch( pcCU, pcPatternKey, piRefY, iRefStride, pcMvSrchRngLT, pcMvSrchRngRB, rcMv, ruiSAD, pIntegerMv2Nx2NPred ); //Diamond break; case 2: xTZSearchSelective( pcCU, pcPatternKey, piRefY, iRefStride, pcMvSrchRngLT, pcMvSrchRngRB, rcMv, ruiSAD, pIntegerMv2Nx2NPred ); //PMVFAST break; default: break; } }
相关文章推荐
- HEVC代码追踪(十一。四):运动估计/补偿之xPatternSearch和xPatternSearchFast
- HEVC代码追踪(十一。四):运动估计/补偿之xPatternSearch和xPatternSearchFast
- HEVC代码学习7:xPatternSearchFracDIF函数
- HTM-16.2代码(10)——xPatternSearch和xPatternSearchFast
- 代码大全学习-20-不常见的控制结构(Unusual Control Structures)
- 【HEVC学习与研究】7.HEVC参考代码HM10.0的使用
- 【Java学习之代码学习】 Prog17_求1+2!+3!+...+20!的和的问题
- HEVC代码学习26:率失真代价类TComRdCost
- HEVC代码学习16:运动矢量MV的数据结构
- HEVC代码学习27:calcRdCost函数
- HEVC代码学习35:xEncodeCU函数
- 对“视觉机器学习20讲配套仿真代码”的研究心得---EM算法
- 【HEVC学习与研究】37、HM编码器的基本结构2:帧内编码部分的代码骨架
- HEVC代码学习8:xMotionEstimation函数
- FVC/JEM代码学习20:xCheckRDCostIntra
- HEVC代码学习24:encodeResAndCalcRdInterCU函数
- 对“视觉机器学习20讲配套仿真代码”的研究心得---回归学习
- jq代码学习20----- jq serializeArray( ) fl ch6 207
- HEVC代码学习18:运动估计和运动补偿总结
- Void TEncSearch::xPatternSearchFast()èxTZSearch()