HM代码学习
文章平均质量分 58
小惊大怪
这个作者很懒,什么都没留下…
展开
-
HEVC帧间预测流程(一)——总的步骤流程
HEVC帧间预测总的步骤帧间预测是为了减少时间冗余信息,利用图像帧与图像帧之间的相关性,也就是 视频时间域的相关性,通过已编码像素预测当前块的像素,有助于去除视频时域冗余,大大压缩数据。帧间预测编码比帧内预测编码压缩比要大得多。帧间预测主要的工作是运动估计与运动补偿。所谓运动估计简单说就是在参考帧中找到当前块的最优参考块,用运动向量(MV)表示参考块与当前块的位置关系。所谓运动补偿简单说就是对参考块与当前块求差值得到残差用于传输。不管是所谓的普通帧间预测还是merge帧间预测,总的步骤:①建立MVP原创 2021-06-21 21:12:46 · 694 阅读 · 0 评论 -
HM学习——xCompressCU函数
#if AMP_ENC_SPEEDUPVoid TEncCu::xCompressCU( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, const UInt uiDepth DEBUG_STRING_FN_DECLARE(sDebug_), PartSize eParentPartSize )#elseVoid TEncCu::xCompressCU( TComDataCU*& rpcBestCU, TComDataCU*&a.原创 2021-05-13 09:52:06 · 875 阅读 · 0 评论 -
每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择
CU PU TU划分以及PU最佳预测模式选择在HM对CU进行划分(CU模式判别)、PU模式选择(划分)、以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍。HM进行块划分和模式选择主要的工作是:一、分层递归所有CU划分模式。二、对每一个CU遍历所有PU(划分)模式,选出最优划分模式,与此同时也完成了最优TU模式的选择。三、对每一个PU遍历所有的预测模式(intra,inter等,对帧内帧间都遍历一遍比较选出最优模式,记录预测数据。选择最优预测模式。划分过程中并不是按一二三的顺序进行原创 2021-04-27 14:13:09 · 3343 阅读 · 2 评论 -
HM源码命名规则
HM源码命名规则最近在看HM源码,由于各函数和变量的命名规则实在不太简洁易理解,所以记录如下命名规则供大家参考。 在刚开始看HM的时候,对着7个工程,可能有人会感到困惑,该从哪里看起呢?当然了,对于已经有一定代码量积累的人或者之前研究过H.264代码如JM的人来说,从何入手应该不成问题。但我写这篇出来,一方面是自己做个总结,备忘,另一方面也是希望能够帮助刚刚入手HM的朋友。好了,不多废话,还是进入正题吧。 对于一个完整的HM解决方案来说,总共包含转载 2021-04-25 10:38:13 · 206 阅读 · 0 评论 -
HM代码学习02——TAppEncTop::encode()
TAppEncTop::encode()创建内部类初始化内部变量直到输入YUV文件结束,调用TEncTop类中的编码函数删除分配的缓冲区摧毁内部阶级Void TAppEncTop::encode(){ fstream bitstreamFile(m_bitstreamFileName.c_str(), fstream::binary | fstream::out); if (!bitstreamFile) { fprintf(stderr, "\nfailed to ope原创 2021-04-20 16:41:57 · 385 阅读 · 0 评论 -
HM代码学习01——main()
main()函数对于HM编码器TAppEncoder是对视频编码的项目,而项目一开始首先从主函数main()进入代码,我们首先学习main()函数,main()函数主要进行的工作是定义TAppEncTop类的cTAppEncTop对象、打印HM版本信息、创建类cTAppEncTop、解析cfg文件,、打印宏块信息、对整个编码过程计时、调用对象cTAppEncTop中的encode函数 进行下一步的编码、显示编码时间,销毁编码器的类这些工作。源码的个人注释如下:#include <time.h&g原创 2021-04-18 15:28:50 · 530 阅读 · 0 评论