首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

H.264解码器中CABAC硬件加速器的实现

H.264解码器中CABAC硬件加速器的实现

摘  要:在H.264解码器中,为了能够完成高清码流的实时解码任务,本文提出了一种CABAC硬件加速器的设计方案。通过采用高效率的状态机和流水线结构,该方案可在每1~3个时钟周期内完成1bit数据的解码。本设计在中芯国际0.18mm CMOS工艺标准单元库的基础上进行综合,硬件加速器面积为0.38mm2,工作时钟频率可达166MHz。
关键词:CABAC;H.264;硬件加速器

引言
    H.264是由国际电信联盟(ITU)和国际标准化组织(ISO)共同制定的新一代视频编码标准,该标准采用一系列先进的编码技术,在编码效率、网络适应性等诸多方面都超越了以往的视频标准。H.264有两种熵编码方案:一种是从可变长编码方案发展而来的基于上下文的自适应可变长编码CAVLC;另一种是从算术编码发展而来的基于上下文的自适应二进制算术编码CABAC。与CAVLC相比,CABAC可以节省约7%的码流,但增加了10%的计算时间。在解高清码流时,用软件来做CABAC这样复杂的熵解码,无法完成实时解码的任务,因此,设计硬件加速器是非常必要的。

CABAC解码算法
    在H.264解码器的输入码流中,数据的基本单位是句法元素(Syntax Element),码流是由一个个句法元素依次衔接而成的。每个句法元素由若干比特组成,表示某个特定的物理意义。在H.264定义的码流中,句法元素被组织成有层次的结构,分别描述序列(Sequence)、图像(Picture)、片(Slice)、宏块(Macroblock)、子宏块(Subblock)五个层次的信息,CABAC主要负责对片层以下的句法元素进行解码。
CABAC解码的总体过程可以分为三个步骤:初始化、二进制算术解码归一化、反二进制。

初始化
     该过程在每一个片开始时执行,包括上下文模型变量(Context Variable)的初始化和解码引擎(Decoding Engine)的初始化。

二进制算术解码和归一化
    二进制算术解码是CABAC解码的核心部分,该过程实现1bit数据的解码,对每个句法元素进行解码都需要调用该过程。H.264中二进制算术解码有三种模式:规则解码(Decode Decision)、旁路解码(Decode Bypass)和结束解码(Decode Terminate)。对不同句法元素进行解码时,分别调用这三种模式的一种或多种。

反二进制化
    CABAC定义了四种二进制化方法:一元码(Unary)、截断一元码(Truncated Unary)、K阶指数哥伦布码(kth order Exp-Golomb)和定长码(Fixed-Length)。一个句法元素可以对应一种或两种上述二进制化方法,但特殊的是,句法元素mb_type和sub_mb_type的反二进制化独立于上述四种方法,它们通过查表来实现。
返回列表