HEVC帧内预测关于MPM的获取问题

zhuyingfeng3463 2014-04-28 10:01:57
再研究HEVC帧内预测时,中间有一个MPM算法,要得到左边和上边的预测模式,而在获取上边CU的地址时,获取的函数为pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx, true, true ),为什么后面两个参数设置为TURE。在具体跟到函数代码时,贴下来:
TComDataCU* TComDataCU::getPUAbove( UInt& uiAPartUnitIdx,
UInt uiCurrPartUnitIdx,
Bool bEnforceSliceRestriction,
Bool planarAtLCUBoundary ,
Bool bEnforceTileRestriction )
#endif
{
UInt uiAbsPartIdx = g_auiZscanToRaster[uiCurrPartUnitIdx];
UInt uiAbsZorderCUIdx = g_auiZscanToRaster[m_uiAbsIdxInLCU];
UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();

if ( !RasterAddress::isZeroRow( uiAbsPartIdx, uiNumPartInCUWidth ) )
{
uiAPartUnitIdx = g_auiRasterToZscan[ uiAbsPartIdx - uiNumPartInCUWidth ];
if ( RasterAddress::isEqualRow( uiAbsPartIdx, uiAbsZorderCUIdx, uiNumPartInCUWidth ) )
{
return m_pcPic->getCU( getAddr() );
}
else
{
uiAPartUnitIdx -= m_uiAbsIdxInLCU;
return this;
}
}

if(planarAtLCUBoundary)
{
return NULL;
}
uiAPartUnitIdx = g_auiRasterToZscan[ uiAbsPartIdx + m_pcPic->getNumPartInCU() - uiNumPartInCUWidth ];
if ( (bEnforceSliceRestriction && (m_pcCUAbove==NULL || m_pcCUAbove->getSlice()==NULL || m_pcCUAbove->getSCUAddr()+uiAPartUnitIdx < m_pcPic->getCU( getAddr() )->getSliceStartCU(uiCurrPartUnitIdx)))
||
(bEnforceTileRestriction &&(m_pcCUAbove==NULL || m_pcCUAbove->getSlice()==NULL || (m_pcPic->getPicSym()->getTileIdxMap( m_pcCUAbove->getAddr() ) != m_pcPic->getPicSym()->getTileIdxMap(getAddr()))))
)
{
return NULL;
}
return m_pcCUAbove;
}

函数具体怎么求出来上边CU地址的,求大神指点。
...全文
682 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ls1588200 2016-04-15
  • 打赏
  • 举报
回复
想问一下你有没有HEVC帧内预测快速算法 ,通过快速模式选择和快速CU划分的都可以,效果不会也无所谓的代码 有没有呢

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