
VVC/H.266学习日记
文章平均质量分 92
Aidoneus_y
这个作者很懒,什么都没留下…
展开
-
VTM中的编码单元信息扩展:CU信息的可视化分析和统计分析
编码单元统计信息扩展VTM中的块统计扩展支持对编码比特流中的编码工具使用情况进行直观的可视化和统计分析。该扩展使得参考软件的编码器和解码器能够以可配置的方式将统计信息写出,进而加载到合适的yuv播放器中或者重叠在重建yuv序列上,或者在可选范围内用于统计分析。可视化播放器可以选择开源YUV播放器YUView (下载地址:https://github.com/IENT/YUView )。使用方...原创 2019-04-25 22:30:02 · 4828 阅读 · 25 评论 -
VVC 帧内预测 —— MIP代码学习
代码学习prepareInputForPred()void MatrixIntraPrediction::prepareInputForPred(const CPelBuf &src, const Area& puArea, const int bitDepth, const AvailableInfo &availInfo){ m_predictorMip.de...原创 2019-06-04 11:41:58 · 1200 阅读 · 1 评论 -
VVC学习之一:VVC/H.266的简介及VTM的使用方法
前言跟JVET以及VVC标准已经有一段时间了,准备写一些VVC的一些学习心得,主要也是锻炼一下自己,如果有理解不对的地方,希望各位大佬不吝赐教。VVC的发展历程VVC是从HEVC发展而来,其目标是将HEVC/H.265的编码性能提高一倍,计划在2020年10月发布标准最终版,其官方标准测试模型VTM目前已经发展到4.0版本(对应JVET第14次会议JVET-N)。在确定新一代编码标准为VV...原创 2019-04-22 23:08:17 · 14629 阅读 · 5 评论 -
VVC学习之SubBlock Transform(SBT)
文章目录基于子块的变换编码SubBlock Transform(SBT)1. 执行条件2. 模式类型3. 语法要素基于子块的变换编码SubBlock Transform(SBT)变换时,只有残差块的部分进行编码。早期版本中,帧间指明MTS信息确定变换类型,目前的版本中(VTM-7.0)变换的部分残差块的部分可以根据位置自适应推导得出,其他残差为0.1. 执行条件帧间模式(帧内、IBC、PLT、triangle不行)cu_cbf == 1 && cu_sbt_flag == 1C原创 2020-07-28 17:09:52 · 1448 阅读 · 0 评论 -
VVC学习之四:VTM中的数据结构——Position,Size,Area,compArea,UnitArea
Positionstruct Position{ PosType x; PosType y; Position()  ...原创 2019-04-28 14:11:27 · 2126 阅读 · 10 评论 -
VVC学习之四:VTM中的数据结构——描述
VTM中的数据结构HM的代码复杂难懂,结构混乱,缺少数据和逻辑封装,Z-order和raster-order换来换去让人头痛不已,代码可读性比较差。同时HM中很多数据结构的设计都是针对其CU尺寸都是正方形而设计的,扩展性也不好。为了解决HM数据结构复杂、代码可读性差、内存管理负责的问题,VTM使用的数据结构,使用了OO设计理念,对琐碎的计算进行封装,并跟内存管理逻辑,增强代码的可读性。 (移除...原创 2019-04-26 22:58:03 · 3544 阅读 · 5 评论 -
VVC帧内预测补充:矩阵加权帧内预测(Matrix Weighted Intra Prediction, MIP)
VTM 5.0版本更新的帧内预测技术,其最初的思想来源于基于神经网络的帧内预测技术(JVET-J0037)。Tracking route: N0217 -> M0043 -> L0199 -> K0196 -> J0037intra prediction based on neural networksnon-Linear weighted intra predi...原创 2019-06-04 00:04:18 · 1839 阅读 · 0 评论 -
VVC学习之五:帧内预测之色度预测——CCLM及代码学习
文章目录CCLM跨分量线性预测亮度重建参考像素获取CCLM预测信号生成CCLM跨分量线性预测VTM采用了跨分量线性模型的色度预测模式,即色度值可根据已重建亮度像素线性变换得到,变换函数为pred_C (i,j)=α•rec_L'(i,j)+β,其中pred_C为预测的色度值,rec_L'(i,j)表示已重建的亮度下采样后的值。参数α和β通过相邻CU的亮度和色度计算得到,计算公式为 α=Ya−Y...原创 2019-05-28 15:24:00 · 4073 阅读 · 2 评论 -
VVC学习之五——帧内预测:xRecurIntraCodingLumaQT()
#if JVET_M0102_INTRA_SUBPARTITIONSvoid IntraSearch::xRecurIntraCodingLumaQT( CodingStructure &cs, Partitioner &partitioner, const double bestCostSoFar, const int subTuIdx, const PartSplit isp...原创 2019-05-22 21:20:55 · 931 阅读 · 0 评论 -
VVC学习之五:VTM帧内预测工具详解
帧内预测的摘要原创 2019-05-14 00:21:24 · 5713 阅读 · 2 评论 -
VVC学习之五:VTM帧内预测之色度预测——estIntraPredChromaQT()
文章目录预测过程回顾预测过程回顾#include <iostream>#include <algorithm>using namespcce std;int main(){ int a = 0}原创 2019-05-25 00:06:49 · 1298 阅读 · 0 评论 -
VVC学习之五:帧内预测——MPM列表建立
getIntraMPMs()为命名空间PU下的函数,用于获取帧内预测MPM,一共三类:传统预测MPM,多参考行预测MPM,ISP预测MPM。int PU::getIntraMPMs( const PredictionUnit &pu, unsigned* mpm, const ChannelType &channelType /*= CHANNEL_TYPE_LUMA*/ ){...原创 2019-05-15 22:55:17 · 1917 阅读 · 2 评论 -
VVC学习之五:帧内预测——67个模式预测信号生成 predIntraAng()
文章目录简介predIntraAng()xPredIntraDc()xPredIntraPlanar()xPredIntraAng()简介帧内共有67种预测模式,包括 65种角度+DC+Planar 模式,VTM中调用predIntraAng()生成相应的预测信号。predIntraAng()主要功能是调用相关预测函数,生成67中模式的预测信号,并对满足 PDPC条件 的预测模式进行预测信号矫...原创 2019-05-19 21:23:50 · 1796 阅读 · 1 评论 -
VVC学习之五:帧内预测——帧内参考像素滤波xFilterReferenceSamples()
文章目录帧内预测之前,首先要获取帧内预测参考像素决定是否对其进行滤波。原创 2019-05-19 18:38:46 · 1209 阅读 · 0 评论 -
VVC学习之五:帧内预测——参考像素获取 initIntraPatternChType() xFillReferenceSamples()
文章目录帧内预测之前,首先要获取帧内预测参考像素,VTM获取帧内参考像素的函数/** Function for deriving planar intra prediction. * \param pSrc pointer to reconstructed sample array * \param srcStride the stride of the reconstructed sam...原创 2019-05-19 17:57:48 · 1253 阅读 · 0 评论 -
VVC学习之四:VTM中的数据结构——AreaBuf,UnitBuf
文章目录AreaBufAreaBuf,UnitBuf 封装了二维视频信号的一维存储下的内存管理方法,提供了简单内存操作接口。AreaBufAreaBuf是一个类模板,AreaBuf采用了通用数据类型成员,VTM中以AreaBuf为模板实例化6个模板类,分别管理像素、变换系数和运动信息的存储和访问,如下:typedef AreaBuf< Pel> PelBuf;typedef...原创 2019-05-06 08:54:32 · 1759 阅读 · 0 评论 -
VVC学习之四:VTM中的数据结构——CodingStructure
上层CodingStructure结构体管理着一帧中所有的CU,PU和TU。可以通过简单的坐标操作获取一帧中所有位置的CU信息。下层CodingStructure是进行RD搜索最优尺寸和最优预测模式的基本单元。想要深入理解VTM的代码逻辑,了解CodingStructure中的属性和方法是基础。class CodingStructure{public: UnitArea ...原创 2019-05-06 08:54:27 · 3985 阅读 · 20 评论 -
VVC学习之三:GOP结构和参数
GOP (Group of Picture, 图像组)视频压缩时,会先将视频序列分成若干图像组GOP,以GOP为单位进行压缩。GOP有两种,封闭式GOP和开放式GOP,封闭式GOP以IDR图像开始,各个GOP之间独立压缩。开放式GOP的第一个帧内编码图像为IDR图像,后续GOP中的第一帧为non-IDR图像。IDR(Instantaneous Decoding Refresh) – 即时解...原创 2019-04-25 14:48:42 · 4447 阅读 · 0 评论 -
VVC学习之四:VTM中的数据结构——CodingUnit、PredictionUnit、TransformUnit
文章目录CodingUnitPredictionUnitTransformUnit基本单元的数据结构中,只定义了CU、PU、TU的属性信息,其头文件为Unit.h。对基本单元的操作定义在UnitTools.h中,为区分对不同基本单元的操作,定义了不同命名空间。CodingUnit描述UnitArea定义的区域的压缩方法和方式。struct CodingUnit : public UnitA...原创 2019-04-30 09:25:49 · 2554 阅读 · 5 评论 -
VVC学习之二:VTM中CU划分结构QTMTT(3):打印QTMTT最终划分
QTMT递归划分打印原创 2019-04-24 23:45:32 · 3968 阅读 · 16 评论 -
VVC学习之二:VTM中CU划分结构QTMTT(2)
上次说了VTM中QTMTT划分的理论部分,这次准备结合代码理解,VTM完全就是C++的代码风格,由于水平有限,应该会有很多理解不到位的地方,还请大佬批评指正,欢迎交流。不同于HEVC,VTM中将CU划分方式也当做编码模式进行处理。在编码每个CU时,首先将初始化所有的编码模式,包括所有的预测模式和划分模式。这部分由lib/EncoderLib/EncCU.cpp中xCompressCU()完成。xC...原创 2019-04-24 17:23:26 · 5076 阅读 · 19 评论 -
VVC学习之二:VTM中CU划分结构QTMTT(1)
VTM采用了更为复杂的编码单元划分结构,在HEVC四叉树(QT)划分的基础上增加了两种二叉树(BT)划分和两种三叉树(TT)划分。其中BT和TT统称为MT(multi-type tree),见下图。...原创 2019-04-23 22:42:44 · 5767 阅读 · 6 评论 -
VVC学习之五:VTM帧内预测之亮度预测——estIntraPredLumaQT()详解
前一章讲解了VTM帧内预测的主要大致框架,接下来主要学习VTM中相关技术的代码实现。首先,是亮度分量进行帧内预测的入口函数estIntraPredLumaQT(),这个函数描述了亮度帧内预测的主要流程,包括参考样本生成,多行预测,RMD, MPM和最后Full RDO最优模式选择、ISP等。其主要流程见下图:插入图片(estIntraPredLumaQT()流程)代码具体实现如下(VTM-4....原创 2019-05-14 17:09:09 · 2987 阅读 · 3 评论