前段时间看了好几十关于HEVC基础知识与帧内快速算法的文章,最近终于开始学习HM代码。在网络上查找资料与师兄的指导下,开始了HM代码学习之旅。现在将自己的学习过程给记一下,主要是为了以后回顾。首先开始是,HM代码的编码。由于只涉及帧内快速算法,所以并没有对解码有所研究。这篇文章所涉及的内容在其它的博文中也能找到,只是加了一些截图而已。
一.下载HM代码。下载HM代码首先要下载"TortoiseSVN"软件(http://tortoisesvn.net/downloads.html,这个网址可能会变,可以自己百度“TortoiseSVN”找到官网下载);然后安装好"TortoiseSVN"软件后,在桌面上右击“SVN CheckOut...”,弹出如图1所示对话框:有两个地方需要填写,1.在"URL of repository"下框中输入代码的网址。(以下网址为所有代码的网址,研究者可以根据 自己的需要下载相应的版本https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/);2.在"Checkout directory"下框中输入下载代码保存的本地地址。其它不做任何改变,点击OK即开始下载。
图1
二..进行VS配置。本文所使用的VS版本为2010旗舰版。
2.1.打开代码。选择菜单栏“文件”选项,选择打开->项目/解决方案。找到刚才下载代码的地址,打开代码。如下图2所示
图2
2.2.生成解决方案。在解决方案资源管理器中,选择“解决方案HM_vc10(7个项目)”右击选择“生成解决方案”。如图3所示。操作成功的话会自动生成如图4所示6个项目。
图3
图4
2.3.设置编码器。在解决方案资源管理器中,选择“TAppEncoder”,右击选择“设为启动项”,设置完成后“TAppEncoder”就会变粗体。如下图5所示。
图5
然后配置调试相关参数。还是在解决方案资源管理器中,选择“TAppEncoder”,右击选择“属性”,如图6所示,在弹出的对话框中选“择配置属性->调试”中的“命令参数”和“工作目录进行”设置。命令参数要输入两个配置文件其格式如图7所示。点击右下角应用,再点击确定,至此配置结束。需要提醒的是这两个配置文件,第一个为HM的编码模式(如图7所示encoder_intra_main.cfg为全I帧下编码),第二个测试序列的配置文件(如图7所示BasketballDrill.cfg为BasketballDrill的测试序列)。两个配置文件包含在第一步所下载的代码的cfg文件夹下。其中encoder_intra_main.cfg规定了生成码流的二进制名,重构的YUV文件名,CU尺寸,QP大小等。BasketballDrill.cfg规定了输入文件地址、帧率、编码帧数等。
图6
图7
2.4.配置文件处理。将上述两个配置文件放到与“生成解决方案”的6个项目同一文件夹下,如图8所示。然后根据自身的需要修改配置文件的相关参数,如编码帧数等。需要注意的是,在测试序列的输入文件改为自己的测试序列所放的文件位置,还要加上测试序列的名字。如图9所示。
图8
图9
三.调试、执行。选择菜单栏“调试->开始执行(不调试)”,进行测试序列编码。
图10
四.执行结果。如上操作正确的话,就能正确编码,其显示结果如图11所示。同时会生成一个二进制码流文件和重构文件,如图12所示。
图11
图12
最后一点,在VS有两种调试方式Debug和Relase,两者间的切换如图13所示。这两种调试方式的区别在于:Debug 为调试版本,它包含调试信息,且不作任何优化,便于程序员调试程序。Release 称为发布版本,它进行了各种优化,使程序在代码大小和运行速度上都是最优的,以便用户很好地使用。