注:HM代码版本为HM-16.2+SCM-3.0rc1/。
在介绍逆扫描的过程之前,先说明扫描表的存储和初始化过程(初始化只在解码器启动时进行,对应函数为initROM())。
HEVC扫描方式中提到:对于超过
4x4 的块,先将块分成若干个4x4的CG(Coefficient Group),CG之间和每个CG内部都使用选定的扫描顺序进行扫描。所以,存在两种扫描表:像素...
分类:
其他好文 时间:
2014-12-28 15:40:06
阅读次数:
187
注:HM代码版本为HM-16.2+SCM-3.0rc1/。
在HEVC逆扫描之三:TU逆扫描过程中介绍了TU的逆扫描过程,这里继续介绍CG内部的逆扫描过程。
4x4CG内部的逆扫描流程如下图所示。
图14 4x4CG逆扫描流程
对于每一个4x4块,也是按照与扫描顺序相反的顺序进行逆扫描的。首先通过熵解码解出CG标识(如果是TU内的第一个或者...
分类:
其他好文 时间:
2014-12-28 15:37:20
阅读次数:
185
注:HM代码版本为HM-16.2+SCM-3.0rc1/。
对应TDecSbac::parseCoeffNxN()函数解析。暂时先忽略掉几个模式:pcCU->getCUTransquantBypass(uiAbsPartIdx)、pcCU->getSlice()->getPPS()->getUseTransformSkip()、pcCU->isRDPCMEnabled(uiAbsPa...
分类:
其他好文 时间:
2014-12-28 15:36:35
阅读次数:
238
注:HM代码版本为HM-16.2+SCM-3.0rc1/。
三种扫描方式
HEVC有三种扫描方式:朝右上角的对角扫描、水平扫描、垂直扫描。对应如下图所示。
图1 HEVC三种扫描方式
根据模式不同,使用水平、竖直、对角三种方式之一。对于超过4x4的块,先将块分成若干个4x4的CG(Coefficient Group),CG之间和每个CG内部都使用选定的扫描顺序进行扫...
分类:
其他好文 时间:
2014-12-28 14:16:00
阅读次数:
456
相信不少接触视频编码的朋友在看相关的文献的时候,总会看到论文中测试时给出一个重要的参数BD-rate,可能一直心存疑问,这个BD-rate到底是个什么东西呢?可以参考这一份提案http://download.csdn.net/detail/hevc_cjl/4927493简单地说,这个BD-rate...
分类:
其他好文 时间:
2014-12-26 18:01:03
阅读次数:
638
我的这篇文章《HEVC解码器流程》给出了HEVC解码器的整体流程图,这里主要针对TDecCu部分进行讲解。
TDecCu入口主要有两部分:一部分是decodeCtu,完成的是熵解码和逆扫描;另外一部分是decompressCtu,完成的是预测、反量化、反变换和重构等功能。
具体流程图如下图所示。红色部分表示的是递归函数,对应括号里面完成的是相应的劈分。...
分类:
其他好文 时间:
2014-12-26 11:11:47
阅读次数:
251
一直不是很理解GOP的概念
视频序列由若干时间连续的图像构成,在对其压缩的时候,先将该视频分割为若干个小的图像组,GOP。在视频编码中有两种GOP类型
封闭式GOP,每一个GOP以IDR图像开始,各个GOP之间独立编码
开发式GOP中第一个GOP 为IDR图像,后续的GOP中第一个为non-IDR图像,即帧间预测的时候后面GOP的图像可以参考一面GOP图像的信息
SS(slice ...
分类:
其他好文 时间:
2014-12-25 22:14:39
阅读次数:
174
HEVC中有CU,TU,PU概念就不多说了,这里主要说一下在具体实现时他们之间大小的关系
在HEVC中
亮度 CU 最大为 64*64,最小为8*8 色度CU最大为 32*32,最小为4*4
在编码配置文档之中可以配置初始的LCU的大小也就是初始根节点CTU的大小 假设这里为64*64
在确定是否进行劈分的过程中利用一个CU_split_flag进行标识,同时结合四叉树的深度信息。获...
分类:
其他好文 时间:
2014-12-25 22:06:59
阅读次数:
339
本文记录一个最简单的基于libx265的H.265(HEVC)视频编码器。此前记录的编码器是通过FFmpeg调用libx265完成编码的,例如:《最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265))》相比与上文中的编码器,本文记录的编码器属于“轻量级”的编码器。因为它不再包含FFmpeg的代码,直接调用libx265完成编码。因此项目的体积非常小巧。该编码器可以将输入...
分类:
其他好文 时间:
2014-12-23 19:37:52
阅读次数:
359
最近开始做HEVC了,其中熵解码作为最底层的部分,因为和h264差不多,难度系数不是很大,主要是一些查表的操作
具体的实现原理就不细说了,主要从代码来进行解释
首先分析HM工程当中的熵解码的部分作为引导,因为最终要在DSP上进行运行,之后会重写为C代码,流程性更强
代码分析
首先介绍熵解码中比较重要的几个结构体和设计到的函数
一进入main函数,最主要的就是对应的解码类TAppD...
分类:
其他好文 时间:
2014-12-23 19:33:26
阅读次数:
200