Duanxx的HEVC學習(二) HEVC測試代碼環境搭建

一 、 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.cfgBasketballDrill.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



發佈了28 篇原創文章 · 獲贊 142 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章