欢迎一起学习HM
HM是HEVC的官方标准测试模型,想要对HEVC进行了解,需要对HM源码进行一定解读才能够更加深入。
1.如何下载HM
(1)HM不能直接下载,因为它是采用svn来管理代码的,因此需要利用svn下载,我们这里采用TortoiseSVN,TortoiseSVN的下载地址为:https://tortoisesvn.net/)。
下图是下载截图,有32和64位的,根据自己电脑系统位数下载相应版本。
(2)下载并安装TortoiseSVN,在桌面右击,选择TortoiseSVN,打开repo-browser。然后,在弹出来的URL框填入HM的下载地址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/。
(3)最后就能看到HM相关文件夹,选择对应版本,右键选择“checkout”即可下载。所发布的HM版本在tags文件夹中
2.搭配HM的运行环境
HM源代码因为是C和C++混合代码,需要IDE打开才能运行,这里选择Visual Studiao,我的电脑装的是Visual Studio 2013。
首先找到自己下载的HM文件夹,然后打开build文件夹,可以看到里面有vs2010~vs2015各个版本的源代码,由于我的电脑是vs2015,我这里打开的是HM_vc2013.sln。
3.HM生成解决方案
首先,双击打开HM_vc2013.sln,可以看到右侧出现了9个项目。
其中,
(1) TAppCommon 编码器和解码器共用的应用函数
(2) TAppDecoder 解码器的应用函数
(3)TAppDecoderAnalyser 解码器分析的应用函数
(4) TAppEncoder 编码器的应用函数
(5) TLibCommon 编码器和解码器共用的库函数
(6) TLibDecoder 解码器的库函数
(7)TLibDecoderAnalyser 编码器分析的应用函数
(8) TLibEncoder 编码器的库函数
(9) TLibVideoIO 视频输入、输出库函数
右击 "解决方案'HM_vc2013'(9个项目)" ,选择 "属性",选择单启动项目(S),选择TAppEncoder(这里是对其进行编码,后面如果对其进行解码的话,就选择 TAppDecoder),确定。
然后,右击“解决方案‘HM_vc2013’(9个项目)”->”生成解决方案”。这里推荐选择Release,win64可选,这样运行会更快。
生成成功后,在HM16.7下会生成一个“bin”文件夹,在bin\vc2013\Win64\Release中会有2个可执行文件:TAppEncoder.exe和TAppDecoder.exe
4.HM环境配置
这里只是对编码部分进行配置。
首先,点击”调试“,选择”TAppEncoder属性“。
在这之前需要在在HM文件夹下创建了一个workspace的文件夹作为工作目录,然后在工作目录栏选择刚刚新建的workspace工作目录路径,
在命令参数栏中需要填写的是用到的配置文件名,包含2个:
编码器配置文件: encoder_intra_main.cfg,文件路径在你下载的HM文件夹下的cfg文件中。并把该文件复制到workspace中。
视频源配置文件:该用于指定输入yuv测试文件,分辨率,待编码帧数等。为了日后使用方便,我们在workspace中新建一个bitstream.cfg的配置文件。配置的编写复制cfg文件夹下per-sequence文件夹中的相应配置即可。并把名字改为bitstream.cfg。
以下是配置文件:
在命令参数最后添加: >out.txt,中间有一个空格,这个是用于输出编码的一些参数。
5.对YUV视频进行编码
首先需要有一个YUV格式的视频,如果没有YUV格式的视频,下载其他格式的也可以,网上有转换器可以转换成YUV格式,也可以用FFMPEG用命令进行转换,这里提供一个YUV视频下载地址:http://trace.eas.asu.edu/yuv/
下载好视频后,将视频的存放路径复制到刚刚设置的bitstream.cfg文件的InputFile参数后面,里面的参数不能乱改,SourceWidth和SourceHeight对应视频的宽高,FramesToBeEncoded是要编码的帧数,如下:
6.运行HM
点击运行,出现如下运行界面,即表示程序正常运行。
运行结束后,在worksapce中会出现3个文件:str.bin、rec.yuv和out.txt。
其中,
rec.yuv是编码过程中重建的yuv图像。
str.bin是压缩后的二进制码流文件。
out.txt是编码基本信息文件。
7.查看HM生成的bin文件
生成的bin文件可以利用各种工具进行查看,网上可以找到。
这里利用Elecard HEVC Analyzer观察分析str.bin:
打开Elecard HEVC Analyzer,选择刚刚生成的str.bin文件,效果如下图。