
H.266/VVC代码学习笔记
文章平均质量分 95
本专栏基于现阶段最新版本的VVC的参考软件对其中的代码细节进行详细的讲述
wD丶路人
稳步前进
展开
-
H.266/VVC代码学习笔记12:VTM5.0中的estIntraPredChromaQT()函数的学习
对于学习视频编码中帧内预测部分的同学来说,estIntraPredChromaQT()函数可以说是必须掌握的一个很重要的函数,该函数是帧内色度预测的第一主函数入口,和帧内亮度预测的第一主入口函数estIntraPredLumaQT()函数相对应,关于亮度预测的入口函数的代码细节在我之前的博客已经详细讲过啦,这里就直接给出链接:H.266/VVC代码学习笔记8:VTM5.0中帧内亮度预测函数——es...原创 2019-07-28 22:10:08 · 1306 阅读 · 0 评论 -
H.266/VVC代码学习笔记11:VTM5.0中的xRecurIntraChromaCodingQT()函数
今天抽空讲一下目前VTM5.0中的编码端的xRecurIntraChromaCodingQT()函数的代码细节,该函数是帧内色度预测编码的第二入口函数,里面有所有的帧内色度预测模式的底层的实现细节,根据所传递进来的模式号,对应特定的预测模式进行预测编码。该函数的主要流程如下:一、 一些初始化操作,定义一些缓存空间及变量(在代码里有详细备注)二、 通过getFinalIntraMode()函数...原创 2019-07-26 16:57:18 · 953 阅读 · 0 评论 -
H.266/VVC代码学习笔记10:VTM5.0中的xIntraCodingTUBlock()函数
xIntraCodingTUBlock()函数是帧内预测函数的一个关键函数,里面进行亮度预测模式的具体实现,以及亮度和色度的残差的变换以及量化,该函数是亮度预测和色度预测都要用的统一函数,今天抽空讲一下该函数的代码细节。该函数的主要流程如下:一、 初始化各种参数,定义一些变量。二、 如果是亮度分量,则进行亮度分量的预测编码(MIp模式或者传统的角度预测)三、 预测结束之后计算残差(非联合模...原创 2019-07-26 16:48:10 · 1059 阅读 · 0 评论 -
H.266/VVC代码学习笔记9:即将接收到VTM6.0中的新技术——帧内色度预测模式编码的简化统一
关于该技术的技术细节我在之前的博客讲过啦,大家可以直接去看那篇博客:H.266/VVC相关技术学习笔记:O次会议新接收的技术——色度预测模式编码的简化和统一刚把相关的代码看了一下,现在把代码和注释给补上,有疑问的同学可以直接留言~intra_chroma_pred_mode()函数学习void CABACWriter::intra_chroma_pred_mode(const Predict...原创 2019-07-16 17:28:34 · 1220 阅读 · 0 评论 -
H.266/VVC代码学习笔记8:VTM5.0中帧内亮度预测函数——estIntraPredLumaQT()函数
今天对VTM5.0中的亮度帧内预测的入口函数estIntraPredLumaQT()进行详细的学习estIntraPredLumaQT中完成了亮度分量的帧内预测,其主要流程如下:一、初始化各种参数。二、为了减少最终RDcost的次数,降低编码端的复杂度,VVC的VTM5.0版本默认使用帧内快速搜索算法,主要经过两轮的SATD的粗选阶段和一轮RDcost的细选阶段1、第一轮的SATD粗选,首...原创 2019-06-02 16:12:42 · 3815 阅读 · 35 评论 -
H.266/VVC代码学习笔记7:VTM5.0中Mip模式的MPM列表构造函数——getMipMPMs()
在最新的VVC的参考软件VTM5.0中新加入的技术Mip亮度预测模式有其独立于传统的68种预测模式的MPM列表,而其MPM列表的构造也不同于传统的MPM列表构造。今天来详细讲一下关于Mip模式的MPM列表的构造函数。传统亮度预测模式的MPM列表的构造函数的代码之前我已经讲过啦,这里直接给出链接:H.266/VVC代码学习笔记6:传统的MPM列表构造函数——getIntraMPMs()Mip模...原创 2019-06-01 16:08:59 · 1934 阅读 · 0 评论 -
H.266/VVC代码学习笔记6:传统的MPM列表构造函数——getIntraMPMs()
有关于传统预测模式的MPM列表的构造的技术细节以及发展历程我在之前就写过啦,这里就不做介绍了H.266/VVC相关技术学习笔记:传统帧内预测模式的MPM列表的构造下面我主要给大家详细剖析一下传统MPM列表的构造函数 getIntraMPMs()代码里有详细的注释,可以根据之前讲过的构造流程一个一个对着代码看。有不懂的地方可以私聊我// PU tools//传统角度模式的MPM列表的...原创 2019-06-01 15:09:40 · 1851 阅读 · 4 评论 -
H.266/VVC代码学习笔记5:VTM4.0中的熵编码CABAC部分的详细解析
1 CABAC工作流程1.1 算术编码工作流程与变长编码不同,算术编码的本质是为整个输入序列分配一个码字,而不是给每个字符分别指定码字,因此平均意义上可以为单个字符分配码长小于1的码字,所以算数编码可以给出接近最优的编码结果。算术编码的基本原理是:根据信源不同符号的概率把[0,1)区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率,这样信源发出的不同符...原创 2019-05-03 15:40:54 · 5898 阅读 · 4 评论 -
H.266/VVC代码学习笔记4:带你深入解析VTM5.0中的最新技术ALWIP
ALWIP技术全称是Affine linear weighted intra prediction该技术是HHI在N次会议上提出的,在目前新发布的VTM5.0软件中已经更新。该技术的核心就是训练矩阵,通过当前的亮度预测块的相邻采样点首先进行平均操作减少采样点数目,构成一个向量然后通过该向量和视频序列集去训练出一个参数矩阵,通过该矩阵和相邻采样点向量相乘得到一个部分预测值的散点阵列,最后通过双线...原创 2019-05-18 21:47:21 · 2258 阅读 · 4 评论 -
H.266/VVC代码学习笔记3:带你解析VTM5.0中CCLM的代码实现细节
昨天VVC新的参考软件VTM5.0正式发布啦,其中对于CCLM部分的改动还是挺大的。接下来我来详细讲讲改动的地方,并且讲一下具体的代码实现细节,希望对大家理解有所帮助~首先,VTM4.0中的CCLM是通过对所有的相邻参考像素去搜寻一个亮度最小点和一个亮度最大点,通过这两个点去拟合线性模型。如今的VTM5.0中的CCLM现在只从相邻参考像素中总共找四个点或者两个点,如果是四个点的情况,则先进行排...原创 2019-05-07 21:50:52 · 2613 阅读 · 0 评论 -
H.266/VVC代码学习笔记2 :深入解析帧内色度预测模式的编码方式及其代码详解
之前的博客中我详细的讲解了关于视频编码中熵编码部分的具体的技术细节H.266/VVC中的熵编码CABAC内容史上超详解!!(基础进阶必看系列)今天就来具体的讲一下在帧内色度预测模式中的熵编码具体是怎么编码的。一、VTM2.0中的帧内色度模式的编码1.编码端的Rdcost:按照下表的顺序对这6种模式进行Rdcost检测; modeList[ 0 ] = PLANAR_IDX; ...原创 2019-05-18 13:54:12 · 2523 阅读 · 0 评论 -
H.266/VVC代码学习笔记1:VTM5.0的下载和安装简单而实用的教程
今年的五月初,H.266/VVC的新一代的参考软件--VTM5.0终于发布了那么有些刚接触会议的同学可能还不会这个参考软件的配置过程,那么今天我就详细来讲一下VTM5.0的配置教程,对于之前版本的VTM也可参照同样的方法进行配置原创 2019-05-19 12:46:01 · 6987 阅读 · 16 评论 -
H.266/VVC代码学习笔记13:VTM6.0中的getInterMergeCandidates()函数
getInterMergeCandidates()函数是帧间预测技术中一个非常重要的函数,它是Merge列表的构造函数,所有的Merge模式都要先构造一个Merge候选列表,然后根据不同的模式在此regularMerge列表的基础上去延伸出相对应的Merge列表,就比如MMVD的Merge列表需要在常规Merge列表的基础上去选择两个初始MV,然后构造MMVDMerge。普通Merge列表的构造...原创 2019-09-16 18:54:05 · 1428 阅读 · 0 评论 -
如何在Windows下跑视频编码代码(详细流程,入门必看)
关于初学视频编码的同学来讲,除了了解关于视频编码的一些理论的知识以及代码之外,还有一项必备的技能就是能够在各种操作系统之下,熟练的去跑视频编解码的代码,以及怎么配置相关的配置文件,如何将编解码之后的数据统计出来都是要求必须熟练掌握的。今天详细讲一下关于在本地Windows下如何顺利地编解码视频序列,并在正确测试的基础上在远程计算资源上对所有序列进行统一的测试。(AI的本地少帧测试+远程全帧编码)R...原创 2019-09-24 21:49:23 · 5572 阅读 · 17 评论 -
H.266/VVC代码学习笔记14:xCheckRDCostMerge2Nx2N()函数
近期学习了一下xCheckRDCostMerge2Nx2N()函数,这是编码端帧间预测中非常重要的一个函数,该函数类似于帧内的xCheckRDCostIntra()函数,是对三种Merge模式:regular_Merge、CIIPMerge、MMVD_Merge;进行率失真代价的比较,选出代价最小也就是最优的一种Merge候选。大体上看明白了该函数的流程,简要的讲一下该函数的具体的流程,如下:1...原创 2019-10-01 13:55:33 · 1747 阅读 · 0 评论 -
H.266/VVC代码学习笔记15:VTM6.0中的xCheckRDCostMergeTriangle2Nx2N()函数
VTM6.0中xCheckRDCostMergeTriangle2Nx2N()函数是帧间预测技术中Merge模式中TPM技术的主函数的入口,想要了解TPM在代码中的实现,这个函数是啃定了,我只是大概看了一下该函数的大致上的流程以及其中三角Merge列表的构建、加权预测的大致过程。今天将所看的代码分享给大家,如过代码中有理解错的地方,还请指正,谢谢大家~还是老套路,用文字过一下该函数的大致流程,再...原创 2019-10-01 17:42:38 · 1280 阅读 · 3 评论 -
H.266/VVC代码学习笔记16:VTM6.0中的getTriangleMergeCandidates()函数
在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式的单向Merge列表的构建,链接为:H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将这部分函数getTriangleMergeCandidates()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可以私信我。...原创 2019-10-01 17:45:36 · 925 阅读 · 0 评论 -
H.266/VVC代码学习笔记17:VTM6.0中的xWeightedTriangleBlk()函数
在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式中对角线周围加权区域的自适应权重加权过程,链接为: H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将加权融合过程的函数xWeightedTriangleBlk()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可...原创 2019-10-01 17:48:58 · 951 阅读 · 0 评论