H.266
编码视界
fangliangsong@foxmail.com
https://zhuanlan.zhihu.com/c_157245427
展开
-
条件编译在JM、HM、JEM中的应用
在制定视频编码标准的过程中,不断会有新的提案出来以期替换原来的技术,但原来的技术又不能立即删掉,于是条件编译在JM、HM、JEM中被广泛地使用。只要有代码的地方,就可以使用条件编译。条件编译既可以出现在头文件,又可以出现在源文件;既可以出现在类定义体、函数体中,又可以出现在类定义体、函数体外。需要注意的一点是,函数(成员函数)声明的地方用了条件编译,函数(成员)定义的地方也相应地要用条件编译。原创 2016-11-14 15:56:01 · 1256 阅读 · 0 评论 -
H.266:请求对JEM的复杂度采取行动
本文译自提案JVET-C0105。摘要:这篇文档展示了几个机构关于JEM软件复杂度的增加情况的看法,尤其是提出创立一个新的Ad-hoc组,研究降低软件一般性复杂度的可能方法。1、最近JEM复杂度的增加情况2016年五月的日内瓦会议一开始,JEM2.0软件在RA配置的平均编码时间据说是HM软件的5.3倍。尽管相对于JEM1.0软件这个数字有所改善,但仍然足够高到阻碍很翻译 2016-11-30 21:35:07 · 1807 阅读 · 0 评论 -
H.266:自适应运动矢量精度(AMVR)
本文译自提案JVET-D1001的2.3.3小节的内容。亮度分量的BD Rate为-0.8%。 在Advanced Motion Vector Resolution (AMVR) 模式下,运动矢量差分(MVD)可以编码为1/4像素或整像素精度。MVD精度在CU层控制,含有至少一个非零MVD分量的CU使用一个整数MVD精度标记位。 当CU的整数MVD精度标志位为0,或者没有被编码,使用默认的1/4翻译 2016-11-23 22:13:18 · 3794 阅读 · 0 评论 -
H.266:仿射运动补偿预测
本文译自提案JVET-D1001的2.3.6小节的内容。在HEVC中,运动补偿预测(MCP)仅仅使用平移运动模型。然而在真实世界中,有各种各样的运动,例如:淡入/淡出、旋转、视角运动、不规则运动。在JEM中,使用一种简化的仿射变换来提高编码性能。如下图所示,块的运动矢量域由两个控制点运动矢量描述。 简化的仿射运动模型块的运动矢量域(MVF)由下面的方程描述:翻译 2016-11-23 11:32:21 · 2756 阅读 · 1 评论 -
H.266:更高的运动矢量存储精度
本文译自提案JVET-D1001 2.3.3小节在HEVC中,运动矢量采用1/4像素精度(420视频格式中,1/4亮度样点和1/8色度样点)。在JEM中,内部运动矢量和merge模式候选运动矢量存储的精度提高到1/16。对于编码为skip/merge模式的CU,在运动补偿帧间预测时使用更高的运动矢量精度(1/16像素)。对于编码为常规AMVP模式的CU,使用整像素或1/4像素运动,如2.3.2翻译 2016-11-29 16:26:04 · 1758 阅读 · 0 评论 -
H.266:模板匹配的运动矢量生成(FRUC)
模板匹配的运动矢量生成(PMMVD)模式是一种特殊的基于FRUC技术的模式。在这种模式下,块的运动信息无须标记,而是在解码端生成。当CU的merge模式flag为真时,会标记FRUC的flag。当FRUC的flag为假时,会标记merge索引,且使用常规merge模式。当FRUC的flag为真时,会标记一个额外的FRUC模式flag来表明使用哪一种方法(双边匹配或模板匹配)来产生块的运动信息。翻译 2017-01-09 12:17:47 · 2443 阅读 · 0 评论 -
H.266:帧内角度预测
本文译自提案JVET-D1001的2.2.1节内容,对应的软件版本为最新的JEM4.0。为了更好地捕获展现在自然视频中的边缘方向,方向性的帧内角度模式从HEVC的33种拓展到65种。新的角度模式如下图中的红色虚线箭头所示,Planar和DC模式保持不变。这些更加密集的角度预测模式适用于任何的块大小以及亮度和色度的帧内预测。 67中帧内预测模式 为了与数量翻译 2016-11-21 22:52:43 · 4935 阅读 · 3 评论 -
H.266的通测配置
JVET第二次会议初步确定了H.266的通测配置。 跟HEVC/H.265的配置有一下几点区别: 1、只有10bit深度的配置(InternalBitDepth=10),去除了HEVC中8bit深度低复杂度的配置。 2、RA配置下的GOP size从8增大到16,相应的Intra period也发生变化:20fps时为16, 24fps时为32, 30fps时为32, 50fps时为48, 6原创 2016-11-15 10:55:21 · 3698 阅读 · 0 评论 -
JEM software ticket45:Console output error of nQP when LCU level rate control is enabled
上星期提交了一处HM和JEM都有的bug,维护HM的人没给我回复,维护JEM的人已经采纳了我的建议。 bug报告的网址:https://hevc.hhi.fraunhofer.de/trac/jem/ticket/45#no1 bug报告的内容:原创 2017-03-15 15:14:45 · 1250 阅读 · 4 评论 -
JEM software ticket42: CTU bits/distortion calculation mistake for I slice when QTBT is enabled
年前提交了H.266参考软件JEM的bug报告ticket42: CTU bits/distortion calculation mistake for I slice when QTBT is enabled 报告的地址:https://hevc.hhi.fraunhofer.de/trac/jem/ticket/42#no2 报告的主要内容: ticket42的修复代码已经集成在/tags原创 2017-02-08 11:33:28 · 984 阅读 · 0 评论 -
跟随标准制定的过程
制定标准的过程中,只要稍微有点性能,什么旮旯里的技术都会被翻出来提提案,这是拓展视野的大好机会。此外,提案往往有其对应的文章,可结合文章一起看。原创 2017-04-21 17:25:38 · 919 阅读 · 0 评论 -
关于浮点QP
总所周知,QP是整数。然而HM/JEM均支持浮点QP(floating point QP),而且HM中从HM-1.0就开始支持了,这是为什么呢?先来看配置文件的参数说明: 从上图可以看出,配置文件中的QP被程序读进来的时候是一个浮点数Double TAppEncCfg::m_fQP。读进来之后在函数TAppEncCfg::parseCfg中对这个浮点QP进行如下处理: // allocate s原创 2017-04-20 23:09:01 · 1355 阅读 · 0 评论 -
H.266:信号依赖的变换(SDT)
本文译自提案JVET-D1001的2.4.3小节的内容。考虑到相邻帧之间有很多相似的块,信号依赖的变换(SDT)通过K-L变换(Karhunen-Loéve transform)挖掘这个相关性,以增强编码性能。这种训练出来的K-L变换起到更高效地压缩能量的作用。 图 24: 挖掘非局部相关性的K-L变换的流程图上面的流程图描述了这个想法。对于当前编码块C,首先,获取一个参考块,该参考块包含重建翻译 2017-02-09 22:22:42 · 1225 阅读 · 0 评论 -
H.266 QTBT(Quadtree plus Binary Tree)块结构介绍
联发科提出的QTBT块结构被H.266采纳,集成在JEM-2.0及其后的版本中,取代了原来HEVC的四叉树(QT)块结构。QTBT与四叉树划分的主要区别: 1、QTBT在四叉树的叶结点,继续往下做二叉树递归遍历,其中二叉树可以水平划分和垂直划分。 2、在QTBT块结构中,CB=PB=TB,也就是说取消了PU/TU/PB/TB的概念,预测块即是变换块。 3、I slice的亮度分量的CTB和色度原创 2016-11-21 15:43:12 · 3788 阅读 · 2 评论 -
帧内预测二维线性插值滤波器的实现分析(不含乘除法)
在PC平台下,乘除法的运算时间远高于加减法;在FPGA平台下,做乘除法需要专门的乘法器和除法器。线性滤波器中,滤波器系数乘以信号,存在乘法。本文以HM中的TComPrediction::xPredIntraPlanar函数为例,介绍如何实现没有乘除法的线性滤波器。TComPrediction::xPredIntraPlanar实现的是帧内预测中的planar模式,planar模式使用水平和垂直原创 2016-11-21 14:45:46 · 1083 阅读 · 0 评论 -
JEM代码分析(一)CommonDef.h
JEM是H.266的参考软件模型,在H.265的参考软件HM16.6的基础上开发而来。截止2016年11月11日,JEM的最新版本是JEM3.2。JEM的下载网址:https://hevc.hhi.fraunhofer.de/trac/jem/browser头文件CommonDef.h里定义了一些编码时的一些常量值。如果不是很新的HM版本(例如HM16.0版本及以前),这个头文件里面是一些宏定义。在原创 2016-11-11 15:58:07 · 2445 阅读 · 0 评论 -
HM/JEM检查当前CU的模式是否是最优模式
如果当前模式的CU的代价小于之前的最优模式,则做处理。/** check whether current try is the best with identifying the depth of current try * \param rpcBestCU * \param rpcTempCU * \param uiDepth */#if JVET_C0024_QTBT原创 2016-11-29 11:31:45 · 1265 阅读 · 0 评论 -
HM/JEM划分模式的率失真代价的计算
TEncCu用于编码一个CTU,通过成员TComRdCost* m_pcRdCost进行率失真判决。计算模式划分的率失真代价的函数如下:Double TComRdCost::calcRdCost( UInt uiBits, Distortion uiDistortion, Bool bFlag, DFunc eDFunc ){ Double dRdCost = 0.0;原创 2016-11-29 11:26:51 · 2492 阅读 · 0 评论 -
JEM亮度QP和lambda的计算
1、默认配置: 使用JCTVC_X0038_LAMBDA_FROM_QP_CAPABILITY中的方法计算:This approach derives lambda from QP+QPoffset+QPoffset2. QPoffset2 is derived from QP+QPoffset using a linear model that is clipped between 0 and原创 2016-11-29 20:48:10 · 1787 阅读 · 0 评论 -
JEM七种预测模式对应的主要函数
Void xCheckRDCostMerge2Nx2N( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU DEBUG_STRING_FN_DECLARE(sDebug), Bool *earlyDetectionSkipMode );#if VCEG_AZ07_FRUC_MERGE Void xCheckRDCostMerge2Nx2NFRUC原创 2016-12-08 10:53:32 · 1689 阅读 · 0 评论 -
HM/JEM CTU级码率控制相关代码
CTU级码率控制相关的代码主要在以下几个函数: Double getLCUTargetBpp(SliceType eSliceType); Double getLCUEstLambdaAndQP(Double bpp, Int clipPicQP, Int *estQP); Double getLCUEstLambda( Double bpp ); Int get原创 2016-12-02 14:49:04 · 1795 阅读 · 0 评论 -
JEM Inter/Merge/Affine的MVP candidates的建立
inter/merge/affine的MVP candidates的建立分别用以下几个函数:/** Constructs a list of candidates for AMVP * \param uiPartIdx * \param uiPartAddr * \param eRefPicList * \param iRefIdx * \param pInfo */Void TCom原创 2016-12-07 17:19:26 · 1207 阅读 · 0 评论 -
JEM使用的第三方库
HM-16.6-JEM-2.0的文件夹下,相比于HM-16.6-JEM-1.0多出了一个文件夹extlib。这个文件夹的介绍在该文件夹内的每一个文件开头用注释解释了:// This file is part of Eigen, a lightweight C++ template library// for linear algebra.//// Copyright (C) 2008-2011原创 2017-02-09 22:07:53 · 1154 阅读 · 0 评论 -
参与制定H.266标准的公司
1、Microsoft。JEVT的主席之一Gary J. Sullivan就职于微软,还有微软亚研的李斌(Bin Li)博士。 2、Qualcomm。高通的提案最多。 3、Samsung。三星是H.264的赢家,提案很多。 4、MediaTek。联发科提出来的QTBT编码结构做的很好。 5、Intel。Intel的H.265硬编码器是世界上最好的硬编码器。 6、Hisilicon。原创 2016-11-18 00:29:09 · 9478 阅读 · 0 评论 -
讲座”视频编解码技术简介:过去、现在及将来“
2016年7月,大疆公司视频编码技术专家郑萧桢博士在电子科大“EE论坛”做了题为“视频编解码技术简介:过去、现在及将来”的讲座。听过很多视频编码领域的学术讲座,第一次听到这么细致的讲座,受益匪浅。郑萧桢博士对H.264、HEVC、AVS2标准中的技术如数家珍。还对已经开始制定的下一代视频编码标准H.266进行了介绍。讲座后要到了PPT,后面的学习中经常打开来查阅。原创 2016-11-16 21:56:13 · 3765 阅读 · 27 评论