0 errors, 0 warnings

FPGA应用;视频图像处理

HEVC之路(1)——HM的运行

0
阅读(4082)

1,HM下载 

(1) HM不能直接网页下载,因为它是采用svn来管理代码的,因此需利用svn下载,这里采用TortoiseSVN(下载地址为https://tortoisesvn.net/)下载。

image.png

(2) 下载并安装TortoiseSVN,在桌面任意位置右键,打开repo-browser

image.png

 (3) 在弹出来的URL框填入HM的下载地址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/

image.png

(4) 然后就能看到HM相关文件夹,所发布的HM版本在tags文件夹中 

image.png

(5) 在需要的版本中右键选择“checkout”进行下载。这里选择的是最新版HM-16.17

image.png

2,HM运行环境的搭建

    在HM16.7->build文件夹下,可以看到如下文件:

image.png

以上表明的是支持的编译环境,我们选择的是vc2013,安装vc2013即可。


3,HM运行

(1) 打开HM_vc2013.sln,可以看到右侧出现了9个项目。

image.png

(2) 右击“解决方案‘HM_vc2013’(9个项目)”->"生成解决方案"。debug,win32可选,与系统是否是64位的无关,不影响工程运行。

image.png

生成成功后,在HM16.7下会生成一个“bin”文件夹,在bin\vc2013\Win32\Debug中会有2个可执行文件:TAppEncoder.exe和TAppDecoder.exe


(3) 我们主要研究对象是HEVC编码器,即把yuv格式码流编码成HEVC格式数据。因此主要关注TAppEncoder.

        右击解决方案中“TAppEncoder”->“设为启动项目”

        再右击“TAppEncoder”->"属性"->"配置属性"->"调试"

        在工作目录栏指定工作目录路径,这里在HM16.7下创建了一个workspace的文件夹作为工作目录。

        在命令参数栏中需要填写的是用到的配置文件名,包含2个:

            编码器配置文件: encoder_intra_main.cfg,文件路径:D:\HEVC\HM16.7\cfg。并把该文件复制到workspace中。

            视频源配置文件:该用于指定输入yuv测试文件,分辨率,待编码帧数等。为了日后使用方便,我们在workspace中新建一个bitstream.cfg的配置文件。配置的编写复制HM16.7\cfg\per-sequence中的相应配置即可。如,我们需要压缩BasketballDrill视频文件,则打开BasketballDrill.cfg并把其中的配置复制到bitstram.cfg中。但注意要修改InputFile的地址,这个后面会提到。

image.png

image.png

(4) 接下来就是添加视频源文件。

        视频源文件下载地址1:http://ftp.kw.bbc.co.uk/hevc/hm-15.0-anchors/bitstreams/i_main/ ;

            该地址下载下来的是.bin格式的265压缩文件,需经265解码器解码成yuv格式文件才可为编码器使用。

        视频源文件下载地址2:https://pan.baidu.com/share/link?shareid=976413622&uk=204312922#list/path=%2F

            该地址下载下来的是.yuv的yuv文件,可用于265编码器编码。这里下载了一个BasketballDrill_832x480_50.yuv文件用于编码测试


(5) 在HM16.7\cfg\per-sequence中找到BasketballDrill.cfg,并把其中的配置复制到bitstream.cfg

      修改配置文件中的配置,注意路径不能有中文字符,斜线方向不影响:

image.png

image.png

 注意:以上配置不能乱改,一旦不满足规范,则程序无法正常运行。 

           如IntraPeriod和GOPSize的修改就不能简单改变数值,还要设置一些参数,例子见encoder_lowdelay_main_rext.cfg。


(6) 点击运行

image.png

运行结束后,在worksapce中会出现2个文件:str.bin和rec.yuv。其中rec.yuv应该是编码过程中重建的yuv图像,str.bin则是压缩后的码流。

    可利用Elecard HEVC Analyzer观察分析str.bin:

image.png

也可以利用YUV Player观察原始yuv数据

image.png