用于视频编码器的帧内预测电路及其实现方法

文档序号:7898624阅读:754来源:国知局
专利名称:用于视频编码器的帧内预测电路及其实现方法
技术领域
本发明涉及数字视频处理技术,具体而言,尤其涉及一种用于视频编码器的帧内 预测电路及其实现方法。
背景技术
集成电路设计方法学是用来指导集成电路设计的方法学。目前的集成电路设计, 尤其是大规模集成电路设计,其常见的设计流程是系统工程师根据功能需求提出系统功 能框架,软件工程师利用计算机高级程序语言(例如JaVa、C、C++、Matlab等)对系统功能 框架进行描述,从而得到集成电路的高级程序语言的算法描述;而后由集成电路设计工程 师利用硬件描述语言(例如Veril0g、VHDL等),将算法描述综合成网表文件,之后使用专 门的硬件综合工具实现布局布线,得到集成电路版图。在集成电路产业需求中,设计速度已成为集成电路设计方法学的重要考虑因素。 当集成电路制造商或集成系统供应商将商业运作的基本问题(如产品数量、设计/测试费 用、不可再用的工程开支(Non-Recurring Engineering,NRE)、用户IP的整合/复用、可靠 性和可维护性、生产过程复杂性等)综合考虑在内时,加速产品推出时间、提高产品性能、 降低产品制造风险便成为选择设计技术时的重要考虑因素。尤其,目前电子产品的生命周 期不足一年,如何尽可能块地设计出新的电子产品则成为了制造商要解决的问题。因此,电 子产品集成电路的设计速度则成为了集成电路设计中的主要考虑因素。随着集成电路制造工艺进入45nm以下阶段,集成电路设计发展落后于集成 电路工艺进步的剪刀差继续增大。数据流算法,尤其是数字媒体类的专用集成电路 ASIC (Application Specific IntegratedCircuit)设计,例如,用于视频编码器的帧内预 测电路的集成电路设计,面临设计周期长、灵活性差、扩展性差等问题。帧内预测是保证数字视频高清传输的重要预测方式。在H. 264视频编码标准中, 帧内预测主要分为3种预测模式,即亮度16X 16帧内预测模式,亮度4X4帧内预测模式, 以及色度8X8帧内预测模式。其中,亮度16X16帧内预测模式和色度8X8帧内预测模式 各有4种预测方法,而亮度4X4帧内预测模式则有9种预测方法。帧内预测的目的就是从 各种预测模式中选择一种最好的预测方式,计算图像帧的预测值和残差,传递给DCT,量化, VLC,去方块滤波等进行下一步的编码与处理。由于帧内预测是整个编码环节的第一步,同 时自身预测模式较多,设计复杂度较高,所以提高帧内预测模式的准确度,同时缩减帧内预 测的时间代价,成为实现高清视频编码器的瓶颈。现有技术中,对帧内预测的优化方式都是通过减少预测模式来对帧内预测进行优 化,虽然在一定程度上减少了帧内预测的复杂度,但是同时也或多或少地牺牲了帧内预测 的性能,对整个数字高清视频编码会造成不同程度的损伤。可见,从提升帧内预测电路的设 计速度和保证帧内预测的性能两方面考虑,现有的IC设计方法学需要改进和提高。

