VVC代码学习-编码端
文章平均质量分 91
柴门风雪夜
这个作者很懒,什么都没留下…
展开
-
VTM10.0代码学习18:xCheckRDCostMerge2Nx2N()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正。如果觉得我的文章对您有帮助的话,不妨点赞收藏加关注,谢谢!!本篇博文就是这个系列的最后一篇了,从开始看VTM到现在差不多9个月,之中断断续续地把VTM的主干大致过了一遍,虽然有很多部分都略过未看,但也对VVC有了大致的认识,算得上是实现开始更新这个系列时的初心。之后如果没有找到想跟大家分享的内容,应该就是无期停更了。欢迎大家.原创 2021-06-29 11:34:14 · 865 阅读 · 1 评论 -
VTM10.0代码学习17:xCheckRDCostInter()&xCheckRDCostInterIMV()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正。如果觉得我的文章对您有帮助的话,不妨点赞收藏加关注,谢谢!!上次更新博客已是两个月前了,这两个月被internship反复折磨,但收获也是不少。现在终于结束了!!想到的第一件事就是赶快更博客,大家千万别取关/(ㄒoㄒ)/~。从这篇博客就开始讲有关帧间的内容了,不知道大家还记不记得之前的博客(VTM10.0代码学习11),末尾.原创 2021-06-01 16:58:13 · 1304 阅读 · 4 评论 -
VTM10.0代码学习16:estIntraPredChromaQT()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。前两篇博文(VTM10.0代码学习14和VTM10.0代码学习15)讲述了如何抉择出亮度的最佳帧内模式,本篇博文就来看看色度部分的函数estIntraPredChromaQT(),会比亮度部分简单一些1. estIntraPredChromaQTconst ChromaFormat format.原创 2021-04-04 21:15:29 · 626 阅读 · 0 评论 -
VTM10.0代码学习15:xIntraCodingLumaISP()&xRecurIntraCodingLumaQT()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。上一篇博文(VTM10.0代码学习14)留了两个计算RDcost的函数没讲,一个是xIntraCodingLumaISP(),另一个是xRecurIntraCodingLumaQT()。前一个是计算开启ISP时亮度的RDcost,后一个是计算不开启ISP时亮度RDcost,接下来就详细说说它们1..原创 2021-03-30 11:39:41 · 561 阅读 · 0 评论 -
VTM10.0代码学习14:estIntraPredLumaQT()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。上一篇博文提到(VTM10.0代码学习13)帧内模式是分亮度和色度处理的,这篇博文就先讲处理亮度的函数estIntraPredLumaQT()。这个函数会先用化简版的RDcost对帧内的亮度模式进行一个筛选,然后对筛选出来的模式执行完整的RDcost计算,来得到最佳的帧内亮度预测模式。1. 预备变.原创 2021-03-22 15:25:52 · 927 阅读 · 1 评论 -
VTM10.0代码学习13:xCheckRDCostIntra()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。从这篇博文开始就会进入到如何测试当前CU的帧内模式的内容,编码端的帧内模式的入口就是xCheckRDCostIntra()。这个函数的作用是确定MTS和LFNST的模式,然后分成亮度和色度单独处理,接下来就详细说说。本篇内容是默认cfg文件中MTS和LFNST都允许开启的1. 变量解释doubl.原创 2021-03-07 20:47:56 · 1070 阅读 · 2 评论 -
VTM10.0代码学习12:xCheckModeSplit()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。上一篇博文(VTM10.0代码学习11)的末尾留着一个涉及CU划分的分支没讲,本篇博文就来说说。这个分支里会调用函数xCheckModeSplit(),而这个函数里面又会调用xCompressCU()。所以从CTU到任何一个CU的编码过程可以描述为如下,先从compressCtu()开始,之后就是xC.原创 2021-02-15 17:11:37 · 939 阅读 · 2 评论 -
VTM10.0代码学习11:from_EncSlice_compressSlice()_to_EncCu_xCompressCU()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。上一篇博文(VTM10.0代码学习10)提到compressSlice()这个函数,这篇博文就继续推进,从Slice级编码深入到CU级编码。compressSlice()里面没啥重要的内容,所以就从里面调用的函数encodeCtus()开始讲起。1. encodeCtus()int prevQP.原创 2021-02-09 19:43:10 · 1186 阅读 · 2 评论 -
VTM10.0代码学习10:EncGOP_compressGOP()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。上一篇博文(VTM10.0代码学习9)提到compressGOP(),这个函数由于涉及到slice的设置,十分地冗长,足足有1700多行。在解码端也有类似的部分,就在本系列的第二篇博文(VTM10.0代码学习2)提到。刚看VTM没多久的我又怎能啃下这块硬骨头,就战略性跳过很多内容了。现在稍微有些底气来.原创 2021-01-25 19:28:50 · 1972 阅读 · 0 评论 -
VTM10.0代码学习9:from_encmain_to_EncLib_encode()
此系列是为了记录自己学习VTM10.0的过程,目前正在看编码端。主要的参考文档有JVET-S2001-vH和JVET-S2002-v1。由于本人水平有限,出现的错误恳请大家指正,欢迎与大家一起交流进步。好久不见,距离上一次更新已经时隔一个多月了。从这篇博文开始就进入编码端的内容,由于不打算从main函数开始讲,前面的部分会一笔带过,下一篇博文会有比较详细的讲解,这篇就相当于预备阶段。整个VTM有众多的技术,但大部分平时是不开的,这里就以RA的cfg文件为指导,里面不开启的技术就不提了。与之前的博文一.原创 2021-01-20 11:19:57 · 1436 阅读 · 0 评论