HEVC MarginX MarginY的理解
来源:互联网 发布:尼古拉斯赵四 知乎 编辑:程序博客网 时间:2024/06/06 01:15
如上图所示,以亮度信号为例,解释了内存中扩展图像和原始图像之间的存储关系,以及计算关系,图像存储一份,色度信号与之类似。
Void TComPicYuv::create( Int iPicWidth, Int iPicHeight, UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxCUDepth ){ m_iPicWidth = iPicWidth; m_iPicHeight = iPicHeight; // --> After config finished! m_iCuWidth = uiMaxCUWidth; m_iCuHeight = uiMaxCUHeight; Int numCuInWidth = m_iPicWidth / m_iCuWidth + (m_iPicWidth % m_iCuWidth != 0); Int numCuInHeight = m_iPicHeight / m_iCuHeight + (m_iPicHeight % m_iCuHeight != 0); m_iLumaMarginX = g_uiMaxCUWidth + 16; // for 16-byte alignment m_iLumaMarginY = g_uiMaxCUHeight + 16; // margin for 8-tap filter and infinite padding m_iChromaMarginX = m_iLumaMarginX>>1; m_iChromaMarginY = m_iLumaMarginY>>1; m_apiPicBufY = (Pel*)xMalloc( Pel, ( m_iPicWidth + (m_iLumaMarginX <<1)) * ( m_iPicHeight + (m_iLumaMarginY <<1))); m_apiPicBufU = (Pel*)xMalloc( Pel, ((m_iPicWidth >> 1) + (m_iChromaMarginX<<1)) * ((m_iPicHeight >> 1) + (m_iChromaMarginY<<1))); m_apiPicBufV = (Pel*)xMalloc( Pel, ((m_iPicWidth >> 1) + (m_iChromaMarginX<<1)) * ((m_iPicHeight >> 1) + (m_iChromaMarginY<<1))); m_piPicOrgY = m_apiPicBufY + m_iLumaMarginY * getStride() + m_iLumaMarginX; m_piPicOrgU = m_apiPicBufU + m_iChromaMarginY * getCStride() + m_iChromaMarginX; m_piPicOrgV = m_apiPicBufV + m_iChromaMarginY * getCStride() + m_iChromaMarginX; m_bIsBorderExtended = false; m_cuOffsetY = new Int[numCuInWidth * numCuInHeight]; m_cuOffsetC = new Int[numCuInWidth * numCuInHeight]; for (Int cuRow = 0; cuRow < numCuInHeight; cuRow++) { for (Int cuCol = 0; cuCol < numCuInWidth; cuCol++) { m_cuOffsetY[cuRow * numCuInWidth + cuCol] = getStride() * cuRow * m_iCuHeight + cuCol * m_iCuWidth; m_cuOffsetC[cuRow * numCuInWidth + cuCol] = getCStride() * cuRow * (m_iCuHeight / 2) + cuCol * (m_iCuWidth / 2); } } m_buOffsetY = new Int[(size_t)1 << (2 * uiMaxCUDepth)]; m_buOffsetC = new Int[(size_t)1 << (2 * uiMaxCUDepth)]; for (Int buRow = 0; buRow < (1 << uiMaxCUDepth); buRow++) { for (Int buCol = 0; buCol < (1 << uiMaxCUDepth); buCol++) { m_buOffsetY[(buRow << uiMaxCUDepth) + buCol] = getStride() * buRow * (uiMaxCUHeight >> uiMaxCUDepth) + buCol * (uiMaxCUWidth >> uiMaxCUDepth); m_buOffsetC[(buRow << uiMaxCUDepth) + buCol] = getCStride() * buRow * (uiMaxCUHeight / 2 >> uiMaxCUDepth) + buCol * (uiMaxCUWidth / 2 >> uiMaxCUDepth); } } return;}
1 0
- HEVC MarginX MarginY的理解
- HEVC之码率 TEncRateCtrl.h的理解
- HEVC中与dpb(decoder picture buffer)相关的语法元素的理解
- HEVC 的 deblocking filter
- HEVC的算数编码
- HEVC的算数编码
- HEVC的算数编码
- HEVC中变换(Transform)过程中的scaling操作的理解
- hevc
- HEVC
- HEVC
- HEVC
- HEVC
- HEVC CU 级别的分析
- HEVC/H265 好的文章
- HEVC参考程序的运行
- HEVC的高层语法结构
- HEVC的条带头解析
- PHP基础之运算符(四)连接运算符、赋值运算符、三元表达式
- PHP基础之运算符(五)【短路特性】
- java写个纪念日
- 20 semaphore 2
- 【C语言学习笔记】初识GCC编译器
- HEVC MarginX MarginY的理解
- 内存快照排查OOM,加密时错误方法指定provider方式错误引起的OOM【原创】
- JAVA实现的简易FTP站点
- Codeforces Round #388 (Div. 2)E Inversions After Shuffle
- 批量备份/迁移SVN版本库
- 算法之路三:HDU OJ:2003
- 浅析聚合操作
- 第二十七节 Scala操纵XML
- PHP常用正则表达式