发明内容
本发明要解决的技术问题是针对现有技术的不足,提供一种用于视频编码器的帧 内预测电路及其实现方法,在保证不损伤数字高清视频编码的前提下,能够加快帧内预测 电路的集成电路设计速度。为解决上述技术问题,本发明采用了以下技术方案一种用于视频编码器的帧内预测电路的实现方法,包括将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算 子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬 件集成电路。在本发明的一种实施例中,将高级程序语言算法描述的视频编码器的帧内预测电 路的各个函数映射成由算子单元构成的硬件逻辑描述包括如下步骤程序分析步骤读取帧内预测电路的各个函数的高级程序语言算法程序,根据该高 级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;数据控制流图生成步骤将识别出的执行对象和参数对象映射成描述帧内预测电 路算法的数据控制流图中的相应节点;算子时空图生成步骤根据数据控制流图中的各个节点的功能处理,从算子单元 库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算 子时空图;时序约束步骤根据用户规格需求和目标集成电路工艺的要求确定出总时序约 束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;聚类压缩步骤根据时间标注对算子时空图进行空间上的聚类压缩,并使帧内预 测电路总体算法的执行时间最接近于总时序约束;下层硬件映射步骤将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻 辑描述。在本发明的一种实施例中,所述函数包括用于控制参考帧传输速率的码率控制函 数,用于对帧内预测进行分析的初始化函数,以及用于对参考帧进行帧内预测的帧内预测 函数。在本发明的一种实施例中,所述程序分析步骤包括从所述帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对 象,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和 中间数据中的至少一种;分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行 中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运 行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。在本发明的一种实施例中,在所述数据控制流图生成步骤中,将所述运算指令映 射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控 制流,将所述参数对象映射为数据流上的存储节点。在本发明的一种实施例中,所述算子时空图生成步骤包括将数据控制流图根据其数据流相关性展开;
根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功 能的至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类 算子和/或路径类算子,将所述存储节点映射为存储类算子。在本发明的一种实施例中,所述时序约束步骤包括根据数据控制流图中数据流 结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总 时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该 算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据流,则将各 算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径 所映射的算子单元所对应的时序总和的比例来分配。在本发明的一种实施例中,所述聚类压缩步骤包括聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相 同的存储类算子;压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压 缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算 算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。同时,本发明还提供了一种用于视频编码器的帧内预测电路,包括用于控制图像 传输速率的码率控制模块,用于帧内预测分析的函数分析模块,以及用于对图像进行帧内 预测的帧内预测模块;所述各模块由算子单元组成。在本发明的一种实施例中,所述帧内预测模块包括亮度16X16划分下的帧内预测 子模块,色度8X8划分下的帧内预测子模块以及亮度4X4划分下的帧内预测子模块。在本发明的一种实施例中,所述亮度16X16划分下的帧内预测子模块包括用于检 测预测模式是否可用的16X16模式检测单元,用于对所述参考帧进行帧内预测的16X16帧 内预测单元,以及用于计算帧内预测代价的16X16代价计算单元;所述色度8X8划分下的帧 内预测子模块,包括用于检测预测模式是否可用的8X8模式检测单元,用于对所述参考帧 进行帧内预测的8X8帧内预测单元,以及用于计算帧内预测代价的8X8代价计算单元;对于 亮度4X4划分下的帧内预测子模块,包括用于检测预测模式是否可用的4X4模式检测单 元,用于对所述参考帧进行帧内预测的4 X 4帧内预测单元,用于计算帧内预测代价的4 X 4 代价计算单元,以及用于量化所述参考帧的量化环路编码单元。在本发明的一种实施例中,所述16X16帧内预测单元包括16X16DC预测模式子单 元,16X16水平预测模式子单元,16X16垂直预测模式子单元,16X16平面预测垂直子单元; 所述8X8帧内预测单元,包括8X8DC预测模式子单元,8X8水平预测模式子单元,8X8垂直预 测模式子单元,8X8平面预测垂直子单元;所述4X4帧内预测单元包括4X4垂直预测模式 子单元,4X4水平预测模式子单元,4X4DC预测模式子单元,4X4下左对角线预测模式子 单元,4X4右对角线预测模式子单元,4X4右垂直预测模式子单元,4X4下水平预测模式 子单元,4X4左垂直预测模式子单元以及4X4上水平预测模式子单元。由于采用了以上技术方案,使本发明具备的有益效果在于通过将高级程序语言 算法描述的视频编码器的帧内预测电路的各个功能块映射成由算子单元构成的硬件逻辑 描述;以及由算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路的设计,使得系统工程师在保证不损伤数字高清视频编码的前提下,根据足以支撑描述高级语言算法 的完备算子单元库,通过设计表示硬件逻辑的算子单元,能够以较快的速度设计出帧内预 测电路的硬件集成电路,推动了高清视频编码技术的发展。并且,该种帧内预测电路还可以 与视频编码器内的其它专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的 ASIC的设计速度。同时,该种帧内预测电路可以适用于不同的视频编码器结构,具有很好的 通用性。


