Duanxx的HEVC学习(二) HEVC测试代码环境搭建
来源:互联网 发布:手机耳机话筒检测软件 编辑:程序博客网 时间:2024/05/21 16:44
一 、 HM代码和x265代码简要对比
HEVC的测试代码主要有两个,一个是HEVC官网提供的测试代码HM,另一个是multicoreware提供的x265代码。
HM代码是HEVC基础测试代码,同时拥有编码器和解码器,但是里面好像暂时并没有并行编码的内容,其整体的编码时间是非常的长的,长的我只能晚上睡觉前开始编码,第二天早上睡醒了才基本编码完成,当然我的i3的笔记本配置太低也是一个结症。但HM代码整体的可读性非常高,并不需要对C++掌握的非常的好就可以阅读。
x265代码是在HM代码基础上优化而来的,它只有编码器没有解码器,一方面x265是在HM基础上的优化而来的代码,另一方面x265使用了WPP并行程序设计使得编码效率得到了很大的提高,我这种i3的笔记本上,喝一杯茶的功夫就将一个测试视频编码完成。
一开始,就是感觉相对于HM代码而言,x265的代码灰常的碉堡,所以想直接看x265的代码研究HEVC编码器的实现,结果到处都是坑!x265之所以能这么快,一方面是代码本身优化的很厉害,不少操作都使用了汇编代码,另一方面这货针对Intel CPU做了优化加速,就相当于使用了IPP一样。而且这个代码的可读性比较差,代码优化的已经看不出是在干什么了,还是多线程编程,调试难度大,最坑的是代码基本上是没有注释的,我还傻不啦叽的不停的给这货写注释,最后完全看不懂这代码了的时候,我就只能放弃这货了,转向HM代码。
不过照实说,x265代码最终还是要看的,毕竟算法上它优化的非常好,有很多值得借鉴的地方,只是因为我现在对HEVC还没有一个了解,所以看着很吃力,个人建议先看HM代码,再看x265的代码。
二 、HM代码下载及环境搭建
2.1 HM代码下载
HM代码的下载是在https://hevc.hhi.fraunhofer.de/下的 SoftwareSources中,在这个页面下,还有很多其他很有用的东西,比如最有用的JCT-VC Documents等,个人建议将这个文档都下下来看看。
到目前为止HM代码已经到了HM15了。
2.2 HM代码环境搭建
2.2.1 工程文件说明
HM\build\中有Vs工程对应的sln,对应VS2010之后的Vs版本,选择HM_vc10.sln就可以了。对应linux下的工程,我也试了一下,不过不喜欢用Eclipse写C++,也就放弃了。
HM\doc\中有一些文档,和Doxyfile,可以自己下载doxygen这个软件,生成HM代码的API。
HM\cfg\中有配置文件,其中碗面的encoder_xxxx_xxx.cfg是Profile,可根据个人需要选择profile,个人建议一开始如果编码8bit的视频流,使用encoder_intra_main.cfg即可,在8bit下这个配置和encoder_intra_main10.cfg是兼容的,在10bit视频流下使用encoder_intra_main10.cfg。
HM\cfg\per-sequence\下是各个标准测试yuv文件的相关配置,一般都是使用BasketballDrill.yuv作为测试视频所以选用BasketballDrill.cfg,不过这个配置中有个错误:FramesToBeEncoded: 500 即要编码的帧数,这里表示的是这个视频一共有多少帧,但这个视频流我测试结果是501帧,不是500帧。我个人建议这个值改小一点,要不然会花很长的时间编码的,我将这个值改成了50帧。
HM\bin\下存放的是可执行文件,就是编码器和解码器的可执行文件
HM\source\下毫无疑问存放的是源代码。
2.2.2 工程配置
我使用的是Vs2012,启动HM_vc10.sln后,将TAppEncoder设置为启动。
然后按F6,编译整个工程,编译完成后。设置TAppEcoder的工程属性:鼠标选定TAppEncoder,然后按Alt+Enter;或者鼠标选中TAppEncoder,右键,选择Properties。
在Configuration Properties->Debuging中设置Command Arguments和WorkingDirectory
将配置用的两个cfg文件encoder_intra_main10.cfg和BasketballDrill.cfg考到HM\bin\vc10\x64\Debug下,以及编码用的视频文件BasketballDrill.yuv也考到这个文件夹下。
如果是x64的系统,可以将Plaform设置成Active(x64)
确定后,按Ctrl+F5就可以运行HM代码开始编码yuv视频了。
三 、x265代码下载及环境搭建
3.1 x265代码下载
登陆http://x265.org/developers.html就可登陆到x265代码的官网上,在Developers->x265 Source Code下就有下载链接:https://bitbucket.org/multicoreware/x265/wiki/Home
要下载这个代码,需要先安装一个软件:TortoiseHg,这是一种和git差不多的分布式代码管理软件。
选择Clone->Clone in SourcceTree就可以下载代码。3.2 x265代码环境搭建
3.2.1 需要提前安装的软件
在使用x265代码之前,需要下载CMake版本在2.8.8以后,下载YASM版本需要在1.2以后,还需要下载Visual Leak Deector,版本在2.3以后。
YASM:
这个不需要安装,只需要环境变量
版本必须是1.2.0以后的,且有x86和x64平台的差别
下载后,要么放在C盘windows下,要么在系统环境变量中path为yasm添加搜索路径
VisualLeak Detector
版本在2.3以后,有x86和x64平台差别
安装过程中会提示添加环境变量,选择为所有用户添加环境变量。
Cmake
版本需要在2.8.8以后,我用的是2.8.12
3.2.2 编译过程
1. 进入build文件夹下,VS2012使用VC11-x86或者VC11-x86_64,
因为我是64位系统,所以我选择的是VC11-x86_64
2. 可以双击bulid-all.bat直接运行,但个人推荐运行make-solutions.bat
运行后会启动Cmake如下,注意画线的两处,如果没有,自行选择好路径
点击configure和generate后,关闭Cmake
3. 找到x265.sln即可运行工程
个人建议在打开工程后将cli设置为启动项
3. 设置cli工程的属性:鼠标选定TAppEncoder,然后按Alt+Enter;或者鼠标选中TAppEncoder,右键,选择Properties。
在Configuration Properties->Debugging->CommandArguments中填写配置参数,在Woring Directory中选择Debug目录(可以根据自己的系统选择是否使用Active(x64))
将BasketballDrill_832x480_50.yuv文件考到Debug文件加下,Ctrl+F5运行即可。
我的Command Arguments是:
--input=BasketballDrill_832x480_50.yuv -o basketball.bin--input-res=832x480 --input-depth=8--fps=50 --bitrate=200 -f 50 --max-merge=1 --qp=32 --tu-inter-depth=2
- Duanxx的HEVC学习(二) HEVC测试代码环境搭建
- Duanxx的HEVC学习(三)HEVC编码框架(二)帧内预测
- HEVC测试代码环境搭建
- Duanxx的HEVC学习(三)HEVC编码框架(一)框架说明
- Duanxx的HEVC学习(三)HEVC编码框架(三)帧间预测
- Duanxx的HEVC学习(一)输入视频文件YUV文件的分析
- Duanxx的HEVC学习(一)输入视频文件YUV文件的分析
- HEVC学习之琐事(二):HEVC常见名词
- hevc测试条件以及序列(学习hevc的必备工具)
- [HEVC] HEVC学习(二) —— HM的整体结构及一些基本概念
- HEVC代码追踪(二):encode
- HEVC代码追踪(四。二)
- HEVC代码追踪(八。二):estIntraPredChromaQT
- Duanxx的OpenCV学习:OpenCV2.4.9+vld+VS2012环境搭建
- HEVC(h265)学习
- 学习HEVC(1)
- HEVC学习(2)
- HEVC代码学习:HM使用方法
- HDOJ 1234 开门人和关门人
- getRequestDispatcher()与sendRedirect()的区别
- 列表、集合与数组之间的转化
- 再封裝
- 暑期个人赛--第一场--C
- Duanxx的HEVC学习(二) HEVC测试代码环境搭建
- 人体暴露在太空中会爆炸?——谣言粉碎机
- 黑马程序员_类加载器
- 写给我们这些浮躁 不安的程序员
- STL#2
- spark学习十 yarn环境的搭建以及spark程序测试
- scrapy-redis实现scrapy分布式爬取分析
- 杭电 1018 Big Number
- 架构师资料