HEVC/H265 HM10.0 分析(二)TComDataCU.cpp .
来源:互联网 发布:鞍山市网络作家协会 编辑:程序博客网 时间:2024/06/05 13:39
以下分析TComDataCU.cpp。这个cpp是很重要的,要分几次分析完,这是分析TComDataCU.cpp(一)。
- Void TComDataCU::getPartPosition( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH)
- {
- UInt col = m_uiCUPelX;
- UInt row = m_uiCUPelY;
- switch ( m_pePartSize[0] )
- {
- case SIZE_2NxN:
- nPSW = getWidth(0);
- nPSH = getHeight(0) >> 1;
- xP = col;
- yP = (partIdx ==0)? row: row + nPSH;
- break;
- case SIZE_Nx2N:
- nPSW = getWidth(0) >> 1;
- nPSH = getHeight(0);
- xP = (partIdx ==0)? col: col + nPSW;
- yP = row;
- break;
- case SIZE_NxN:
- nPSW = getWidth(0) >> 1;
- nPSH = getHeight(0) >> 1;
- xP = col + (partIdx&0x1)*nPSW;
- yP = row + (partIdx>>1)*nPSH;
- break;
- case SIZE_2NxnU:
- nPSW = getWidth(0);
- nPSH = ( partIdx == 0 ) ? getHeight(0) >> 2 : ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 );
- xP = col;
- yP = (partIdx ==0)? row: row + getHeight(0) - nPSH;
- break;
- case SIZE_2NxnD:
- nPSW = getWidth(0);
- nPSH = ( partIdx == 0 ) ? ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 ) : getHeight(0) >> 2;
- xP = col;
- yP = (partIdx ==0)? row: row + getHeight(0) - nPSH;
- break;
- case SIZE_nLx2N:
- nPSW = ( partIdx == 0 ) ? getWidth(0) >> 2 : ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 );
- nPSH = getHeight(0);
- xP = (partIdx ==0)? col: col + getWidth(0) - nPSW;
- yP = row;
- break;
- case SIZE_nRx2N:
- nPSW = ( partIdx == 0 ) ? ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 ) : getWidth(0) >> 2;
- nPSH = getHeight(0);
- xP = (partIdx ==0)? col: col + getWidth(0) - nPSW;
- yP = row;
- break;
- default:
- assert ( m_pePartSize[0] == SIZE_2Nx2N );
- nPSW = getWidth(0);
- nPSH = getHeight(0);
- xP = col ;
- yP = row ;
- break;
- }
- }
Void TComDataCU::getPartPosition( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH){ UInt col = m_uiCUPelX; UInt row = m_uiCUPelY; switch ( m_pePartSize[0] ) { case SIZE_2NxN: nPSW = getWidth(0); nPSH = getHeight(0) >> 1; xP = col; yP = (partIdx ==0)? row: row + nPSH; break; case SIZE_Nx2N: nPSW = getWidth(0) >> 1; nPSH = getHeight(0); xP = (partIdx ==0)? col: col + nPSW; yP = row; break; case SIZE_NxN: nPSW = getWidth(0) >> 1; nPSH = getHeight(0) >> 1; xP = col + (partIdx&0x1)*nPSW; yP = row + (partIdx>>1)*nPSH; break; case SIZE_2NxnU: nPSW = getWidth(0); nPSH = ( partIdx == 0 ) ? getHeight(0) >> 2 : ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 ); xP = col; yP = (partIdx ==0)? row: row + getHeight(0) - nPSH; break; case SIZE_2NxnD: nPSW = getWidth(0); nPSH = ( partIdx == 0 ) ? ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 ) : getHeight(0) >> 2; xP = col; yP = (partIdx ==0)? row: row + getHeight(0) - nPSH; break; case SIZE_nLx2N: nPSW = ( partIdx == 0 ) ? getWidth(0) >> 2 : ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 ); nPSH = getHeight(0); xP = (partIdx ==0)? col: col + getWidth(0) - nPSW; yP = row; break; case SIZE_nRx2N: nPSW = ( partIdx == 0 ) ? ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 ) : getWidth(0) >> 2; nPSH = getHeight(0); xP = (partIdx ==0)? col: col + getWidth(0) - nPSW; yP = row; break; default: assert ( m_pePartSize[0] == SIZE_2Nx2N ); nPSW = getWidth(0); nPSH = getHeight(0); xP = col ; yP = row ; break; }}
在 2N*N, 2N*nU,2N*nD 中,上面部分的partIdx 为0,下面部分为1;
在N*2N,nL*2N,nR*2N中, 左边部分的partIdx为0,右边部分为1;
在N*N中, 按四叉树的结构,partIdx 分别为0,1,2,3;
在2N*2N中, partIdx只能为0;
xP,yP的值是CU块左上角的绝对位置值,nPSW,nPSH是当前CU块的宽度和高度,记住,CU是可以嵌套的,CU包含CU,所以有xP,yP,nPSW,nPSH就能够唯一的确定CU块,
- HEVC/H265 HM10.0 分析(二)TComDataCU.cpp
- HEVC/H265 HM10.0 分析(二)TComDataCU.cpp .
- HEVC/H265 HM10.0 分析(二)TComDataCU.cpp
- HEVC/H265 HM10.0 分析(一)NALread.cpp
- HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp
- HEVC/H265 HM10.0 分析(一)NALread.cpp .
- HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp .
- HEVC/H265 HM10.0 分析(一)NALread.cpp
- HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp
- HEVC/H265 性能分析
- HEVC(h265)学习
- HEVC 常用之 类TComDataCU分析
- HEVC帧间预测之二——TComDataCU::xGetColMVP的分析
- HEVC参考代码HM10.0的使用
- 【HEVC】目前H265分析软件推荐
- 【HEVC】目前H265分析软件推荐
- 【HEVC】目前H265分析软件推荐
- 【HEVC】目前H265分析软件推荐
- ios安全系列(3)
- windows下使用ndk-r8e编译libffmpeg.so-1.2.1要点
- HEVC/H265 HM10.0 分析(一)NALread.cpp .
- 去掉全角,半角空格,制表符,回车
- KVM
- HEVC/H265 HM10.0 分析(二)TComDataCU.cpp .
- 还是很水啊!!!
- HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp .
- MSP430F2618写TLV5638
- Adobe Edge Animate –弹性的方块
- I2C总线被占用
- 程序设计竞赛网站集锦
- BUAA-SCSE Training day3 5 6 7
- implement of sqrt without using stdlib