HEVC代码追踪(十一。八):运动估计/补偿之xTZ8PointSquareSearch

简介: <p><br></p> <p></p> <pre code_snippet_id="539588" snippet_file_name="blog_20141202_1_7201235" name="code" class="cpp">__inline Void TEncSearch::xTZ8PointSquareSearch( TComPattern* pcPatternKey,


__inline Void TEncSearch::xTZ8PointSquareSearch( TComPattern* pcPatternKey, IntTZSearchStruct& rcStruct, TComMv* pcMvSrchRngLT, TComMv* pcMvSrchRngRB, const Int iStartX, const Int iStartY, const Int iDist )
{
  Int   iSrchRngHorLeft   = pcMvSrchRngLT->getHor();
  Int   iSrchRngHorRight  = pcMvSrchRngRB->getHor();
  Int   iSrchRngVerTop    = pcMvSrchRngLT->getVer();
  Int   iSrchRngVerBottom = pcMvSrchRngRB->getVer();
  
  // 8 point search,                   //   1 2 3
  // search around the start point     //   4 0 5
  // with the required  distance       //   6 7 8
  assert( iDist != 0 );
  const Int iTop        = iStartY - iDist;
  const Int iBottom     = iStartY + iDist;
  const Int iLeft       = iStartX - iDist;
  const Int iRight      = iStartX + iDist;
  rcStruct.uiBestRound += 1;
  
  if ( iTop >= iSrchRngVerTop ) // check top
  {
    if ( iLeft >= iSrchRngHorLeft ) // check top left
    {
      xTZSearchHelp( pcPatternKey, rcStruct, iLeft, iTop, 1, iDist );
    }
    // top middle
    xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iTop, 2, iDist );
    
    if ( iRight <= iSrchRngHorRight ) // check top right
    {
      xTZSearchHelp( pcPatternKey, rcStruct, iRight, iTop, 3, iDist );
    }
  } // check top
  if ( iLeft >= iSrchRngHorLeft ) // check middle left
  {
    xTZSearchHelp( pcPatternKey, rcStruct, iLeft, iStartY, 4, iDist );
  }
  if ( iRight <= iSrchRngHorRight ) // check middle right
  {
    xTZSearchHelp( pcPatternKey, rcStruct, iRight, iStartY, 5, iDist );
  }
  if ( iBottom <= iSrchRngVerBottom ) // check bottom
  {
    if ( iLeft >= iSrchRngHorLeft ) // check bottom left
    {
      xTZSearchHelp( pcPatternKey, rcStruct, iLeft, iBottom, 6, iDist );
    }
    // check bottom middle
    xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iBottom, 7, iDist );
    
    if ( iRight <= iSrchRngHorRight ) // check bottom right
    {
      xTZSearchHelp( pcPatternKey, rcStruct, iRight, iBottom, 8, iDist );
    }
  } // check bottom
}




目录
相关文章
|
弹性计算
阿里云4核16G游戏专用服务器26元,就问你服不服?
阿里云4核16G游戏专用服务器26元,就问你服不服?
|
Dubbo Java 应用服务中间件
使用 Dubbo 对遗留单体系统进行微服务改造
在 2016 年 11 月份的《技术雷达》中,ThoughtWorks 给予了微服务很高的评价。同时,也有越来越多的组织将实施微服务作为架构演进的一个必选方向。只不过在拥有众多遗留系统的组织内,将曾经的单体系统拆分为微服务并不是一件容易的事情。
9255 0
|
机器学习/深度学习 分布式计算 监控
实时流处理技术在金融风控中的应用
【7月更文挑战第16天】实时流处理技术在金融风控中的应用,不仅提升了金融服务的质量和效率,还在风险管理、反欺诈、市场洞察等方面发挥着至关重要的作用。随着大数据技术的不断发展,实时流处理技术将在金融领域发挥更加广泛和深入的作用,为金融机构带来更多的创新和发展机遇。
|
iOS开发
清除QuickTime Player 在Dock程序右键上的历史记录
清除QuickTime Player 在Dock程序右键上的历史记录
1043 2
清除QuickTime Player 在Dock程序右键上的历史记录
|
Java 关系型数据库 MySQL
基于SpringBoot+Vue健身房管理系统(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue健身房管理系统(源码+部署说明+演示视频+源码介绍)
356 1
|
数据可视化 数据挖掘 数据处理
淘宝天猫玩具销售数据可视化(上)
淘宝天猫玩具销售数据可视化
420 1
|
Windows
win10搜索功能失效用不了如何解决|
win10搜索功能失效用不了如何解决|
215 0
|
存储 Unix Linux
Linux 用户账户信息 passwd结构体
Linux 用户账户信息 passwd结构体
174 0
|
存储 编译器 C语言
【C语言入门】C语言常见基础必懂概念(二)字符篇
【C语言入门】C语言常见基础必懂概念(二)字符篇
289 0
|
存储 Dubbo Java
Dubbo整合seata实现分布式事务
Dubbo整合seata实现分布式事