图1为现有集成电路的设计流程图;图2示出了本发明实施例提供的几类算子结构;其中,图2. 1示出的是运算类算 子,图2.2示出的是存储类算子,图2. 3示出的是路径类算子,图2. 4示出的是控制类算子;图3为本发明一种实施例的选择最佳预测模式的函数关系调用示意图;图4为本发明另一种实施例的16X16划分下的帧内预测函数数据控制流图;图5为本发明一种实施例的采用水平预测方法的算子时空图;图6为本发明一种实施例的采用垂直预测方法的算子时空图;图7为本发明一种实施例的计算平面预测输入量的算子时空图;图8为本发明一种实施例的采用平面预测方法的算子时空图;图9为本发明一种实施例的采用平面预测优化方法优化前的算子时空图;图10为本发明一种实施例的采用平面预测优化方法优化后的算子时空图;图11为本发明一种实施例的16X16划分下的采用平面预测方法的算子单元示意 图;图12为本发明一种实施例的算子固化前的示意图;图13为本发明一种实施例的进行算子固化后的示意图。
具体实施例方式下面通过具体实施方式
结合附图对本发明作进一步详细说明。一、视频编码器概述视频编码技术是数字媒体存储与传输的关键技术,它广泛地应用在数字电视、视 频通信、网络流媒体等领域。本发明涉及一种基于算子思想的帧内预测电路及其实现方法, 适用于信号处理领域中各种图像/视频/音频DCT变换数据的帧内预测。目前在视频编码领域,由国际电联(ITU-T)和国际标准化组织(ISO)联合组建的 联合视频组(JVT)共同制定的新数字视频编码标准-H. 264已得到广泛应用。H. 264算法既 是国际电联(ITU-T)的H.沈4,也是国际标准化组织(ISO)和国际电工委(IEC)的MPEG-4 标准的第10部分的内容,其采用分层次的算法结构,在概念上可以分为两层,分别是视频 编码层和网络提取层。视频编码层(VideoCoding Layer,简称VCL)负责高效的视频内容表 示,网络提取层(Network Abstraction Layer,简称NAL)负责以网络所要求的恰当的方式 对数据进行打包和传送。通过视频编码层和网络提取层这样的结构有助于信息的封装和对 信息进行更好的优先级控制。H. 264编码过程的主要子算法有帧间预测、帧内预测、变换和量化、去块效应滤波和熵编码。下面对各子算法做一简述。1、帧间预测帧间预测是利用视频图像帧间的相关性,即时间相关性,来达到图像压缩的目的。 在图像传输技术中,活动图像是关注的重点。活动图像是由时间上以帧周期为间隔的连续 图像帧组成的时间图像序列,它在时间上比在空间上具有更大的相关性。大多数图像相邻 帧间细节变化很小,即图像帧间具有很强的相关性,利用帧所具有的这种相关性特点进行 帧间编码,可获得比帧内编码高得多的压缩比。H. 264帧间预测是利用已编码视频帧/场和 基于块的运动补偿的预测模式。2、帧内预测帧内预测是H. 264采用的一种新技术,指利用当前块的上方和左方的相邻像素作 为参考像素,对当前块的像素进行预测。帧内预测编码可以缩减图像的空间冗余,减小码率。3、变换和量化在图像编码中,变换编码和量化从原理上讲是两个独立的过程。但在H. 264中,将 两个过程的乘法合二为一,并进一步采用整数运算,减少编解码的运算量。量化过程是在不 降低视频效果的前提下减小图像编码长度,减少视频恢复中不必要的信息。其目的是去除 变换后对图像的视觉质量不重要的数据分量且保持视觉上重要的数据分量。其性质是被去 除后的分量不能恢复,是有损过程。4、去块滤波基于块的视频编码系统在重建图像时不可避免地在某些块边界处会出现一些较 为明显的块效应,特别是在低码率的情况下。出现块效应的原因在于块边界像素的运动补 偿精度一般都低于块内像素,而且块变换也导致了块边界的不连续性。去块滤波的主要过 程包括确定滤波强度、判断虚假边界、滤波计算。5、熵编码在视频编码中,熵编码把一系列用来表示视频序列的元素符号转变为一个用来传 输或是存储的压缩码流。输入的符号可能包括量化的变换系统、运动向量、标记、头以及附 加信息。本发明涉及H. 264视频编码器的帧内预测电路,为此,主要对H. 264的帧内预测电 路进行说明。本发明以X264为基础,即以X264代码形式的视频编码器的帧内预测电路的高级 程序语言算法描述为出发点,以实现帧内预测电路的集成电路设计。二、算子设计思想概述回顾集成电路设计方法学的发展历程,可以看到当集成电路制造工艺进入Ium 的时代,出现了以门阵列为基本单元的设计方法;当集成电路制造工艺进入0. 5um的时代, 出现了以标准单元为基本单元的设计方法;当集成电路制造工艺进入0. ISum的时代,出现 了以IP核为基本单元的设计方法。由此可以看出一方面集成电路的设计方法学随着集成 电路制造工艺的发展而发展,另一方面集成电路设计方法学中使用的基本单元(门、标准 单元、IP核)的单元粒度不断增大。每次新的基本单元的出现,都标志着集成电路设计方 法革命性的进步。
如图1所示,现有技术中,集成电路的设计通常包括两部分第一部分是从基于高 级语言算法描述到RTL级的描述;第二部分是从RTL级描述到标准单元ASIC结构或门陈列 实现(或其它S-ASIC结构)或FPGA结构的实现过程。现有技术中,已有多款比较成熟的 工具支持上述第二部分的实现,实现过程基本满足高效、快捷等要求;然而上述第一部分的 实现主要仍是由技术人员根据自身对高级语言的理解,人为地将其转换为RTL级的描述。 目前的集成电路设计一般基于标准单元粒度,由硬件描述语言对集成电路硬件逻辑进行描 述,然而硬件描述语言并不适合直接描述高级程序语言的程序逻辑和执行流程,造成在目 前的集成电路设计中,由高级语言向下层硬件映射的速度所需时间较长,成为制约集成电 路设计速度的瓶颈所在。随着集成电路制造工进入45nm以后,集成电路的设计速度滞后于 集成电路制造工艺的发展速度。因此,对于集成电路设计领域来说,提高设计速度是当前最 为迫切的问题之一。因此,可以合理预见的是,随着近十年来集成电路制造工艺的飞速进步,尤其是集 成电路制造工艺进入纳米级后,更大粒度的基本单元将出现并开启集成电路设计的新局 面,以适应集成电路制造工艺的飞速发展。鉴于此,本发明中提出了一种基于算子集成电路设计方,算子是一种粒度大于标 准单元的用于集成电路组成部件的基本单元,基于算子的集成电路设计方法将加速集成电 路的设计速度,以适应集成电路制造工艺的进步。算子设计方法希望从数学上能够支持算 法的描述,为实现算法到算子语言、算子结构的自动化翻译提供支撑。算子的特点如下1.粒度更大每个算子都具有一定功能,它是一种函数运算的符号表示。整个算子体系能够支 持算法描述中的各种功能实现,设计人员可以基于算子对算法进行描述和验证;2.支持算法的实现种类完备但是数量有限的算子能够支持上层语言描述中对运算、存储、控制和数 据路径的描述,并且可以基于算子描述进行优化和验证;3.能够加速设计和验证设计人员利用算子完成算法的功能描述后,对应的硬件设计也同时完成。因为所 有算子均是预先全定制的且已被验证正确的单元,因此将缩短设计和验证的时间,设计人 员只需要保证基于算子的描述和映射过程的正确即可,从而将大大加速设计和验证过程。本发明提出的算子,或者说算子单元,可以表示集成电路的硬件逻辑,基于算子的 不同功能,可将算子分为运算类算子、存储类算子、路径类算子、控制类算子、时钟类算子等 几类,这些算子构成一套完备的算子体系,能支撑所有算法的实现。经过设计,这些基本算 子在面积、功耗、性能等参数上是最优化,它们构成了算子单元库。并且算子单元还可以组 成算子功能块,算子功能块间采用共享MEM链接方式进行数据通信,也可以采用寄存器传 递进行控制信息传递。下面,分别对组成算子单元库的5类基本算子的功能做详细的说明。1、运算类算子运算类算子(AU)是用于实现逻辑运算、算术运算或逻辑与算术混合运算的基本 单元,支持算术逻辑、移位等运算功能的实现,实现这些基本运算的算子称为基本运算算 子。并且,针对不同应用可以在基本运算算子的基础上进行扩展而予以支持,比如媒体处理中相减、取绝对值、求平均值、固定系数滤波运算等复杂但很常用的运算,实现这些扩展运 算的运算算子称为扩展运算算子,它们由基本运算算子搭建而成。图2. 1为一种运算类算子-ADDS算子的结构示意图,它包括用于实现加减操作的 ADD单元和用于实现移位操作的<</>>单元。运算类算子具有可重构性,可以为一个运算 类算子配置控制位以及多种运算功能,控制位用于择一选择一种运算,也就是说,运算类算 子包括算术逻辑运算单元和运算配置寄存器,运算配置寄存器用于接收和存储运算配置指 令,不同的运算配置指令对应不同的算术逻辑操作,根据不同应用的需求,通过配置控制位 (运算配置寄存器的运算配置指令),可以使运算算子实现不同的功能。例如上例中的ADDS 算子,可以通过控制位X的参数值实现多种不同功能,可重构算子由于丰富的应用功能可 以用在不同的场景中,减少了算子单元库中储存的算子数。并且可重构算子在其执行过程 中还可以通过改变控制位的方式实现动态的重构。而如果算子的运算功能被优化固定,则 可以将控制位固定(即固化定制)。2、存储类算子图2. 2为存储类算子(MU)的基本结构示意图,存储类算子包括存储配置寄存器和 存储单元,存储单元包括地址产生单元、数据存储器、数据产生单元和数据输出控制单元。 存储配置寄存器可以通过数据输出控制单元配置存储算子(MU)的存储体(各种存储介质 寄存器、RAM等MEM)的写入和/或读出方式,还可以配置存储体对应的地址产生单元的工 作方式。根据地址产生单元生成的地址直接将输入数据存储到预定位置,并将需要的数据 从存放位置输出。算法中的不同阶段对数据处理的顺序和排列是不一样的,从而使得在每个阶段中 数据的存储格式和方式不同,存储算子还可以针对这类需求实现数据不同存储格式和方式 的转换。存储类算子可以支持不同应用中基本且常用的存储格式和转换方式,比如串并转 换、并串转换、队列结构、堆栈结构等。3、路径类算子图2. 3为路径类算子(LU)的通用结构示意图。路径类算子包括路由配置寄存器 和组成路由选择单元的交换开关和数据寄存器(REG),其中,路由配置寄存器受到控制类算 子CU(见下文)的控制,在控制类算子的控制作用下控制交换开关按照期望的方式实现不 同运算类算子之间的连接。数据寄存器用于暂存运算类算子和存储类算子的输入输出数 据。即,路径类算子的作用是连接存储类算子与运算类算子,形成数据流结构。其实现形式 主要有三种多选器、交叉开关和总线。4、控制类算子图2. 4为控制类算子(⑶)的通用结构示意图。控制类算子主要是将配置信息传 送到相应的配置寄存器,配置运算类算子、存储类算子和路径类算子实现预定的功能。艮口, 控制类算子的作用是正常控制数据流的流动。其实现形式有三种计数器、状态机和微指令 字。控制输出内容包括运算类算子动态重构信息、存储类算子AGU的配置信息、路径类算 子的配置信息,实现对其他算子的控制。其中微指令字结构包含译码器、程序计数器、指令 存储器和流水线控制模块等。控制类算子通过执行简单的配置指令向各功能单元发送配置 fn息ο5、时钟类算子
时钟类算子是驱动和定时部件,用于产生控制和处理算子的时钟信号,时钟信号 包含控制时钟起停和控制时钟频率的信号。以上五类算子是实现以下实施方式的基础,可以理解的是,上述对根据功能将用 于集成电路设计中的算子分为五大类并非唯一的划分方式,还可以根据实际情况有针对性 进行更宽范围或更细范围的划分。集成电路(IC)的算子设计过程可以概括为将C、Matlab等高级语言的算法描述 转化为算子描述并在算子结构上进行优化设计的过程。由于算子已经预先设计并验证,因 此算法的算子描述可以快速或者自动完成设计验证过程。对于特定领域,比如通信或媒体, 可以设计一些更好支撑算法实现的扩展算子或算子IP,从而更大程度地加速和优化设计过程。对于本发明的基于算子单元结构的用于视频编码器的帧内预测电路的实现方法 进行详细的说明。本发明提出的用于视频编码器的帧内预测电路的实现方法,其主要包括将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算 子单元构成的硬件逻辑描述;并将由算子单元构成的硬件逻辑描述生成帧内预测电路的硬 件集成电路。由于算子单元构成的硬件逻辑描述对应于现有技术中的RTL级的描述,因此,系 统工程师利用现有转化工具,就可以将由算子单元构成的硬件逻辑描述生成帧内预测电路 的硬件集成电路。如此,创造了一种从计算机语言到集成电路下层硬件电路的映射工具,标 准化地实现了集成电路从C或MATLAB等高级语言生成下层硬件的过程,实现起来方便快 捷。系统工程师可以利用该种映射工具,来设计帧内预测电路,在充分考虑各种帧内预测模 式以及保证不损伤高清视频编码的前提下,能够加快设计帧内预测电路的下层硬件集成电 路的速度。将该种帧内预测电路应用在视频编码器内,在一定程度上推动了高清视频编码 技术的发展。在实施例中,本发明提出的用于视频编码器的帧内预测电路的实现方法,在将高 级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的 硬件逻辑描述过程中,包括以下步骤程序分析步骤、数据控制流图生成步骤,算子时空图 生成步骤,时序约束步骤,聚类压缩步骤,下层硬件映射步骤,下面分别对每一个步骤进行 详细的分析说明。1)程序分析步骤读取帧内预测电路的各个函数的高级程序语言算法程序,根据 该高级程序语言规则从高级程序语言算法程序中识别出被映射的执行对象和参数对象,具 体包括首先从帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对 象,执行对象包括运算指令和/或控制指令,参数对象包括输入数据、输出数据和中间数据 中的至少一种。然后分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判 断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以 及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。以此类推, 直到找到底层函数运行中涉及到的参数对象、运算指令等。其中,运算指令主要用于描述程 序中执行的数学运算,而控制指令则用于保证运算指令的正常运行,例如,控制指令控制着运算指令是否需要进行循环运算等。该步骤的主要作用在于函数分解,是将C、JaVa、Matlab 等高级语言描述形式的函数划分为若干个子函数的过程。函数分解主要分析函数调用关 系、函数结构体和变量、子函数的基本运算等信息,以便以上述的各类算子实现对函数的映 射。在本发明的实施例中,描述帧内预测电路的各个函数的高级程序语言程序具体为 C语言程序中X^4_maCr0bl0Ck_analySe_Iframe函数。需要说明的一点是,描述帧内预测 电路的高级语言程序并不局限于X264_macroblock_analyse_Iframe函数。图3所示的是X^4_macroblock_analyse_Iframe函数算法描述中的函数调用关 系。其中,X^4_maCr0bl0Ck_analySe_Iframe用于选择最佳帧内预测模式。根据帧内预测 实现算法可知,若要对当前帧进行预测,则需要获得相邻块的参考帧,再根据预测模式采用 不同的预测方法对当前帧进行预测。因此,帧内预测电路包括三大函数,即用于控制图像传 输速率的码率控制函数,用于对帧内预测进行分析的初始化函数,以及用于计算当前块的 帧内预测值的帧内预测函数。帧内预测函数是整个帧内预测电路的核心函数,根据参考帧在不同的预测模式下 采用不同的预测方法,用于计算当前帧的帧内预测值。在C程序语言中,一个主函数通常会调用多个函数,而函数又会调用子函数。在 此,将X264_maCr0bl0Ck_analySe_Iframe函数定义为主函数,将该主函数直接调用的函数 称为函数,将该函数调用的函数称为子函数。当然,子函数还可以调用其它的子函数。具 体地,在实施例中,根据该C语言程序,识别出该主函数中需要被映射的执行对象和参数对 象,包括以下步骤对X264_macroblock_analyse_Ifram函数进行分析,查找出函数以及 函数运行中涉及的参数对象并判断函数运行中是否调用子函数。具体到实施例中的主函 数调用的函数来说,函数包括用于控制参考帧传输速率的码率控制函数,对应于图3中的 X264_ratecontrol_qp,用于对帧内预测进行分析的初始化函数,对应于图3中的x264_mb_ analyse_init_IFrame,以及用于对参考帧进行帧内预测的帧内预测函数,对应于图3中的 x264_mb_analyse_intra ;并判断函数的是否有调用子函数;在此,以16X16划分下的预测 模式为例,帧内预测函数又调用了 16X16划分下的帧内预测函数predict_16X16_p,16X16 划分下的可用性检测函数predict_16xl6_mode_available,以及代价函数pixf. satd。如表1所示,是分析出来的predict_16X16_p函数运行中涉及到的输入输出数据; 如表2所示,是在程序分析步骤中分析出来的prediCt_16X16_p函数运行中涉及到的中间 数据和常数。表lpredict_16xl6_p函数的输入、输出数据信号名称数据类型方向说明srcuint8_t*IN/OUT//PIXEL_CURRENT&PIXEL_PREDICTi—strideintINIl 一行宽度表2predict_16xl6_p函数的中间数据和常数
权利要求
1.一种用于视频编码器的帧内预测电路的实现方法,其特征在于,包括将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单 元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集 成电路。
2.如权利要求1所述的方法,其特征在于,将高级程序语言算法描述的视频编码器的 帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述包括如下步骤程序分析步骤读取帧内预测电路的各个函数的高级程序语言算法程序,根据该高级 程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;数据控制流图生成步骤将识别出的执行对象和参数对象映射成描述帧内预测电路算 法的数据控制流图中的相应节点;算子时空图生成步骤根据数据控制流图中的各个节点的功能处理,从算子单元库中 取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时 空图;时序约束步骤根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对 算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;聚类压缩步骤根据时间标注对算子时空图进行空间上的聚类压缩,并使帧内预测电 路总体算法的执行时间最接近于总时序约束;下层硬件映射步骤将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
3.如权利要求2所述的方法,其特征在于,所述函数包括用于控制参考帧传输速率的 码率控制函数,用于对帧内预测进行分析的初始化函数,以及用于对参考帧进行帧内预测 的帧内预测函数。
4.如权利要求3所述的方法,其特征在于,所述程序分析步骤包括从所述帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对象,所 述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间 数据中的至少一种;分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是 否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中 涉及的参数对象并判断子函数运行中是否又调用其它子函数。
5.如权利要求4所述的方法,其特征在于,在所述数据控制流图生成步骤中,将所述运 算指令映射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制 信号的控制流,将所述参数对象映射为数据流上的存储节点。
6.如权利要求5所述的方法,其特征在于,所述算子时空图生成步骤包括将数据控制流图根据其数据流相关性展开;根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功能的 至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类算子 和/或路径类算子,将所述存储节点映射为存储类算子。
7.如权利要求6所述的方法,其特征在于,所述时序约束步骤包括根据数据控制流 图中数据流结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约 束平分到该算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据 流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长 运算路径所映射的算子单元所对应的时序总和的比例来分配。
8.如权利要求7所述的方法,其特征在于,所述聚类压缩步骤包括聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的 存储类算子;压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和 /或将存储属性相同的存储类算子在空间上进行合并压缩;算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子 生成相应配置指令,实现运算类算子和/或存储类算子的复用。
9.一种用于视频编码器的帧内预测电路,其特征在于,包括用于控制参考帧传输速率 的码率控制模块,用于帧内预测分析的函数分析模块,以及用于对参考帧进行帧内预测的 帧内预测模块;所述各模块由算子单元组成。
10.如权利要求7所述的方法,其特征在于,所述帧内预测模块包括亮度16X16划分下 的帧内预测子模块,色度8X8划分下的帧内预测子模块以及亮度4X4划分下的帧内预测子 模块。
11.如权利要求10所述的方法,其特征在于,所述亮度16X16划分下的帧内预测子模块 包括用于检测预测模式是否可用的16X16模式检测单元,用于对所述参考帧进行帧内预测 的16X16帧内预测单元,以及用于计算帧内预测代价的16X16代价计算单元;所述色度8X8 划分下的帧内预测子模块,包括用于检测预测模式是否可用的8X8模式检测单元,用于对 所述参考帧进行帧内预测的8X8帧内预测单元,以及用于计算帧内预测代价的8X8代价计 算单元;对于亮度4X4划分下的帧内预测子模块,包括用于检测预测模式是否可用的4X4 模式检测单元,用于对所述参考帧进行帧内预测的4X4帧内预测单元,用于计算帧内预测 代价的4X4代价计算单元,以及用于量化所述参考帧的量化环路编码单元。
12.如权利要求11所述的方法,其特征在于,所述16X16帧内预测单元包括16X16DC预 测模式子单元,16X16水平预测模式子单元,16X16垂直预测模式子单元,16X16平面预测垂 直子单元;所述8X8帧内预测单元,包括8X8DC预测模式子单元,8X8水平预测模式子单元, 8X8垂直预测模式子单元,8X8平面预测垂直子单元;所述4X4帧内预测单元包括4X4垂 直预测模式子单元,4X4水平预测模式子单元,4X 4DC预测模式子单元,4X 4下左对角线预 测模式子单元,4X4右对角线预测模式子单元,4X4右垂直预测模式子单元,4X4下水平 预测模式子单元,4 X 4左垂直预测模式子单元以及4 X 4上水平预测模式子单元。
全文摘要
本发明公开了一种用于视频编码器的帧内预测电路的实现方法,所述方法包括将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。应用本发明,使得系统工程师在保证不损伤数字高清视频编码的前提下,根据足以支撑描述高级语言算法的完备算子单元库,通过设计表示硬件逻辑的算子单元,能够以较快的速度设计出帧内预测电路的硬件集成电路。并且,该种帧内预测电路还可以与视频编码器内的其它专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。
文档编号H04N7/26GK102055980SQ20101062000
公开日2011年5月11日 申请日期2010年12月31日 优先权日2010年12月31日
发明者张兴, 彭建宏, 王新安, 胡子一 申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1