zoukankan      html  css  js  c++  java
  • HEVC/H.265硬件编码器实现杂谈

    http://blog.csdn.net/frd2009041510/article/details/44277695

     分类:
     

    目录(?)[+]

     

    国际视频编码标准HEVC已经发布两年有余,市场上关于支持HEVC的硬件也日益涌现,本文借鉴了各方面资源做了综合与概述,给出了HEVC硬件编码器实现的基本方法等重要网络资源。

    一、系统设计要点

    对于HEVC/H.265视频编码而言,采用了比以往视频标准更加先进和灵活的编码方法,在性能上有比较明显的优势,但对硬件实现也是一个很大的挑战,其实现复杂度和计算量几倍于H.264标准,这对基于FPGA/ASIC/SOC硬件平台实现的H.265编码器设计提出了更高的要求。

    要设计一个优秀的HEVC/H.265硬件编码器,重点考虑以下几个内容:

    1、 最低工作时钟频率: 指实时实现一定规格的视频编码所需要的最低时钟频率。目前视频编码对画面尺寸以及帧率的要求越来越高,一般要达到1080P@30fps的规格,有的也开始支持4K的实时编码,另外,对低功耗设计也越发突出重要,因此低工作时钟频率显得尤其重要。根据以往业界公开的H.264硬编码器参数,大部分的1080P@30fps实时编码的的最低工作频率在200MHz ~ 250MHz,少数能够达到150MHz以内。H.265相比较H.264而言,其实现复杂度更高,要实现较低的工作频率,对整个编码器的系统设计提出了更高的要求,如果能够把单核1080P@30fps的工作频率控制在150MHz以内,则属于优秀参数级别。

    2、最高可运行时钟频: 低时钟频率并不能以牺牲编码器最高可运行时钟频率为代价,时序最长路径不能过长,否则,低工作时钟频率的意义就打了折扣。如1080P@30fps实时编码的最低工作时钟频率要求为150MHz,该编码器在某型号FPGA上的综合最高可运行时钟频率只有50MHz,那么在该FPGA上远无法实现1080P实时编码,其性能可能还不如最低工作频率200MHz,而最高可运行时钟达到100MHz的编码器;

    3、 较少的硬件资源: 硬件资源占用也是衡量一个硬件编码器性能的重要参数,大部分时候和最低工作频率是矛盾体,实时运行所需的最低工作频率越低,一般硬件资源占用会越高,需要在二者之间取得一定的平衡,在设计之初,需要通盘考虑那个参数更重要一些。另外也需要尽量减少RAM的使用数量和访问频率,这在低功耗设计时尤为重要;

    4、 编码工具选择: HEVC/H.265的实现架构不同于以往视频标准固定编码块大小的做法,在实现灵活性方面有更大的空间,而硬件编码器实现和基于PC实现的软件编码器有很大的不同,很多时候需要在实现代价和性能表现之间做平衡取舍,例如,对于一些对编码性能提升有限而又较大增加硬件实现难度和代价的编码工具或方法,需要斟酌舍弃或者用其他近似方法替代。

    二、技术难点分析

    和其他复杂的数字信号处理相比,视频编码标准本身并不复杂,在制定标准时候已经考虑到可实现性问题。

    ——但视频编码有其自身的特点,主要特点在于单位时间需要处理的数据量十分庞大,尤其是编码画面越来越大的情况下。以1080P@30fps为例,即使每个像素点分配2个时钟的运算时间,也要超过100MHz的系统时钟才能实现实时编码,而在2个时钟内,要完成一个像素包括亮度和色度的所有编码运算,这就给硬件编码器的系统设计提出了很大的挑战

    ——而区别于以往的视频编码标准如H.264等,HEVC/H.265在算法的灵活度方面要大大加强了,最典型的是摒弃了以往以16×16固定编码块大小的做法,而是采用了更为灵活的编码块结构,这种灵活的结构也带来了编码器性能的差异化,一般来说硬件编码器会对编码工具集进行一定的取舍和优化,如何在保证性能不受大的影响的情况下减少硬件资源使用和系统运行时钟,成为硬件编码器的一大挑战,也是一大难点所在。

    ——另外,HEVC/H.265编码摒弃了对CAVLC的支持,而只有CABAC一种码流编码方式。CABAC的硬件实现一直是视频编码的难点所在,H.265也不例外,CABAC比较难以并行运算,需要很多的硬件设计技巧和方法,通常CABAC部分也成为制约整个硬件编码器速度性能的瓶颈所在,虽然,H.265支持多个CABAC模块并行计算,但同样也会引起系统设计的复杂性以及硬件资源增加等问题,需要综合进行考虑。

    三、软硬编码器设计方法的差异

    视频软硬件编码的概念是相对的:

    ——通常把基于处理器平台实现的编码器称为软编码,典型如基于PC/ARM/DSP的视频编码器

    ——编码则通常指基于数字逻辑电路搭建的视频编码器,典型如基于FPGA平台以及SOC芯片中的编码器硬核等

    软硬件编码器在设计方法上迥然不同。软编码是在特定的硬件平台上实现的,它所对应的硬件资源是固定的,如它在单位时间内的运算处理能力是固定的,对于设计者而言,更多需要做的是在软件实现算法上做优化。

    而硬件编码器则是在最基本的逻辑电路上进行自由搭建,就好比在一张白纸上绘画一样,可根据需要添加硬件资源,如果以软件编码的方法或者在C程序上做移植优化的方法来进行硬件编码器设计,则很难设计出优秀的硬件编码器。

    另外硬件编码算法的差异化和灵活性会更高,相对软件编码器而言,不同设计方法导致的硬件编码器的性能差异化会更大。

    评判一个视频硬件编码器的性能,主要考虑几点:

    1、 压缩性能:一个视频压缩标准会有不同的编码工具集,并非所有的编码工具集都需要在编码器中实现,特别是对于实时硬件编码器,会根据编码器的应用场合特点对编码工具进行适当的删减,因此不同编码器在最佳编码性能方面会有些差异;

    2、 硬件资源占用: 通常用逻辑门数RAM大小等指标表示。不同的设计算法,特别是整个系统的设计安排,导致的硬件资源占用差异化很大,通常可以达到2~3倍以上;

    3、 实时工作频率和fmax实时工作时钟频率是衡量编码器的重要指标,这是硬件编码器设计之初即确定的参数,功能模块的算法设计选择需要根据实时工作时钟频率的要求来做相应调整,一般越低的工作时钟频率对模块以及系统的设计会带来更高的要求。由于视频编码数据量十分庞大,每个像素的处理时间甚至要求在1~2clk内完成,此时每增加1clk时间,都可能带来实时工作频率的极大增加。例如,同样的FPGA硬件平台,有的设计可以实现1080P@30fps实时编码器,而有的设计却只能完成CIF(320*240)实时编码器,差距在十倍以上。除了实时工作时钟频率外,还要考虑整个电路的最高可运行频率fmax,这个和硬件设计算法有关,fmax越高,实时工作频率越低,则编码器性能越优秀

    4、 功耗:功耗也是编码器设计需要考虑的问题,特别是编码器应用在移动便携式领域时。

    不管是软件编码器还是硬件编码器,要设计一款优秀的产品都不是容易之事。软件编码器有官方的参考软件,可在此基础上做优化,但不同优化方案的性能差异相对有限。

    【ZoBoVision原创:http://zobovision.zgznh.com/】

    四、国内外做HEVC硬件的厂家及其产品

    1、NVIDIA全基因至尊品牌的影驰也推出了多款带有HEVC/H.265编码的GTX960产品,GTX960则完完全全的能支持HEVC/H.265视频压缩,也更加支持10Bits的HEVC/H.265,GTX960也是世界上唯一支持10Bits的HEVC/H.265的视频压缩,HEVC/H.265也是如今购买显卡的一个重要指标。而要看显卡是否有自带HEVC/H.265视频压缩以及10Bits HEVC/H.265视频压缩,可以下载DXVA Checker检验你的GPU来检验,只要看是否有显示HEVC_VLD_Main以及HEVC_VLD_Main10即可。

    2、ZoboVision提供的HEVC/H.265 HD单核编码器IP E50,其实现1080P@30fps所需的最低时钟频率在100MHz以内;

    3、国内目前进行HEVC/H.265商用软件编码器设计的公司有视骏、瑞普图视频等。而硬件编码器的技术门槛相对较高,产品差异化较大,国内进行HEVC/H.265硬件编码器IP商用开发的公司有ZoboVision、jointwave等。中博视清zobovision提供优质HEVC/H.265编码器FPGA/SOC IP硬核ZoBo E50。

  • 相关阅读:
    python基础--文件操作实现全文或单行替换
    python基础7--集合
    python读写json文件
    python基础6--目录结构
    python基础5--模块
    Ubuntu的一些常用快捷键
    ubuntu dpkg 命令详解
    linux(Ubuntu)安装QQ2013
    fcitx-sogoupinyin下载地址和安装
    Ubuntu下装QQ2014
  • 原文地址:https://www.cnblogs.com/stnlcd/p/7357618.html
Copyright © 2011-2022 走看看