HEVC代码追踪(十一。九):运动估计/补偿之xTZ2PointSearch
代码 追踪 十一 运动 估计 HEVC 补偿
2023-09-14 08:57:58 时间
p /p
pre code_snippet_id= 539592 snippet_file_name= blog_20141202_1_5458888 name= code >
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31170">
p xTZSearch调用了2个最为主要的函数:xTZ8PointDiamondSearch和xTZ2PointSearch,值得一提的是,HM中还提供了另外一个搜索函数xTZ8PointSquareSearch,但由于实际并没有使用这个函数,且它其实跟钻石搜索只是搜索点的选择略有不同,分析起来基本上也是一样的。 /p p br /p p /p pre code_s
p /p pre code_snippet_id= 539588 snippet_file_name= blog_20141202_1_7201235 name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31172">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31175">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31174">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31176">
p /p pre code_snippet_id= 539245 snippet_file_name= blog_20141202_1_7049848 name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31173">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31177">
p 运动估计的英文名称是Motion Estimation,是视频编码和视频处理(例如去交织)中广泛使用的一种技术。 /p p br /p p 运动估计的 strong span "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31164">
p /p pre name= code "author-img" src="https://ucc.alicdn.com/avatar/img_b52c3e366f5980ae86989f8a252e3c5f.jpg?x-oss-process=image/resize,h_150,m_lfit" />
__inline Void TEncSearch::xTZ2PointSearch( TComPattern* pcPatternKey, IntTZSearchStruct rcStruct, TComMv* pcMvSrchRngLT, TComMv* pcMvSrchRngRB ) Int iSrchRngHorLeft = pcMvSrchRngLT- getHor(); Int iSrchRngHorRight = pcMvSrchRngRB- getHor(); Int iSrchRngVerTop = pcMvSrchRngLT- getVer(); Int iSrchRngVerBottom = pcMvSrchRngRB- getVer(); // 2 point search, // 1 2 3 // check only the 2 untested points // 4 0 5 // around the start point // 6 7 8 //! 注意到,这里的1,3,6,8实际上是搜索步长iDist==2的时候由iDist 1进行赋值的,实际距离以1计算, //! 在前面经过xTZ8PointSearch确定最佳步长为1后,会在这里对以最佳点为中心、周围没搜索过的点进行运动估计 Int iStartX = rcStruct.iBestX; Int iStartY = rcStruct.iBestY; switch( rcStruct.ucPointNr )//! 主要思想是根据该最佳点的位置处理未搜索过的点 case 1: if ( (iStartX - 1) = iSrchRngHorLeft ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY, 0, 2 );//! 左 if ( (iStartY - 1) = iSrchRngVerTop ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY - 1, 0, 2 );//! 上 break; case 2: if ( (iStartY - 1) = iSrchRngVerTop ) if ( (iStartX - 1) = iSrchRngHorLeft ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY - 1, 0, 2 );//! 左上 if ( (iStartX + 1) = iSrchRngHorRight ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY - 1, 0, 2 );//! 右上 break; case 3: if ( (iStartY - 1) = iSrchRngVerTop ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY - 1, 0, 2 );//! 上 if ( (iStartX + 1) = iSrchRngHorRight ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY, 0, 2 );//! 右 break; case 4: if ( (iStartX - 1) = iSrchRngHorLeft ) if ( (iStartY + 1) = iSrchRngVerBottom ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY + 1, 0, 2 );//! 左下 if ( (iStartY - 1) = iSrchRngVerTop ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY - 1, 0, 2 );//! 左上 break; case 5: if ( (iStartX + 1) = iSrchRngHorRight ) if ( (iStartY - 1) = iSrchRngVerTop ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY - 1, 0, 2 );//! 右上 if ( (iStartY + 1) = iSrchRngVerBottom ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY + 1, 0, 2 );//! 右下 break; case 6: if ( (iStartX - 1) = iSrchRngHorLeft ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY , 0, 2 );//! 左 if ( (iStartY + 1) = iSrchRngVerBottom ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY + 1, 0, 2 );//! 下 break; case 7: if ( (iStartY + 1) = iSrchRngVerBottom ) if ( (iStartX - 1) = iSrchRngHorLeft ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY + 1, 0, 2 );//! 左下 if ( (iStartX + 1) = iSrchRngHorRight ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY + 1, 0, 2 );//! 右下 break; case 8: if ( (iStartX + 1) = iSrchRngHorRight ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY, 0, 2 );//! 右 if ( (iStartY + 1) = iSrchRngVerBottom ) xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY + 1, 0, 2 );//! 下 break; default: assert( false ); break; } // switch( rcStruct.ucPointNr ) }
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31170">
p xTZSearch调用了2个最为主要的函数:xTZ8PointDiamondSearch和xTZ2PointSearch,值得一提的是,HM中还提供了另外一个搜索函数xTZ8PointSquareSearch,但由于实际并没有使用这个函数,且它其实跟钻石搜索只是搜索点的选择略有不同,分析起来基本上也是一样的。 /p p br /p p /p pre code_s
p /p pre code_snippet_id= 539588 snippet_file_name= blog_20141202_1_7201235 name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31172">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31175">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31174">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31176">
p /p pre code_snippet_id= 539245 snippet_file_name= blog_20141202_1_7049848 name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31173">
p /p pre name= code "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31177">
p 运动估计的英文名称是Motion Estimation,是视频编码和视频处理(例如去交织)中广泛使用的一种技术。 /p p br /p p 运动估计的 strong span "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/31164">
p /p pre name= code "author-img" src="https://ucc.alicdn.com/avatar/img_b52c3e366f5980ae86989f8a252e3c5f.jpg?x-oss-process=image/resize,h_150,m_lfit" />
相关文章
- 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。
- Android代码静态检查(lint、Checkstyle、ktlint、Detekt)
- Linux下的代码分析工具:提升编程效率(代码分析工具linux)
- 比较精简的Javascript拖动效果函数代码
- IE/FireFox具备兼容性的拖动代码
- asp.net读取并修改config文件实现代码
- php下载文件的代码示例
- Android中截取当前屏幕图片的实例代码
- 鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
- js完美的div拖拽实例代码
- 9段PHP实用功能的代码推荐
- Java中三种简单注解介绍和代码实例