HM代码阅读0:Win10下安装HM16.23,编码一个视频,main函数阅读

本文介绍了在Win10下安装HEVC编码器HM16.23的详细步骤,包括Cmake配置和VS工程的编译。接着,解析了HM编码器的Config配置文件,讲解了各参数含义,如帧类型、POC值、量化参数等。最后,阐述了如何使用HM编码一个视频并解读了encmain()函数的基本流程。
摘要由CSDN通过智能技术生成

HEVC理论知识的学习告了一段落了,说实话脑子里还是嗡嗡的,剩下的部分就一边阅读代码一边掌握吧。

1. HM16.23安装

  • 首先需要安装Cmake,参考以下博客,照步骤安装即可
    https://blog.csdn.net/u011231598/article/details/80338941

  • 目前HM最新版本已经不需要SVN了,下载安装步骤如下:
    1、 https://vcgit.hhi.fraunhofer.de/jct-vc/HM/-/tags 点入Release,下载source code
    在这里插入图片描述
    2、解压后,win+R 输入CMD 进入控制台,cd进入HM-16.23-16.23文件夹。进入后输入指令 mkdir build
    在这里插入图片描述

    3、进入刚创建好的build文件夹,输入指令
    在这里插入图片描述这里引号里的内容可以自己修改,取决于VS的版本。

    4、编译结束后就可以打开HM.sln这一工程文件了。
    在这里插入图片描述
    注意的是之前版本中的TAppCommon以及视频输入输出的h文件和cpp文件都移动到了Utilities中。
    在这里插入图片描述


2. Config文件阅读

在HM-16.23.23文件夹下有一个cfg文件夹,该文件夹包含了大量的配置文件(都是英文很好读懂),每个配置文件都写明了一些参数,如CTU划分深度,残差四叉树划分深度,每一帧的QP等等等等。 我们需要改的地方不多,通常是输入输出,量化参数QP(22,27,32,37)等等。 现在打开一个Config文件看看,这里打开Random Access
在这里插入图片描述
大部分都很容易看懂 这里主要介绍一下 Frame 后的一些变量的含义:

  1. Type:帧的类型,从此图可以看出,都为B帧。
  2. POC:每一帧的POC值,也就是输出的顺序。注意这里只列出了一个GOP。实际上每个GOP中POC值都是类似的。每一组加上个16就 ok了(因为这里GOP size为16)。
  3. QPoffset:量化参数的补偿值,是根据该帧所处的Temporal ID决定的。后两个有关QP的参数也是类似。 色度通道不进行QP补偿。
  4. tcOffsetDiv2,betaOffsetDiv2:为环内滤波的补偿值。
  5. temporal id:该帧所处的时域层次。
  6. #ref_pics_active:参考图像列表L0 L1的大小,意味着每个列表中有多少帧图像在当前帧编码时会被使用。
  7. #ref_pics:当前帧 RPS中的参考帧数量(可能为短期参考,长期参考,用不用于当前帧参考等)。
  8. reference pictures:当前帧RPS中参考帧的POC索引。 按先从大到小排列负值,再从小到大排列正值的顺序排列。 这里的具体值是相对于当前帧POC值的差值。 比如Frame1, 这里-16即 “0-16=-16” 也就是说该参考帧为POC为0的帧。注意:RPS的帧不一定会被当前帧参考,也有可能是用于未来
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值