HEVC码率控制浅析——HM代码阅读之四

继续分析第一篇提到的compressSlice中对LCU的RC参数初始化: #if RATE_CONTROL_LAMBDA_DOMAIN Double oldLambda = m_pcRdCost->getLambda(); if ( m_pcCfg->g...

2013-09-05 13:43:56

阅读数 6515

评论数 22

HEVC码率控制浅析——HM代码阅读之三

续上文继续分析 m_pcRateCtrl->initRCPic( ) Void TEncRateCtrl::initRCPic( Int frameLevel ) { m_encRCPic = new TEncRCPic; m_encRCPic->create( m_...

2013-09-05 11:24:07

阅读数 5347

评论数 2

HEVC码率控制浅析——HM代码阅读之二

上一篇文章主要讨论了RC的总体框架,本文开始分析具体的代码实现细节。分析的顺序按照总体框架来,即初始化-->更新。   (1)m_cRateCtrl.init() #if M0036_RC_IMPROVEMENT Void TEncRateCtrl::init( Int totalF...

2013-09-03 17:58:48

阅读数 6048

评论数 4

HEVC码率控制浅析——HM代码阅读之一

HM的码率控制提案主要参考如下三篇:K0103,M0036,M0257。本文及后续文章将基于HM12.0进行讨论,且首先仅讨论K0103对应的代码,之后再陆续补充M0036,M0257对应的代码分析,这么做可能会使得剧情不会显得那么地跳跃,分析起来能够更好地被接受。   按照我的个人习惯,还是...

2013-09-03 15:46:39

阅读数 12339

评论数 19

HM中去方块滤波的禁用方法

有时候我们想禁用掉HM的去方块滤波,测试下去方块滤波的效果,很容易就想到要修改配置文件,根据注释,容易找到:        LoopFilterDisable             : 1           # Disable deblocking filter (0=Filter, 1=N...

2013-08-13 17:47:32

阅读数 3414

评论数 4

HM中CU,TU的划分

相信只要是做算法改进的,首先都会遇到这么一个问题:CU,PU及TU这几个在HM中该如何打印出它们最终的划分情况呢?也经常有人来问我这个问题,一般来说,因为问我的时候我一般手头都没有现成的代码可以提供,另一方面,也没空把vs打开写上一段,所以只能是告诉他们大概的思路,其实我很早之前的一篇博客已经进行...

2013-08-08 17:49:33

阅读数 15123

评论数 36

HEVC帧间预测之七——运动估计(四)

有了前面几篇的铺垫,本文就可以把整像素部分的运动估计给结束掉了。到目前为止,只剩下xTZSearch这个函数没分析了,在开始这个函数的代码解释之前,让我们共同来理一下TZSearch的基本流程: 1. 搜索预测得到的mv所指向的点:中值预测mv,当前PU的左,上及右上PU的mv,还有零运动矢量(0...

2013-03-18 16:11:03

阅读数 10787

评论数 54

HEVC帧间预测之六——运动估计(三)

本文分析xTZSearch调用了两个最为主要的函数:xTZ8PointDiamondSearch和xTZ2PointSearch,值得一提的是,HM中还提供了另外一个搜索函数xTZ8PointSquareSearch,但由于实际并没有使用这个函数,且它其实跟钻石搜索只是搜索点的选择略有不同,分析起...

2013-03-18 14:06:16

阅读数 7172

评论数 4

HEVC帧间预测之五——运动估计(二)

分析xTZSearch这个函数,xTZSearchHelp是当中最为重要的子函数之一。它实现最基本的功能:根据输入的搜索点坐标,参考图像首地址,原始图像首地址,以及当前PU大小等相关信息,计算出SAD,并与之前保存的最佳值进行比较,更新到目前为止的最佳值相关参数,如uiBestSad,搜索点坐标,...

2013-03-18 13:36:56

阅读数 8399

评论数 10

HEVC帧间预测之四——运动估计(一)

其实HM的运动估计这部分与H.264相比基本没有变化,如果看过JMVC运动估计的代码,会发现xTZSearch的结构几乎就是一样的。所以,严格来讲,这部分的东西没有什么太多新鲜的东西,相信以前研究过TZSearch的人看这部分代码会很轻松。先看运动估计的主调函数: //!< 运动估计 V...

2013-03-17 22:36:57

阅读数 14820

评论数 16

HEVC帧间预测之三——TEncCu::xCheckRDCostMerge2Nx2N函数分析

本文将对实现merge模式的主函数xCheckRDCostMerge2Nx2N进行分析,方便理清merge模式的整个过程。之前的一篇分析了getInterMergeCandidates的具体实现,还有两个比较重要的函数motionCompensation和encodeResAndCalcRdInt...

2013-03-12 16:11:49

阅读数 9439

评论数 26

HEVC帧间预测之二——TComDataCU::xGetColMVP的分析

在上一篇介绍的函数中,在求TMVP时调用了一个比较重要的函数,xGetColMVP。本文对该函数进行较为详细的分析: Bool TComDataCU::xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TCo...

2013-03-12 14:33:16

阅读数 6656

评论数 10

HEVC帧间预测之一——TComDataCU::getInterMergeCandidates函数分析

从今天开始,正式转入到帧间预测方向。由于帧间预测涉及到的方面广且复杂,所以我的理解出现错误的情况可能会更多,请大家以辩证的眼光来看待我的帖子,有问题欢迎大家批评指正。   大家都知道xCompressCU是实际进行预测编码的函数,故很容易就能锁定帧间预测的一个大致范围,在研究了帧内预测的基础上...

2013-03-12 13:29:28

阅读数 10087

评论数 21

HEVC CU 级别的分析

接下来有关HEVC的文章都是HEVC学习系列的延续,但由于序号偏多,为方便起见,就不再单独编号,直接以讨论内容作为题目了。   要研究CU级的代码,少不了要接触到这么一个类TComDataCU。为了比较顺畅地看代码,对这个类的重要成员自然需要有比较好的认识才行,这就是本文的目的,给大家提供一个...

2013-03-05 21:49:03

阅读数 11180

评论数 37

HEVC学习(三十六) —— 去方块滤波之七

本文介绍关于去方块滤波的最后一个函数(这一系列基本上只讨论了亮度分量的情况,色度分量的情况类似,不单独做出分析)。 Void TComLoopFilter::xEdgeFilterLuma( TComDataCU* pcCU, UInt uiAbsZorderIdx, UInt uiDepth,...

2013-01-25 21:32:12

阅读数 4055

评论数 3

HEVC学习(三十五) —— 去方块滤波之六

先看HM中定义tC、β这两个变量的表格,与draft中的Table 8-10相对应: const UChar tctable_8x8[54] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3...

2013-01-25 21:08:16

阅读数 3236

评论数 0

HEVC学习(三十四) —— 去方块滤波之五

本文考察实现去方块滤波的核心函数xDeblockCU: Void TComLoopFilter::xDeblockCU( TComDataCU* pcCU, UInt uiAbsZorderIdx, UInt uiDepth, Int Edge ) { if(pcCU->getPi...

2013-01-25 16:53:40

阅读数 4041

评论数 0

HEVC学习(三十三) —— 去方块滤波之四

本文考察Boundary Strength (BS)的获取过程: Void TComLoopFilter::xGetBoundaryStrengthSingle ( TComDataCU* pcCU, UInt uiAbsZorderIdx, Int iDir, UInt uiAbsPartId...

2013-01-25 16:03:09

阅读数 4464

评论数 4

HEVC学习(三十二) —— 去方块滤波之三

Void TComLoopFilter::xSetEdgefilterPU( TComDataCU* pcCU, UInt uiAbsZorderIdx ) { const UInt uiDepth = pcCU->getDepth( uiAbsZorderIdx ); con...

2013-01-25 14:11:36

阅读数 4515

评论数 4

HEVC学习(三十一) —— 去方块滤波之二

这个是维护去方块滤波参数的结构体: /// parameters for deblocking filter typedef struct _LFCUParam { Bool bInternalEdge; ///< indicates in...

2013-01-24 22:30:20

阅读数 4000

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